naett.c

Tiny cross-platform HTTP / HTTPS client library in C.
git clone git://git.finwo.net/lib/naett.c
Log | Files | Refs | README | LICENSE

commit 72f135eebc7bd15616d166ba4be472f515f7c606
parent 72eb71fe4a1ba428b8ff5ca03ac31db22b39b86e
Author: Erik Agsjö <erik.agsjo@gmail.com>
Date:   Sun, 12 Dec 2021 22:26:03 +0100

Android tests pass

Diffstat:
Mnaett.c | 13+++++++++++--
Msrc/naett_android.c | 13+++++++++++--
2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/naett.c b/naett.c @@ -1401,6 +1401,14 @@ static void* processRequest(void* data) { goto finally; } + { + jstring name = (*env)->NewStringUTF(env, "User-Agent"); + jstring value = (*env)->NewStringUTF(env, NAETT_UA); + voidCall(env, connection, "addRequestProperty", "(Ljava/lang/String;Ljava/lang/String;)V", name, value); + (*env)->DeleteLocalRef(env, name); + (*env)->DeleteLocalRef(env, value); + } + KVLink* header = req->options.headers; while (header != NULL) { jstring name = (*env)->NewStringUTF(env, header->key); @@ -1438,7 +1446,8 @@ static void* processRequest(void* data) { do { bytesRead = req->options.bodyReader(byteBuffer, bufSize, req->options.bodyReaderData); if (bytesRead > 0) { - voidCall(env, outputStream, "write", "([B,I,I)V", buffer, 0, bytesRead); + (*env)->SetByteArrayRegion(env, buffer, 0, bytesRead, (const jbyte*) byteBuffer); + voidCall(env, outputStream, "write", "([BII)V", buffer, 0, bytesRead); } else { break; } @@ -1512,9 +1521,9 @@ static void* processRequest(void* data) { voidCall(env, inputStream, "close", "()V"); res->code = statusCode; - res->complete = 1; finally: + res->complete = 1; (*env)->PopLocalFrame(env, NULL); JavaVM* vm = getVM(); (*env)->ExceptionClear(env); diff --git a/src/naett_android.c b/src/naett_android.c @@ -113,6 +113,14 @@ static void* processRequest(void* data) { goto finally; } + { + jstring name = (*env)->NewStringUTF(env, "User-Agent"); + jstring value = (*env)->NewStringUTF(env, NAETT_UA); + voidCall(env, connection, "addRequestProperty", "(Ljava/lang/String;Ljava/lang/String;)V", name, value); + (*env)->DeleteLocalRef(env, name); + (*env)->DeleteLocalRef(env, value); + } + KVLink* header = req->options.headers; while (header != NULL) { jstring name = (*env)->NewStringUTF(env, header->key); @@ -150,7 +158,8 @@ static void* processRequest(void* data) { do { bytesRead = req->options.bodyReader(byteBuffer, bufSize, req->options.bodyReaderData); if (bytesRead > 0) { - voidCall(env, outputStream, "write", "([B,I,I)V", buffer, 0, bytesRead); + (*env)->SetByteArrayRegion(env, buffer, 0, bytesRead, (const jbyte*) byteBuffer); + voidCall(env, outputStream, "write", "([BII)V", buffer, 0, bytesRead); } else { break; } @@ -224,9 +233,9 @@ static void* processRequest(void* data) { voidCall(env, inputStream, "close", "()V"); res->code = statusCode; - res->complete = 1; finally: + res->complete = 1; (*env)->PopLocalFrame(env, NULL); JavaVM* vm = getVM(); (*env)->ExceptionClear(env);