diff --git a/client/javascript/main.js b/client/javascript/main.js index ed4453c..f42596b 100644 --- a/client/javascript/main.js +++ b/client/javascript/main.js @@ -255,6 +255,7 @@ function perform_request_async(url, params, body) { return; } let response_data = merge_arrays(chunks); + chunks = null; let response_obj = create_response(response_data, response_info); resolve(response_obj); } diff --git a/client/javascript/websocket.js b/client/javascript/websocket.js index 9f7b272..23af368 100644 --- a/client/javascript/websocket.js +++ b/client/javascript/websocket.js @@ -50,6 +50,7 @@ class CurlWebSocket extends EventTarget { recv() { let buffer_size = 64*1024; let result_ptr = _recv_from_websocket(this.http_handle, buffer_size); + let data_ptr = _get_result_buffer(result_ptr); let result_code = _get_result_code(result_ptr); if (result_code == 0) { //CURLE_OK - data recieved @@ -60,10 +61,8 @@ class CurlWebSocket extends EventTarget { } let data_size = _get_result_size(result_ptr); - let data_ptr = _get_result_buffer(result_ptr); let data_heap = Module.HEAPU8.subarray(data_ptr, data_ptr + data_size); let data = new Uint8Array(data_heap); - _free(data_ptr); this.recv_buffer.push(data); if (data_size !== buffer_size && !_get_result_bytes_left(result_ptr)) { //message finished @@ -77,7 +76,8 @@ class CurlWebSocket extends EventTarget { if (result_code == 52) { //CURLE_GOT_NOTHING - socket closed this.close_callback(); } - + + _free(data_ptr); _free(result_ptr); } diff --git a/client/libcurl/util.c b/client/libcurl/util.c index c991858..170d3ce 100644 --- a/client/libcurl/util.c +++ b/client/libcurl/util.c @@ -32,5 +32,6 @@ char* get_version() { cJSON_AddItemToObject(version_json, "protocols", protocols_array); char* version_json_str = cJSON_Print(version_json); + cJSON_Delete(version_json); return version_json_str; } \ No newline at end of file diff --git a/client/libcurl/websocket.c b/client/libcurl/websocket.c index f8f58c8..4c7e5fd 100644 --- a/client/libcurl/websocket.c +++ b/client/libcurl/websocket.c @@ -36,7 +36,7 @@ void close_websocket(CURL* http_handle) { curl_ws_send(http_handle, "", 0, &sent, 0, CURLWS_CLOSE); } -//allow the main code to automatically clean up this websocket +//clean up the http handle associated with the websocket, since the main loop can't do this automatically void cleanup_websocket(CURL* http_handle) { struct RequestInfo *request_info; curl_easy_getinfo(http_handle, CURLINFO_PRIVATE, &request_info); diff --git a/client/package.json b/client/package.json index 9f7a878..47caa58 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "libcurl.js", - "version": "0.3.2", + "version": "0.3.3", "description": "An experimental port of libcurl to WebAssembly for use in the browser.", "main": "libcurl.mjs", "scripts": {