X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=common%2Ftr_comm_encoders.c;h=9f5300861f5279f8973da8e99a26ca68dbfd27b0;hb=81a61f8c6064bf52ff2a40a3d28e6ee5b2e478d4;hp=c33c604d893252848730597f4bf6efbfb016ff63;hpb=bad2cb03f82006fddc8e26fdca07e49613fb3bfc;p=trust_router.git diff --git a/common/tr_comm_encoders.c b/common/tr_comm_encoders.c index c33c604..9f53008 100644 --- a/common/tr_comm_encoders.c +++ b/common/tr_comm_encoders.c @@ -40,19 +40,20 @@ static json_t *expiry_to_json_string(TR_COMM_MEMB *memb) { - struct timespec ts_zero = {0, 0}; + struct timespec ts = {0}; /* initialization to zero is important */ char *s = NULL; json_t *jstr = NULL; - if (tr_cmp_timespec(tr_comm_memb_get_expiry(memb), &ts_zero) == 0) { - s = strdup(""); - } else { - s = timespec_to_str(tr_comm_memb_get_expiry(memb)); - } + if (tr_cmp_timespec(tr_comm_memb_get_expiry(memb), &ts) > 0) { + if (tr_comm_memb_get_expiry_realtime(memb, &ts) == NULL) + s = strdup("error"); + else + s = timespec_to_str(&ts); - if (s) { - jstr = json_string(s); - free(s); + if (s) { + jstr = json_string(s); + free(s); + } } return jstr; @@ -143,10 +144,10 @@ static json_t *tr_comm_memb_sources_to_json(TR_COMM_MEMB *first_memb) goto cleanup; /* Iterate over all the memberships for this realm/comm pair that come from different origins */ - memb = tr_comm_memb_iter_first(iter, first_memb); - while (memb) { + for (memb = tr_comm_memb_iter_first(iter, first_memb); + memb != NULL; + memb = tr_comm_memb_iter_next(iter)) { ARRAY_APPEND_OR_FAIL(jarray, tr_comm_memb_to_json(memb)); - memb = tr_comm_memb_iter_next(iter); } /* success */ @@ -171,10 +172,12 @@ static json_t *tr_comm_realms_to_json(TR_COMM_TABLE *ctable, TR_NAME *comm_name, TR_COMM_MEMB *memb = NULL; iter = tr_comm_iter_new(NULL); - realm = tr_realm_iter_first(iter, ctable, comm_name); + realm = NULL; /* Do not display the full realm json here, only the name and info relevant to the community listing */ - while(realm) { + for (realm = tr_realm_iter_first(iter, ctable, comm_name); + realm != NULL; + realm = tr_realm_iter_next(iter)) { if (realm->role == role) { realm_json = json_object(); OBJECT_SET_OR_FAIL(realm_json, "realm", @@ -192,7 +195,6 @@ static json_t *tr_comm_realms_to_json(TR_COMM_TABLE *ctable, TR_NAME *comm_name, json_array_append_new(jarray, realm_json); realm_json = NULL; /* so we don't free this twice during cleanup */ } - realm = tr_realm_iter_next(iter); } /* Success - increment the reference count so return value survives */ @@ -275,15 +277,15 @@ json_t *tr_comm_table_to_json(TR_COMM_TABLE *ctable) goto cleanup; /* Iterate over communities in the table */ - comm = tr_comm_table_iter_first(iter, ctable); - while (comm) { + for (comm = tr_comm_table_iter_first(iter, ctable); + comm != NULL; + comm = tr_comm_table_iter_next(iter)) { comm_json = tr_comm_to_json(ctable, comm); if (comm_json == NULL) goto cleanup; json_array_append_new(ctable_json, comm_json); - comm = tr_comm_table_iter_next(iter); } /* succeeded - set the return value and increment the reference count */