mirror of
https://github.com/ading2210/libcurl.js.git
synced 2025-05-12 14:00:01 -04:00
fix receiving large websocket frames
This commit is contained in:
parent
17d8c9fa8c
commit
b053ec8e77
5 changed files with 10 additions and 4 deletions
|
@ -11,5 +11,6 @@ get_result_size
|
|||
get_result_buffer
|
||||
get_result_code
|
||||
get_result_closed
|
||||
get_result_fragment
|
||||
|
||||
free
|
|
@ -13,5 +13,6 @@ struct WSResult {
|
|||
int res;
|
||||
int buffer_size;
|
||||
int closed;
|
||||
int fragment;
|
||||
char* buffer;
|
||||
};
|
|
@ -18,7 +18,7 @@ struct WSResult* recv_from_websocket(CURL* http_handle, int buffer_size) {
|
|||
result->buffer = buffer;
|
||||
result->res = (int) res;
|
||||
result->closed = (ws_meta->flags & CURLWS_CLOSE);
|
||||
|
||||
result->fragment = ws_meta->bytesleft;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -54,4 +54,7 @@ int get_result_code (const struct WSResult* result) {
|
|||
}
|
||||
int get_result_closed (const struct WSResult* result) {
|
||||
return result->closed;
|
||||
}
|
||||
int get_result_fragment (const struct WSResult* result) {
|
||||
return result->fragment;
|
||||
}
|
|
@ -32,7 +32,7 @@ class CurlWebSocket extends EventTarget {
|
|||
let finish_callback = (error, response_info) => {
|
||||
this.finish_callback(error, response_info);
|
||||
}
|
||||
this.http_handle = perform_request(this.url, {_libcurl_verbose: 1}, data_callback, finish_callback, null);
|
||||
this.http_handle = perform_request(this.url, {}, data_callback, finish_callback, null);
|
||||
this.recv_loop();
|
||||
}
|
||||
|
||||
|
@ -43,6 +43,7 @@ class CurlWebSocket extends EventTarget {
|
|||
|
||||
if (result_code == 0) { //CURLE_OK - data recieved
|
||||
if (_get_result_closed(result_ptr)) {
|
||||
//this.pass_buffer();
|
||||
this.close_callback();
|
||||
return;
|
||||
}
|
||||
|
@ -54,7 +55,7 @@ class CurlWebSocket extends EventTarget {
|
|||
_free(data_ptr);
|
||||
|
||||
this.recv_buffer.push(data);
|
||||
if (data_size !== buffer_size) { //message finished
|
||||
if (data_size !== buffer_size && !_get_result_fragment(result_ptr)) { //message finished
|
||||
let full_data = merge_arrays(this.recv_buffer);
|
||||
this.recv_buffer = [];
|
||||
this.recv_callback(full_data);
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 0df32b3910780f4d91fc6f55ab7aab2dc726a770
|
||||
Subproject commit 0596aefa8206bbb128cab1f4b1ad4241289d2fda
|
Loading…
Add table
Add a link
Reference in a new issue