mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-27 15:04:17 +00:00
Fixing leak in resp_hdr_cb
Memory is allocated for key and val, and longpoll address, when found, is stored in the header_info and prevented from being freed there. This pointer is stored during pool probing but once that's done it was just being lost. Not so visible but also leaking was the refuse reason string.
This commit is contained in:
parent
c3ef4912dd
commit
44bcb69ccd
21
util.c
21
util.c
@ -30,6 +30,12 @@
|
||||
# include <winsock2.h>
|
||||
# include <mstcpip.h>
|
||||
#endif
|
||||
#ifdef DMALLOC
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <dmalloc.h>
|
||||
#endif
|
||||
|
||||
#include "miner.h"
|
||||
#include "elist.h"
|
||||
#include "compat.h"
|
||||
@ -364,10 +370,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 +421,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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user