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);
               }
           }
       }