mirror of
https://github.com/ading2210/libcurl.js.git
synced 2025-05-13 14:30:02 -04:00
Merge branch 'main' into v0.4
This commit is contained in:
commit
832a73d1a8
9 changed files with 18 additions and 20 deletions
|
@ -28,7 +28,7 @@ EXPORTED_FUNCS="${EXPORTED_FUNCS:1}"
|
|||
#compile options
|
||||
RUNTIME_METHODS="addFunction,removeFunction,allocate,ALLOC_NORMAL"
|
||||
COMPILER_OPTIONS="-o $MODULE_FILE -lcurl -lssl -lcrypto -lcjson -lz -lbrotlidec -lbrotlicommon -lnghttp2 -I $INCLUDE_DIR -L $LIB_DIR"
|
||||
EMSCRIPTEN_OPTIONS="-lwebsocket.js -sASSERTIONS=1 -sLLD_REPORT_UNDEFINED -sALLOW_TABLE_GROWTH -sALLOW_MEMORY_GROWTH -sEXPORTED_FUNCTIONS=$EXPORTED_FUNCS -sEXPORTED_RUNTIME_METHODS=$RUNTIME_METHODS"
|
||||
EMSCRIPTEN_OPTIONS="-lwebsocket.js -sENVIRONMENT=worker,web -sASSERTIONS=1 -sLLD_REPORT_UNDEFINED -sALLOW_TABLE_GROWTH -sALLOW_MEMORY_GROWTH -sEXPORTED_FUNCTIONS=$EXPORTED_FUNCS -sEXPORTED_RUNTIME_METHODS=$RUNTIME_METHODS"
|
||||
|
||||
#clean output dir
|
||||
rm -rf $OUT_DIR
|
||||
|
@ -94,4 +94,4 @@ python3 tools/patch_js.py $FRAGMENTS_DIR $OUT_FILE
|
|||
|
||||
#generate es6 module
|
||||
cp $OUT_FILE $ES6_FILE
|
||||
sed -i 's/window.libcurl/export const libcurl/' $ES6_FILE
|
||||
sed -i 's/const libcurl = /export const libcurl = /' $ES6_FILE
|
|
@ -16,12 +16,8 @@ You should have received a copy of the GNU Affero General Public License
|
|||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
if (typeof window === "undefined") {
|
||||
throw new Error("NodeJS is not supported. This only works inside the browser.");
|
||||
}
|
||||
|
||||
//everything is wrapped in a function to prevent emscripten from polluting the global scope
|
||||
window.libcurl = (function() {
|
||||
const libcurl = (function() {
|
||||
|
||||
//emscripten compiled code is inserted here
|
||||
/* __emscripten_output__ */
|
||||
|
|
|
@ -19,9 +19,10 @@ void finish_request(CURLMsg *curl_msg);
|
|||
|
||||
CURLM *multi_handle;
|
||||
int request_active = 0;
|
||||
struct curl_blob cacert_blob;
|
||||
|
||||
int write_function(void *data, size_t size, size_t nmemb, DataCallback data_callback) {
|
||||
long real_size = size * nmemb;
|
||||
size_t write_function(void *data, size_t size, size_t nmemb, DataCallback data_callback) {
|
||||
size_t real_size = size * nmemb;
|
||||
char* chunk = malloc(real_size);
|
||||
memcpy(chunk, data, real_size);
|
||||
data_callback(chunk, real_size);
|
||||
|
@ -53,8 +54,7 @@ CURL* start_request(const char* url, const char* json_params, DataCallback data_
|
|||
int prevent_cleanup = 0;
|
||||
|
||||
curl_easy_setopt(http_handle, CURLOPT_URL, url);
|
||||
curl_easy_setopt(http_handle, CURLOPT_CAINFO, "/cacert.pem");
|
||||
curl_easy_setopt(http_handle, CURLOPT_CAPATH, "/cacert.pem");
|
||||
curl_easy_setopt(http_handle, CURLOPT_CAINFO_BLOB , cacert_blob);
|
||||
|
||||
//callbacks to pass the response data back to js
|
||||
curl_easy_setopt(http_handle, CURLOPT_WRITEFUNCTION, &write_function);
|
||||
|
@ -199,8 +199,10 @@ void finish_request(CURLMsg *curl_msg) {
|
|||
void init_curl() {
|
||||
curl_global_init(CURL_GLOBAL_DEFAULT);
|
||||
multi_handle = curl_multi_init();
|
||||
curl_multi_setopt(multi_handle, CURLMOPT_MAX_TOTAL_CONNECTIONS, 50L);
|
||||
curl_multi_setopt(multi_handle, CURLMOPT_MAXCONNECTS, 40L);
|
||||
|
||||
FILE* file = fopen("/cacert.pem", "wb");
|
||||
fwrite(_cacert_pem, 1, _cacert_pem_len, file);
|
||||
fclose(file);
|
||||
cacert_blob.data = _cacert_pem;
|
||||
cacert_blob.len = _cacert_pem_len;
|
||||
cacert_blob.flags = CURL_BLOB_NOCOPY;
|
||||
}
|
|
@ -10,7 +10,7 @@ PREFIX=$(realpath build/brotli-wasm)
|
|||
|
||||
cd build
|
||||
rm -rf brotli
|
||||
git clone -b master --depth=1 https://github.com/google/brotli
|
||||
git clone -b v1.1.0 --depth=1 https://github.com/google/brotli
|
||||
cd brotli
|
||||
|
||||
emcmake cmake . -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./installed
|
||||
|
|
|
@ -11,7 +11,7 @@ mkdir -p $PREFIX
|
|||
|
||||
cd build
|
||||
rm -rf cjson
|
||||
git clone -b master --depth=1 https://github.com/DaveGamble/cJSON cjson
|
||||
git clone -b v1.7.17 --depth=1 https://github.com/DaveGamble/cJSON cjson
|
||||
cd cjson
|
||||
|
||||
sed -i 's/-fstack-protector-strong//' Makefile
|
||||
|
|
|
@ -14,7 +14,7 @@ NGHTTP2_PREFIX=$(realpath build/nghttp2-wasm)
|
|||
|
||||
cd build
|
||||
rm -rf curl
|
||||
git clone -b master --depth=1 https://github.com/curl/curl
|
||||
git clone -b curl-8_6_0 --depth=1 https://github.com/curl/curl
|
||||
cd curl
|
||||
|
||||
autoreconf -fi
|
||||
|
|
|
@ -10,7 +10,7 @@ PREFIX=$(realpath build/nghttp2-wasm)
|
|||
|
||||
cd build
|
||||
rm -rf nghttp2
|
||||
git clone -b master --depth=1 https://github.com/nghttp2/nghttp2
|
||||
git clone -b v1.59.0 --depth=1 https://github.com/nghttp2/nghttp2
|
||||
cd nghttp2
|
||||
|
||||
rm -rf $PREFIX
|
||||
|
|
|
@ -11,7 +11,7 @@ mkdir -p $PREFIX
|
|||
|
||||
cd build
|
||||
rm -rf openssl
|
||||
git clone -b master --depth=1 https://github.com/openssl/openssl
|
||||
git clone -b openssl-3.2.1 --depth=1 https://github.com/openssl/openssl
|
||||
cd openssl
|
||||
|
||||
export CFLAGS="-Wall -Oz"
|
||||
|
|
|
@ -10,7 +10,7 @@ PREFIX=$(realpath build/zlib-wasm)
|
|||
|
||||
cd build
|
||||
rm -rf zlib
|
||||
git clone -b master --depth=1 https://github.com/madler/zlib
|
||||
git clone -b v1.3.1 --depth=1 https://github.com/madler/zlib
|
||||
cd zlib
|
||||
|
||||
emconfigure ./configure --static
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue