X-Git-Url: http://www.project-moonshot.org/gitweb/?p=trust_router.git;a=blobdiff_plain;f=mon%2Fmon_resp.c;h=3049eaa58eced977c0cdf3ab87fde6b230412951;hp=ee590691c19a6df80716308edc576354e5816ba4;hb=7458d6a285fa526fd8cec03e1bbb497650a0e405;hpb=6491f2a660c3183b210b968a939eaa18f1b44a09 diff --git a/mon/mon_resp.c b/mon/mon_resp.c index ee59069..3049eaa 100644 --- a/mon/mon_resp.c +++ b/mon/mon_resp.c @@ -38,7 +38,7 @@ #include -// Monitoring request message common code +/* Monitoring response message common code */ /** * Destructor used by talloc to ensure proper cleanup @@ -95,6 +95,45 @@ MON_RESP *mon_resp_new(TALLOC_CTX *mem_ctx, MON_RESP_CODE code, const char *msg, } /** + * Set or replace the response message + * + * Does not change the message if it fails + * + * @param resp + * @param new_msg + * @return 1 on success, 0 on error + */ +int mon_resp_set_message(MON_RESP *resp, const char *new_msg) +{ + TR_NAME *n = tr_new_name(new_msg); + + if (n == NULL) + return 0; /* failed */ + + if (resp->message) + tr_free_name(resp->message); + resp->message = n; + return 1; /* succeeded */ +} + +/** + * Set or replace the payload + * + * Manages JSON reference counts + * + * @param resp + * @param new_payload + */ +void mon_resp_set_payload(MON_RESP *resp, json_t *new_payload) +{ + if (resp->payload) + json_decref(resp->payload); + resp->payload = new_payload; + if (resp->payload) + json_incref(new_payload); +} + +/** * Free a monitoring response * * @param resp request to free, must not be null