diff --git a/modules/janssonrpc-c/janssonrpc_io.c b/modules/janssonrpc-c/janssonrpc_io.c index 0aa2836fcc0..c40f89ce220 100644 --- a/modules/janssonrpc-c/janssonrpc_io.c +++ b/modules/janssonrpc-c/janssonrpc_io.c @@ -428,15 +428,18 @@ int jsonrpc_send(str conn, jsonrpc_request_t* req, bool notify_only) if(ns) pkg_free(ns); if(json) free(json); - if (sent && notify_only == false) { - - const struct timeval tv = ms_to_tv(req->timeout); + if (sent) { + if (notify_only == true) { // free the request if using janssonrpc_notification function + free_request(req); + } else { + const struct timeval tv = ms_to_tv(req->timeout); - req->timeout_ev = evtimer_new(global_ev_base, timeout_cb, (void*)req); - if(event_add(req->timeout_ev, &tv)<0) { - ERR("event_add failed while setting request timer (%s).", - strerror(errno)); - return -1; + req->timeout_ev = evtimer_new(global_ev_base, timeout_cb, (void*)req); + if(event_add(req->timeout_ev, &tv)<0) { + ERR("event_add failed while setting request timer (%s).", + strerror(errno)); + return -1; + } } }