mirror of
https://github.com/ading2210/libcurl.js.git
synced 2025-05-13 14:30:02 -04:00
fix websocket memory leak
This commit is contained in:
parent
5f71e27422
commit
582bbd4ecd
5 changed files with 7 additions and 5 deletions
|
@ -255,6 +255,7 @@ function perform_request_async(url, params, body) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let response_data = merge_arrays(chunks);
|
let response_data = merge_arrays(chunks);
|
||||||
|
chunks = null;
|
||||||
let response_obj = create_response(response_data, response_info);
|
let response_obj = create_response(response_data, response_info);
|
||||||
resolve(response_obj);
|
resolve(response_obj);
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,6 +50,7 @@ class CurlWebSocket extends EventTarget {
|
||||||
recv() {
|
recv() {
|
||||||
let buffer_size = 64*1024;
|
let buffer_size = 64*1024;
|
||||||
let result_ptr = _recv_from_websocket(this.http_handle, buffer_size);
|
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);
|
let result_code = _get_result_code(result_ptr);
|
||||||
|
|
||||||
if (result_code == 0) { //CURLE_OK - data recieved
|
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_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_heap = Module.HEAPU8.subarray(data_ptr, data_ptr + data_size);
|
||||||
let data = new Uint8Array(data_heap);
|
let data = new Uint8Array(data_heap);
|
||||||
_free(data_ptr);
|
|
||||||
|
|
||||||
this.recv_buffer.push(data);
|
this.recv_buffer.push(data);
|
||||||
if (data_size !== buffer_size && !_get_result_bytes_left(result_ptr)) { //message finished
|
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
|
if (result_code == 52) { //CURLE_GOT_NOTHING - socket closed
|
||||||
this.close_callback();
|
this.close_callback();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_free(data_ptr);
|
||||||
_free(result_ptr);
|
_free(result_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,5 +32,6 @@ char* get_version() {
|
||||||
cJSON_AddItemToObject(version_json, "protocols", protocols_array);
|
cJSON_AddItemToObject(version_json, "protocols", protocols_array);
|
||||||
|
|
||||||
char* version_json_str = cJSON_Print(version_json);
|
char* version_json_str = cJSON_Print(version_json);
|
||||||
|
cJSON_Delete(version_json);
|
||||||
return version_json_str;
|
return version_json_str;
|
||||||
}
|
}
|
|
@ -36,7 +36,7 @@ void close_websocket(CURL* http_handle) {
|
||||||
curl_ws_send(http_handle, "", 0, &sent, 0, CURLWS_CLOSE);
|
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) {
|
void cleanup_websocket(CURL* http_handle) {
|
||||||
struct RequestInfo *request_info;
|
struct RequestInfo *request_info;
|
||||||
curl_easy_getinfo(http_handle, CURLINFO_PRIVATE, &request_info);
|
curl_easy_getinfo(http_handle, CURLINFO_PRIVATE, &request_info);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "libcurl.js",
|
"name": "libcurl.js",
|
||||||
"version": "0.3.2",
|
"version": "0.3.3",
|
||||||
"description": "An experimental port of libcurl to WebAssembly for use in the browser.",
|
"description": "An experimental port of libcurl to WebAssembly for use in the browser.",
|
||||||
"main": "libcurl.mjs",
|
"main": "libcurl.mjs",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue