📄 jk_jnicb.c
字号:
(*env)->SetObjectArrayElement(env, envbuf, 14, (*env)->NewStringUTF(env, ps-> ssl_session)); jk_log(pl, JK_LOG_DEBUG, "---> ssl_session: %s\n", ps->ssl_session); } } jk_log(pl, JK_LOG_DEBUG, "Done JNIConnectionHandler::readEnvironment\n"); return JK_TRUE;}/* * Class: org_apache_tomcat_modules_server_JNIConnectionHandler * Method: readHeaders * Signature: (JJ[Ljava/lang/String;[Ljava/lang/String;)I */JNIEXPORT jint JNICALL Java_org_apache_tomcat_modules_server_JNIConnectionHandler_readHeaders (JNIEnv * env, jobject o, jlong s, jlong l, jobjectArray hnames, jobjectArray hvalues){ jk_ws_service_t *ps = (jk_ws_service_t *)(int)s; jk_logger_t *pl = (jk_logger_t *)(int)l; unsigned i; jk_log(pl, JK_LOG_DEBUG, "Into JNIConnectionHandler::readHeaders\n"); if (!ps) { jk_log(pl, JK_LOG_ERROR, "In JNIConnectionHandler::readHeaders, NULL ws service object\n"); return JK_FALSE; } jk_log(pl, JK_LOG_DEBUG, "In JNIConnectionHandler::readHeaders, %d headers follow --->\n", ps->num_headers); for (i = 0; i < ps->num_headers; i++) { (*env)->SetObjectArrayElement(env, hnames, i, (*env)->NewStringUTF(env, ps-> headers_names[i])); (*env)->SetObjectArrayElement(env, hvalues, i, (*env)->NewStringUTF(env, ps-> headers_values [i])); jk_log(pl, JK_LOG_DEBUG, "---> %s = %s\n", ps->headers_names[i], ps->headers_values[i]); } jk_log(pl, JK_LOG_DEBUG, "Done JNIConnectionHandler::readHeaders\n"); return JK_TRUE;}/* * Class: org_apache_tomcat_modules_server_JNIConnectionHandler * Method: startReasponse * Signature: (JJILjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;I)I */JNIEXPORT jint JNICALL Java_org_apache_tomcat_modules_server_JNIConnectionHandler_startReasponse (JNIEnv * env, jobject o, jlong s, jlong l, jint sc, jstring msg, jobjectArray hnames, jobjectArray hvalues, jint hcnt){ jk_ws_service_t *ps = (jk_ws_service_t *)(int)s; jk_logger_t *pl = (jk_logger_t *)(int)l; const char *nmsg = NULL; char **nhnames = NULL; char **nhvalues = NULL; jstring *shnames = NULL; jstring *shvalues = NULL; int i = 0; int ok = JK_TRUE; jk_log(pl, JK_LOG_DEBUG, "Into JNIConnectionHandler::startReasponse\n"); if (!ps) { jk_log(pl, JK_LOG_ERROR, "In JNIConnectionHandler::startReasponse, NULL ws service object\n"); return JK_FALSE; } jk_log(pl, JK_LOG_DEBUG, "In JNIConnectionHandler::startReasponse, %d headers follow --->\n", hcnt); if (hcnt) { ok = JK_FALSE; nhnames = (char **)jk_pool_alloc(ps->pool, hcnt * sizeof(char *)); nhvalues = (char **)jk_pool_alloc(ps->pool, hcnt * sizeof(char *)); shnames = (jstring *) jk_pool_alloc(ps->pool, hcnt * sizeof(jstring)); shvalues = (jstring *) jk_pool_alloc(ps->pool, hcnt * sizeof(jstring)); if (nhvalues && nhnames && shnames && shnames) { for (; i < hcnt; i++) { jboolean iscommit; shvalues[i] = shnames[i] = NULL; nhnames[i] = nhvalues[i] = NULL; shnames[i] = (*env)->GetObjectArrayElement(env, hnames, i); shvalues[i] = (*env)->GetObjectArrayElement(env, hvalues, i); if (!shvalues[i] || !shnames[i]) { jk_log(pl, JK_LOG_ERROR, "In JNIConnectionHandler::startReasponse, GetObjectArrayElement error\n"); break; } nhnames[i] = (char *)(*env)->GetStringUTFChars(env, shnames[i], &iscommit); nhvalues[i] = (char *)(*env)->GetStringUTFChars(env, shvalues[i], &iscommit); if (!nhvalues[i] || !nhnames[i]) { jk_log(pl, JK_LOG_ERROR, "In JNIConnectionHandler::startReasponse, GetStringUTFChars error\n"); break; } jk_log(pl, JK_LOG_DEBUG, "---> %s=%s\n", nhnames[i], nhvalues[i]); } if (i == hcnt) { ok = JK_TRUE; jk_log(pl, JK_LOG_DEBUG, "In JNIConnectionHandler::startReasponse. ----- End headers.\n", hcnt); } } else { jk_log(pl, JK_LOG_ERROR, "In JNIConnectionHandler::startReasponse, memory allocation error\n"); } } if (msg && ok) { jboolean iscommit; nmsg = (*env)->GetStringUTFChars(env, msg, &iscommit); if (!nmsg) { ok = JK_FALSE; } } if (ok) { if (!ps-> start_response(ps, sc, nmsg, (const char **)nhnames, (const char **)nhvalues, hcnt)) { ok = JK_FALSE; jk_log(pl, JK_LOG_ERROR, "In JNIConnectionHandler::startReasponse, servers startReasponse failed\n"); } } if (nmsg) { (*env)->ReleaseStringUTFChars(env, msg, nmsg); } if (i < hcnt) { i++; } if (nhvalues) { int j; for (j = 0; j < i; j++) { if (nhvalues[j]) { (*env)->ReleaseStringUTFChars(env, shvalues[j], nhvalues[j]); } } } if (nhnames) { int j; for (j = 0; j < i; j++) { if (nhnames[j]) { (*env)->ReleaseStringUTFChars(env, shnames[j], nhnames[j]); } } } jk_log(pl, JK_LOG_DEBUG, "Done JNIConnectionHandler::startReasponse.\n"); return ok;}/* * Class: org_apache_tomcat_modules_server_JNIConnectionHandler * Method: write * Signature: (JJ[BII)I */JNIEXPORT jint JNICALL Java_org_apache_tomcat_modules_server_JNIConnectionHandler_write (JNIEnv * env, jobject o, jlong s, jlong l, jbyteArray buf, jint from, jint cnt){ jk_ws_service_t *ps = (jk_ws_service_t *)(int)s; jk_logger_t *pl = (jk_logger_t *)(int)l; jint rc = JK_FALSE; jboolean iscommit; jbyte *nbuf; unsigned nfrom = (unsigned)from; unsigned ncnt = (unsigned)cnt; jk_log(pl, JK_LOG_DEBUG, "In JNIConnectionHandler::write\n"); if (!ps) { jk_log(pl, JK_LOG_ERROR, "In JNIConnectionHandler::write, NULL ws service object\n"); return JK_FALSE; } nbuf = (*env)->GetByteArrayElements(env, buf, &iscommit); if (!nbuf) { jk_log(pl, JK_LOG_ERROR, "In JNIConnectionHandler::write, GetByteArrayElements error\n"); return JK_FALSE; } if (!ps->write(ps, nbuf + nfrom, ncnt)) { jk_log(pl, JK_LOG_ERROR, "In JNIConnectionHandler::write, failed to write to the web server\n"); } else { rc = (jint) JK_TRUE; } (*env)->ReleaseByteArrayElements(env, buf, nbuf, JNI_ABORT); return rc;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -