summaryrefslogtreecommitdiff
path: root/sapi/servlet/servlet.c
diff options
context:
space:
mode:
Diffstat (limited to 'sapi/servlet/servlet.c')
-rw-r--r--sapi/servlet/servlet.c42
1 files changed, 23 insertions, 19 deletions
diff --git a/sapi/servlet/servlet.c b/sapi/servlet/servlet.c
index abded32554..b37d8bce39 100644
--- a/sapi/servlet/servlet.c
+++ b/sapi/servlet/servlet.c
@@ -171,25 +171,29 @@ static void sapi_servlet_send_header(sapi_header_struct *sapi_header, void *serv
static int sapi_servlet_read_post(char *buffer, uint count_bytes SLS_DC)
{
- JNIEnv *jenv = ((servlet_request*)SG(server_context))->jenv;
- jobject servlet = ((servlet_request*)SG(server_context))->servlet;
-
- jclass servletClass = (*jenv)->GetObjectClass(jenv, servlet);
- jmethodID readPost = (*jenv)->GetMethodID(jenv, servletClass, "readPost",
- "(I)Ljava/lang/String;");
- jstring post = (*jenv)->CallObjectMethod(jenv, servlet, readPost,
- count_bytes);
-
- const char *postAsUTF = (*jenv)->GetStringUTFChars(jenv, post, 0);
- uint read_bytes=(*jenv)->GetStringLength(jenv, post);
- if (read_bytes>count_bytes) read_bytes=count_bytes;
-
- memcpy(buffer, postAsUTF, read_bytes);
- if (read_bytes<count_bytes) buffer[read_bytes]=0;
-
- (*jenv)->ReleaseStringUTFChars(jenv, post, postAsUTF);
-
- return read_bytes;
+ if (count_bytes == 0) {
+ return 0;
+ } else {
+ JNIEnv *jenv = ((servlet_request*)SG(server_context))->jenv;
+ jobject servlet = ((servlet_request*)SG(server_context))->servlet;
+
+ jclass servletClass = (*jenv)->GetObjectClass(jenv, servlet);
+ jmethodID readPost = (*jenv)->GetMethodID(jenv, servletClass,
+ "readPost", "(I)Ljava/lang/String;");
+ jstring post = (*jenv)->CallObjectMethod(jenv, servlet, readPost,
+ count_bytes);
+
+ const char *postAsUTF = (*jenv)->GetStringUTFChars(jenv, post, 0);
+ uint read_bytes=(*jenv)->GetStringLength(jenv, post);
+ if (read_bytes>count_bytes) read_bytes=count_bytes;
+
+ memcpy(buffer, postAsUTF, read_bytes);
+ if (read_bytes<count_bytes) buffer[read_bytes]=0;
+
+ (*jenv)->ReleaseStringUTFChars(jenv, post, postAsUTF);
+
+ return read_bytes;
+ }
}