You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by hg...@apache.org on 2001/06/22 10:33:57 UTC
cvs commit: jakarta-tomcat-connectors/jk/native/common jk_ajp14.c jk_ajp14_worker.c jk_ajp_common.c jk_worker.c
hgomez 01/06/22 01:33:57
Modified: jk/native/common jk_ajp14.c jk_ajp14_worker.c
jk_ajp_common.c jk_worker.c
Log:
This bunch of code fixes the AJP14 login problem.
Rigth now ajp14 advanced login features works with
the experimental ajp14 I'll commit later today
Revision Changes Path
1.9 +19 -20 jakarta-tomcat-connectors/jk/native/common/jk_ajp14.c
Index: jk_ajp14.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_ajp14.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- jk_ajp14.c 2001/06/18 14:15:23 1.8
+++ jk_ajp14.c 2001/06/22 08:33:56 1.9
@@ -58,7 +58,7 @@
/***************************************************************************
* Description: Next generation bi-directional protocol handler. *
* Author: Henri Gomez <hg...@slib.fr> *
- * Version: $Revision: 1.8 $ *
+ * Version: $Revision: 1.9 $ *
***************************************************************************/
@@ -73,11 +73,12 @@
* Compute the MD5 with ENTROPY / SECRET KEY
*/
-void ajp14_compute_md5(jk_login_service_t *s, jk_logger_t *l)
+void ajp14_compute_md5(jk_login_service_t *s,
+ jk_logger_t *l)
{
jk_md5((const unsigned char *)s->entropy, (const unsigned char *)s->secret_key, s->computed_key);
- jk_log(l, JK_LOG_DEBUG, "Into ajp14_compute_md5 (%s)\n", s->computed_key);
+ jk_log(l, JK_LOG_DEBUG, "Into ajp14_compute_md5 (%s/%s) -> (%s)\n", s->entropy, s->secret_key, s->computed_key);
}
@@ -132,9 +133,9 @@
*
*/
-int ajp14_unmarshal_login_seed(jk_msg_buf_t *msg,
+int ajp14_unmarshal_login_seed(jk_msg_buf_t *msg,
jk_login_service_t *s,
- jk_logger_t *l)
+ jk_logger_t *l)
{
if (jk_b_get_bytes(msg, (unsigned char *)s->entropy, AJP14_ENTROPY_SEED_LEN) < 0) {
jk_log(l, JK_LOG_ERROR, "Error ajp14_unmarshal_login_seed - can't get seed\n");
@@ -169,8 +170,6 @@
if (jk_b_append_byte(msg, AJP14_LOGCOMP_CMD))
return JK_FALSE;
- ajp14_compute_md5(s, l);
-
/*
* COMPUTED-SEED
*/
@@ -192,9 +191,9 @@
*
*/
-int ajp14_unmarshal_log_ok(jk_msg_buf_t *msg,
+int ajp14_unmarshal_log_ok(jk_msg_buf_t *msg,
jk_login_service_t *s,
- jk_logger_t *l)
+ jk_logger_t *l)
{
unsigned long nego;
char * sname;
@@ -237,7 +236,7 @@
*/
int ajp14_unmarshal_log_nok(jk_msg_buf_t *msg,
- jk_logger_t *l)
+ jk_logger_t *l)
{
unsigned long status;
@@ -299,7 +298,7 @@
*
*/
int ajp14_unmarshal_shutdown_nok(jk_msg_buf_t *msg,
- jk_logger_t *l)
+ jk_logger_t *l)
{
unsigned long status;
@@ -367,9 +366,9 @@
*
*/
-int ajp14_marshal_context_query_into_msgb(jk_msg_buf_t *msg,
- char *virtual,
- jk_logger_t *l)
+int ajp14_marshal_context_query_into_msgb(jk_msg_buf_t *msg,
+ char *virtual,
+ jk_logger_t *l)
{
jk_log(l, JK_LOG_DEBUG, "Into ajp14_marshal_context_query_into_msgb\n");
@@ -408,7 +407,7 @@
int ajp14_unmarshal_context_info(jk_msg_buf_t *msg,
jk_context_t *context,
- jk_logger_t *l)
+ jk_logger_t *l)
{
char *sname;
/* char *old; unused */
@@ -479,9 +478,9 @@
*
*/
-int ajp14_marshal_context_state_into_msgb(jk_msg_buf_t *msg,
- jk_context_t *context,
- jk_logger_t *l)
+int ajp14_marshal_context_state_into_msgb(jk_msg_buf_t *msg,
+ jk_context_t *context,
+ jk_logger_t *l)
{
jk_log(l, JK_LOG_DEBUG, "Into ajp14_marshal_context_state_into_msgb\n");
@@ -525,7 +524,7 @@
int ajp14_unmarshal_context_state_reply(jk_msg_buf_t *msg,
jk_context_t *context,
- jk_logger_t *l)
+ jk_logger_t *l)
{
char *sname;
@@ -579,7 +578,7 @@
int ajp14_unmarshal_context_update_cmd(jk_msg_buf_t *msg,
jk_context_t *context,
- jk_logger_t *l)
+ jk_logger_t *l)
{
return (ajp14_unmarshal_context_state_reply(msg, context, l));
}
1.7 +16 -12 jakarta-tomcat-connectors/jk/native/common/jk_ajp14_worker.c
Index: jk_ajp14_worker.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_ajp14_worker.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- jk_ajp14_worker.c 2001/06/19 16:35:20 1.6
+++ jk_ajp14_worker.c 2001/06/22 08:33:56 1.7
@@ -58,7 +58,7 @@
/***************************************************************************
* Description: AJP14 next generation Bi-directional protocol. *
* Author: Henri Gomez <hg...@slib.fr> *
- * Version: $Revision: 1.6 $ *
+ * Version: $Revision: 1.7 $ *
***************************************************************************/
#include "jk_context.h"
@@ -85,6 +85,7 @@
return JK_FALSE;
}
+ /* jk_log(l, JK_LOG_DEBUG, "Into ajp14:validate - secret_key=%s\n", secret_key); */
return JK_TRUE;
}
@@ -117,12 +118,12 @@
jk_log(l, JK_LOG_ERROR, "can't malloc secret_key\n");
return JK_FALSE;
}
-
+
/* Set WebServerName (used at logon time) */
aw->login->web_server_name = strdup(we->server_name);
if (aw->login->web_server_name == NULL) {
- jk_log(l, JK_LOG_ERROR, "can't malloc web_server\n");
+ jk_log(l, JK_LOG_ERROR, "can't malloc web_server_name\n");
return JK_FALSE;
}
@@ -193,13 +194,13 @@
jk_b_reset(msg);
- if ((cmd = jk_b_get_byte(msg)) != AJP14_LOGSEED_CMD) {
- jk_log(l, JK_LOG_ERROR, "Into ajp14:logon - awaited command %d, received command %d\n", AJP14_LOGSEED_CMD, cmd);
+ if (ajp_connection_tcp_get_message(ae, msg, l) != JK_TRUE)
return JK_FALSE;
- }
- if (ajp_connection_tcp_get_message(ae, msg, l) != JK_TRUE)
+ if ((cmd = jk_b_get_byte(msg)) != AJP14_LOGSEED_CMD) {
+ jk_log(l, JK_LOG_ERROR, "Error ajp14:logon: awaited command %d, received %d\n", AJP14_LOGSEED_CMD, cmd);
return JK_FALSE;
+ }
if (ajp14_unmarshal_login_seed(msg, jl, l) != JK_TRUE)
return JK_FALSE;
@@ -222,15 +223,18 @@
switch (jk_b_get_byte(msg)) {
case AJP14_LOGOK_CMD :
- ajp14_unmarshal_log_ok(msg, jl, l);
+ if (ajp14_unmarshal_log_ok(msg, jl, l) == JK_TRUE) {
+ jk_log(l, JK_LOG_DEBUG, "Successfully connected to servlet-engine %s\n", jl->servlet_engine_name);
+ return JK_TRUE;
+ }
break;
case AJP14_LOGNOK_CMD :
ajp14_unmarshal_log_nok(msg, l);
- return JK_FALSE;
+ break;
}
- return JK_TRUE;
+ return JK_FALSE;
}
/*
@@ -250,10 +254,10 @@
msg = jk_b_new(p);
jk_b_set_buffer_size(msg, DEF_BUFFER_SZ);
- rc = handle_logon(ae, msg, l);
- jk_reset_pool(p);
+ if ((rc = handle_logon(ae, msg, l)) == JK_FALSE)
+ ajp_close_endpoint(ae, l);
- return (rc);
+ return rc;
}
1.5 +10 -7 jakarta-tomcat-connectors/jk/native/common/jk_ajp_common.c
Index: jk_ajp_common.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_ajp_common.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- jk_ajp_common.c 2001/06/18 14:15:30 1.4
+++ jk_ajp_common.c 2001/06/22 08:33:56 1.5
@@ -59,7 +59,7 @@
* Description: common stuff for bi-directional protocols ajp13/ajp14. *
* Author: Gal Shachor <sh...@il.ibm.com> *
* Author: Henri Gomez <hg...@slib.fr> *
- * Version: $Revision: 1.4 $ *
+ * Version: $Revision: 1.5 $ *
***************************************************************************/
@@ -770,8 +770,7 @@
* If we failed to reuse a connection, try to reconnect.
*/
if (ae->sd < 0) {
- ajp_connect_to_endpoint(ae, l);
- if (ae->sd >= 0) {
+ if (ajp_connect_to_endpoint(ae, l) == JK_TRUE) {
/*
* After we are connected, each error that we are going to
* have is probably unrecoverable
@@ -1107,8 +1106,8 @@
if (pThis && pThis->worker_private) {
ajp_worker_t *p = pThis->worker_private;
- int port = jk_get_worker_port(props, p->name, port);
- char *host = jk_get_worker_host(props, p->name, host);
+ port = jk_get_worker_port(props, p->name, port);
+ host = jk_get_worker_host(props, p->name, host);
jk_log(l, JK_LOG_DEBUG, "In jk_worker_t::validate for worker %s contact is %s:%d\n", p->name, host, port);
@@ -1184,8 +1183,10 @@
if (pThis && *pThis && (*pThis)->worker_private) {
ajp_worker_t *aw = (*pThis)->worker_private;
- free(aw->name);
+ free(aw->name);
+ jk_log(l, JK_LOG_DEBUG, "Into jk_worker_t::destroy up to %d endpoint to close\n", aw->ep_cache_sz);
+
if(aw->ep_cache_sz) {
unsigned i;
for(i = 0 ; i < aw->ep_cache_sz ; i++) {
@@ -1197,8 +1198,10 @@
JK_DELETE_CS(&(aw->cs), i);
}
- if (aw->login)
+ if (aw->login) {
free(aw->login);
+ aw->login = NULL;
+ }
free(aw);
return JK_TRUE;
1.6 +10 -6 jakarta-tomcat-connectors/jk/native/common/jk_worker.c
Index: jk_worker.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_worker.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- jk_worker.c 2001/06/18 14:16:15 1.5
+++ jk_worker.c 2001/06/22 08:33:56 1.6
@@ -59,7 +59,7 @@
* Description: Workers controller *
* Author: Gal Shachor <sh...@il.ibm.com> *
* Author: Henri Gomez <hg...@slib.fr> *
- * Version: $Revision: 1.5 $ *
+ * Version: $Revision: 1.6 $ *
***************************************************************************/
#define _PLACE_WORKER_LIST_HERE
@@ -67,7 +67,7 @@
#include "jk_worker.h"
#include "jk_util.h"
-static void close_workers(void);
+static void close_workers(jk_logger_t *l);
static worker_factory get_factory_for(char *type);
@@ -101,7 +101,7 @@
num_of_workers,
we,
l)) {
- close_workers();
+ close_workers(l);
return JK_FALSE;
}
@@ -113,7 +113,7 @@
void wc_close(jk_logger_t *l)
{
jk_log(l, JK_LOG_DEBUG, "Into wc_close\n");
- close_workers();
+ close_workers(l);
jk_log(l, JK_LOG_DEBUG, "wc_close, done\n");
}
@@ -189,15 +189,19 @@
return JK_FALSE;
}
-static void close_workers(void)
+static void close_workers(jk_logger_t *l)
{
int sz = map_size(worker_map);
+
+ jk_log(l, JK_LOG_DEBUG, "close_workers got %d workers to destroy\n", sz);
+
if(sz > 0) {
int i;
for(i = 0 ; i < sz ; i++) {
jk_worker_t *w = map_value_at(worker_map, i);
if(w) {
- w->destroy(&w, NULL);
+ jk_log(l, JK_LOG_DEBUG, "close_workers will destroy worker %s\n", map_name_at(worker_map, i));
+ w->destroy(&w, l);
}
}
}