nxt_jni_InputStream.c (977:4f9268f27b57) nxt_jni_InputStream.c (1398:05063d6eec8e)
1
2/*
3 * Copyright (C) NGINX, Inc.
4 */
5
6#include <nxt_auto_config.h>
7
8#include <jni.h>

--- 76 unchanged lines hidden (view full) ---

85 return NXT_UNIT_OK;
86}
87
88
89static jint JNICALL
90nxt_java_InputStream_readLine(JNIEnv *env, jclass cls,
91 jlong req_info_ptr, jarray out, jint off, jint len)
92{
1
2/*
3 * Copyright (C) NGINX, Inc.
4 */
5
6#include <nxt_auto_config.h>
7
8#include <jni.h>

--- 76 unchanged lines hidden (view full) ---

85 return NXT_UNIT_OK;
86}
87
88
89static jint JNICALL
90nxt_java_InputStream_readLine(JNIEnv *env, jclass cls,
91 jlong req_info_ptr, jarray out, jint off, jint len)
92{
93 char *p;
94 jint size, b_size;
95 uint8_t *data;
96 ssize_t res;
93 uint8_t *data;
94 ssize_t res;
97 nxt_unit_buf_t *b;
98 nxt_unit_request_info_t *req;
99
100 req = nxt_jlong2ptr(req_info_ptr);
101
95 nxt_unit_request_info_t *req;
96
97 req = nxt_jlong2ptr(req_info_ptr);
98
102 size = 0;
99 data = (*env)->GetPrimitiveArrayCritical(env, out, NULL);
103
100
104 for (b = req->content_buf; b; b = nxt_unit_buf_next(b)) {
105 b_size = b->end - b->free;
106 p = memchr(b->free, '\n', b_size);
101 res = nxt_unit_request_readline_size(req, len);
107
102
108 if (p != NULL) {
109 p++;
110 size += p - b->free;
111 break;
112 }
113
114 size += b_size;
115
116 if (size >= len) {
117 break;
118 }
103 if (res > 0) {
104 res = nxt_unit_request_read(req, data + off, res);
119 }
120
105 }
106
121 len = len < size ? len : size;
122
123 data = (*env)->GetPrimitiveArrayCritical(env, out, NULL);
124
125 res = nxt_unit_request_read(req, data + off, len);
126
127 nxt_unit_req_debug(req, "readLine '%.*s'", res, (char *) data + off);
128
129 (*env)->ReleasePrimitiveArrayCritical(env, out, data, 0);
130
131 return res > 0 ? res : -1;
132}
133
134

--- 96 unchanged lines hidden ---
107 nxt_unit_req_debug(req, "readLine '%.*s'", res, (char *) data + off);
108
109 (*env)->ReleasePrimitiveArrayCritical(env, out, data, 0);
110
111 return res > 0 ? res : -1;
112}
113
114

--- 96 unchanged lines hidden ---