add libcurl error strings to fetch error messages

This commit is contained in:
ading2210 2024-03-06 17:02:55 -05:00
parent c9236f90d5
commit 155d5ea5b6
8 changed files with 18 additions and 10 deletions

View file

@ -88,6 +88,7 @@ sed -i "/__extra_libraries__/r $JAVSCRIPT_DIR/tls_socket.js" $OUT_FILE
sed -i "/__extra_libraries__/r $JAVSCRIPT_DIR/websocket.js" $OUT_FILE
sed -i "/__extra_libraries__/r $JAVSCRIPT_DIR/ws_polyfill.js" $OUT_FILE
sed -i "/__extra_libraries__/r $JAVSCRIPT_DIR/util.js" $OUT_FILE
sed -i "/__extra_libraries__/r $JAVSCRIPT_DIR/logger.js" $OUT_FILE
#apply patches
python3 tools/patch_js.py $FRAGMENTS_DIR $OUT_FILE

View file

@ -5,6 +5,7 @@ active_requests
get_version
get_cacert
get_error_str
recv_from_websocket
send_to_websocket

View file

@ -67,7 +67,6 @@ function perform_request(url, params, js_data_callback, js_end_callback, body=nu
_free(url_ptr);
_free(response_json_ptr);
if (error != 0) console.error("request failed with error code " + error);
active_requests --;
js_end_callback(error, response_info);
}
@ -172,7 +171,9 @@ function perform_request_async(url, params, body) {
let finish_callback = (error, response_info) => {
if (error != 0) {
reject("libcurl.js encountered an error: " + error);
let error_str = `Request failed with error code ${error}: ${get_error_str(error)}`;
if (error != 0) error_msg(error_str);
reject(error_str);
return;
}
let response_data = merge_arrays(chunks);

View file

@ -1,8 +1,7 @@
//currently broken
class TLSSocket extends CustomWebSocket {
class TLSSocket {
constructor(hostname, port, debug) {
super();
this.hostname = hostname;
this.port = port;
this.url = `https://${hostname}:${port}`;

View file

@ -34,6 +34,11 @@ function allocate_array(array) {
return allocate(array, ALLOC_NORMAL);
}
function get_error_str(error_code) {
let error_ptr = _get_error_str(error_code);
return UTF8ToString(error_ptr);
}
//convert any data to a uint8array
async function data_to_array(data) {
let data_array = null;

View file

@ -60,7 +60,6 @@ class CurlWebSocket {
_free(data_ptr);
_free(result_ptr);
}
console.log(result_code);
if (result_code === 0) { //CURLE_OK - data received
if (_get_result_closed(result_ptr)) {
@ -72,8 +71,6 @@ class CurlWebSocket {
let data_size = _get_result_size(result_ptr);
let data_heap = Module.HEAPU8.subarray(data_ptr, data_ptr + data_size);
let data = new Uint8Array(data_heap);
console.log(data, data_size, buffer_size, _get_result_bytes_left(result_ptr));
this.recv_buffer.push(data);
if (data_size !== buffer_size && !_get_result_bytes_left(result_ptr)) { //message finished
@ -88,7 +85,7 @@ class CurlWebSocket {
}
}
}
//CURLE_GOT_NOTHING, CURLE_RECV_ERROR, CURLE_SEND_ERROR - socket closed
else if (result_code === 52 || result_code === 55 || result_code === 56) {
this.cleanup();

View file

@ -44,7 +44,7 @@ class FakeWebSocket extends EventTarget {
this.socket.onerror = (error) => {
this.status = this.CLOSED;
console.error(`websocket ${this.url} encountered an error (${error})`);
error_msg(`websocket ${this.url} encountered an error (${error})`);
let error_event = new Event("error");
this.dispatchEvent(error_event);
this.onerror(error_event);
@ -66,7 +66,7 @@ class FakeWebSocket extends EventTarget {
throw "invalid binaryType string";
}
}
let msg_event = new MessageEvent("message", {data: converted});
this.onmessage(msg_event);
this.dispatchEvent(msg_event);

View file

@ -34,4 +34,8 @@ char* get_version() {
char* version_json_str = cJSON_Print(version_json);
cJSON_Delete(version_json);
return version_json_str;
}
const char* get_error_str(CURLcode error_code) {
return curl_easy_strerror(error_code);
}