diff --git a/client/build.sh b/client/build.sh index 0eb7ddd..39cdd16 100755 --- a/client/build.sh +++ b/client/build.sh @@ -10,7 +10,7 @@ OUT_FILE="out/libcurl.js" EXPORTED_FUNCS="_main,_perform_request" RUNTIME_METHODS="addFunction,removeFunction,allocate,ALLOC_NORMAL" COMPILER_OPTIONS="-o $OUT_FILE -lcurl -lssl -lcrypto -lcjson -I $INCLUDE_DIR -L $LIB_DIR" -EMSCRIPTEN_OPTIONS="-lwebsocket.js -sWEBSOCKET_URL=wss://debug.ading.dev/ws -sASYNCIFY -sALLOW_TABLE_GROWTH -sEXPORTED_FUNCTIONS=$EXPORTED_FUNCS -sEXPORTED_RUNTIME_METHODS=$RUNTIME_METHODS --preload-file $CACERT_FILE" +EMSCRIPTEN_OPTIONS="-lwebsocket.js -sWEBSOCKET_URL=wss://debug.ading.dev/ws -sSINGLE_FILE -sASYNCIFY -sALLOW_TABLE_GROWTH -sEXPORTED_FUNCTIONS=$EXPORTED_FUNCS -sEXPORTED_RUNTIME_METHODS=$RUNTIME_METHODS --preload-file $CACERT_FILE" if [ ! -f $CACERT_FILE ]; then wget "https://curl.se/ca/cacert.pem" -O $CACERT_FILE @@ -18,8 +18,14 @@ fi tools/all_deps.sh +rm -rf out mkdir -p out + COMPILE_CMD="emcc main.c $COMPILER_OPTIONS $EMSCRIPTEN_OPTIONS" echo $COMPILE_CMD $COMPILE_CMD + +#patch the output to work around some emscripten bugs +sed -i 's/err("__syscall_getsockname " \?+ \?fd);//' $OUT_FILE +sed -i 's/function _emscripten_console_error(str) {/& if(UTF8ToString(str).endsWith("__syscall_setsockopt\\n")) return;/' $OUT_FILE mv out/libcurl.data ./ \ No newline at end of file diff --git a/client/main.js b/client/main.js index c464d67..80fc8a0 100644 --- a/client/main.js +++ b/client/main.js @@ -79,27 +79,6 @@ function allocate_array(array) { return allocate(array, ALLOC_NORMAL); } -//make emscripten shut up about unsupported syscalls -function silence_errs() { - window._err = window.err; - window.err = function() { - let arg = arguments[0]; - if (is_str(arg) && arg.startsWith("__syscall_getsockname")) { - return; - } - window._err(...arguments); - } - - window._console_error = window.console.error; - window.console.error = function() { - let arg = arguments[0]; - if (is_str(arg) && arg === "warning: unsupported syscall: __syscall_setsockopt\n") { - return; - } - window._console_error(...arguments); - } -} - //low level interface with c code function perform_request(url, params, js_data_callback, js_end_callback, body=null) { let params_str = JSON.stringify(params); @@ -201,7 +180,6 @@ function libcurl_fetch(url, params={}) { } async function main() { - silence_errs(); console.log(await libcurl_fetch("https://httpbin.org/anything")); }