From a6f190fcdab2f2791b8b6ef9d4d5887fd46d12b8 Mon Sep 17 00:00:00 2001 From: ading2210 Date: Mon, 11 Mar 2024 01:20:42 -0400 Subject: [PATCH] fix error handling --- CHANGELOG.md | 3 +++ client/javascript/main.js | 18 ++++++++++++------ client/package.json | 2 +- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b49220..2ab4357 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Libcurl.js Changelog: +## v0.5.2 (3/10/24): +- Fix a bug with error handling + ## v0.5.1 (3/10/24): - Added support for aborting requests diff --git a/client/javascript/main.js b/client/javascript/main.js index 022f838..4ce5112 100644 --- a/client/javascript/main.js +++ b/client/javascript/main.js @@ -76,12 +76,16 @@ function perform_request(url, params, js_data_callback, js_end_callback, js_head function headers_callback(response_json_ptr) { let response_json = UTF8ToString(response_json_ptr); let response_info = JSON.parse(response_json); - + if (body_ptr) _free(body_ptr); _free(url_ptr); _free(response_json_ptr); - js_headers_callback(response_info); + //if the response status is 0, an error occurred, + //but we don't know what it is yet + if (response_info.status !== 0) { + js_headers_callback(response_info); + } } end_callback_ptr = Module.addFunction(end_callback, "vi"); @@ -218,12 +222,14 @@ function perform_request_async(url, params, body) { } function finish_callback(error) { if (error != 0) { - let error_str = `Request failed with error code ${error}: ${get_error_str(error)}`; - if (error != 0) error_msg(error_str); - reject(error_str); + error_msg(`Request "${url}" failed with error code ${error}: ${get_error_str(error)}`); + reject(`Request failed with error code ${error}: ${get_error_str(error)}`); return; } - stream_controller.close(); + try { + stream_controller.close(); + } //this will only fail if the stream is already errored or closed, which isn't a problem + catch {} } http_handle = perform_request(url, params, data_callback, finish_callback, headers_callback, body); diff --git a/client/package.json b/client/package.json index 419fd56..01eb804 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "libcurl.js", - "version": "0.5.1", + "version": "0.5.2", "description": "An experimental port of libcurl to WebAssembly for use in the browser.", "main": "libcurl.mjs", "scripts": {