Merge pull request #165 from nelisky/resp_hdr_cb_leak Fixing leak in resp_hdr_cb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
diff --git a/util.c b/util.c
index 6a5dcd8..5257f5c 100644
--- a/util.c
+++ b/util.c
@@ -30,6 +30,7 @@
# include <winsock2.h>
# include <mstcpip.h>
#endif
+
#include "miner.h"
#include "elist.h"
#include "compat.h"
@@ -364,10 +365,15 @@ json_t *json_rpc_call(CURL *curl, const char *url,
if (probing) {
pool->probed = true;
/* If X-Long-Polling was found, activate long polling */
- if (hi.lp_path)
+ if (hi.lp_path) {
+ if (pool->hdr_path != NULL)
+ free(pool->hdr_path);
pool->hdr_path = hi.lp_path;
- else
+ } else {
pool->hdr_path = NULL;
+ }
+ } else if (hi.lp_path) {
+ free(hi.lp_path);
}
*rolltime = hi.has_rolltime;
@@ -410,9 +416,11 @@ json_t *json_rpc_call(CURL *curl, const char *url,
goto err_out;
}
- if (hi.reason)
+ if (hi.reason) {
json_object_set_new(val, "reject-reason", json_string(hi.reason));
-
+ free(hi.reason);
+ hi.reason = NULL;
+ }
successful_connect = true;
databuf_free(&all_data);
curl_slist_free_all(headers);