You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@apache.org on 2001/12/05 21:48:21 UTC

cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_ajp14_worker.c jk_channel_socket.c jk_endpoint.c jk_env.c jk_handler_discovery.c jk_handler_logon.c jk_handler_request.c jk_handler_response.c jk_jni_worker.c jk_map.c jk_pool.c jk_registry.c jk_uriMap.c jk_workerEnv.c

costin      01/12/05 12:48:21

  Modified:    jk/native2/common jk_ajp14_worker.c jk_channel_socket.c
                        jk_endpoint.c jk_env.c jk_handler_discovery.c
                        jk_handler_logon.c jk_handler_request.c
                        jk_handler_response.c jk_jni_worker.c jk_map.c
                        jk_pool.c jk_registry.c jk_uriMap.c jk_workerEnv.c
  Log:
  Get rid of most compile warnings.
  
  We still have the handler to resolve ( it'll be a generic interface, similar with
  the workers )
  
  Revision  Changes    Path
  1.4       +114 -107  jakarta-tomcat-connectors/jk/native2/common/jk_ajp14_worker.c
  
  Index: jk_ajp14_worker.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_ajp14_worker.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- jk_ajp14_worker.c	2001/12/04 18:40:42	1.3
  +++ jk_ajp14_worker.c	2001/12/05 20:48:20	1.4
  @@ -72,30 +72,85 @@
   #include "jk_service.h"
   #include "jk_env.h"
   
  -/* Ajp14 methods - XXX move to handler abstraction */
  -int logon(jk_endpoint_t *ae,
  -          jk_logger_t    *l);
  -
  -int discovery(jk_endpoint_t *ae,
  -              jk_workerEnv_t *we,
  -              jk_logger_t    *l);
  +int JK_METHOD jk_worker_ajp14_factory( jk_env_t *env, void **result,
  +                                       char *type, char *name);
   
  -/*
  - * Functions
  - */
  -static int validate(jk_worker_t *pThis,
  -             jk_map_t    *props,
  -             jk_workerEnv_t *we,
  -             jk_logger_t *l );
  +static int JK_METHOD
  +jk_worker_ajp14_service(jk_endpoint_t   *e, jk_ws_service_t *s,
  +                        jk_logger_t     *l, int *is_recoverable_error);
  +
  +static int JK_METHOD
  +jk_worker_ajp14_validate(jk_worker_t *pThis, jk_map_t    *props,
  +                         jk_workerEnv_t *we, jk_logger_t *l );
   
  -int JK_METHOD ajp_done(jk_endpoint_t **e,
  -                       jk_logger_t    *l);
  +static int JK_METHOD
  +jk_worker_ajp14_done(jk_endpoint_t **e, jk_logger_t    *l);
   
  +static int JK_METHOD
  +jk_worker_ajp14_getEndpoint(jk_worker_t *_this, jk_endpoint_t **e,
  +                            jk_logger_t    *l);
   
  +static int JK_METHOD
  +jk_worker_ajp14_init(jk_worker_t *_this, jk_map_t    *props, 
  +                     jk_workerEnv_t *we, jk_logger_t *l);
   
  -/* -------------------- Method -------------------- */
  +static int JK_METHOD
  +jk_worker_ajp14_destroy(jk_worker_t **pThis, jk_logger_t *l);
  +
  +
   #define	JK_RETRIES 3
   
  +/* -------------------- Impl -------------------- */
  +
  +int JK_METHOD jk_worker_ajp14_factory( jk_env_t *env, void **result,
  +                                       char *type, char *name)
  +{
  +    jk_logger_t *l=env->logger;
  +    jk_worker_t *w=(jk_worker_t *)malloc(sizeof(jk_worker_t));
  +   
  +    l->jkLog(l, JK_LOG_DEBUG, "Into ajp14_worker_factory\n");
  +
  +    if (name == NULL || w == NULL) {
  +        l->jkLog(l, JK_LOG_ERROR, "In ajp14_worker_factory, NULL parameters\n");
  +        return JK_FALSE;
  +    }
  +
  +    w->name = strdup(name);
  +    
  +    w->proto= AJP14_PROTO;
  +
  +    w->login= (jk_login_service_t *)malloc(sizeof(jk_login_service_t));
  +
  +    if (w->login == NULL) {
  +        l->jkLog(l, JK_LOG_ERROR,
  +               "In ajp14_worker_factory, malloc failed for login area\n");
  +        return JK_FALSE;
  +    }
  +	
  +    memset(w->login, 0, sizeof(jk_login_service_t));
  +    
  +    w->login->negociation=
  +        (AJP14_CONTEXT_INFO_NEG | AJP14_PROTO_SUPPORT_AJP14_NEG);
  +    w->login->web_server_name=NULL; /* must be set in init */
  +    
  +    w->ep_cache_sz= 0;
  +    w->ep_cache= NULL;
  +    w->connect_retry_attempts= AJP_DEF_RETRY_ATTEMPTS;
  +
  +    w->channel= NULL;
  +   
  +    w->validate= jk_worker_ajp14_validate;
  +    w->init= jk_worker_ajp14_init;
  +    w->get_endpoint= jk_worker_ajp14_getEndpoint;
  +    w->destroy=jk_worker_ajp14_destroy;
  +
  +    w->logon= NULL; 
  +
  +    *result = w;
  +
  +    return JK_TRUE;
  +}
  +
   /*
    * service is now splitted in ajp_send_request and ajp_get_reply
    * much more easier to do errors recovery
  @@ -103,10 +158,11 @@
    * We serve here the request, using AJP13/AJP14 (e->proto)
    *
    */
  -int JK_METHOD ajp_service(jk_endpoint_t   *e, 
  -                          jk_ws_service_t *s,
  -                          jk_logger_t     *l,
  -                          int             *is_recoverable_error)
  +static int JK_METHOD
  +jk_worker_ajp14_service(jk_endpoint_t   *e, 
  +                        jk_ws_service_t *s,
  +                        jk_logger_t     *l,
  +                        int  *is_recoverable_error)
   {
       int i;
       int err;
  @@ -215,10 +271,11 @@
   /*
    * Validate the worker (ajp13/ajp14)
    */
  -static int validate(jk_worker_t *pThis,
  -                    jk_map_t    *props,
  -                    jk_workerEnv_t *we,
  -                    jk_logger_t *l)
  +static int JK_METHOD
  +jk_worker_ajp14_validate(jk_worker_t *pThis,
  +                         jk_map_t    *props,
  +                         jk_workerEnv_t *we,
  +                         jk_logger_t *l)
   {
       int    port;
       char * host;
  @@ -278,15 +335,9 @@
   }
   
   
  -int ajp_destroy(jk_worker_t **pThis,
  -                jk_logger_t *l,
  -                int          proto)
  +static int JK_METHOD
  +jk_worker_ajp14_done(jk_endpoint_t **e,jk_logger_t    *l)
   {
  -}
  -
  -int JK_METHOD ajp_done(jk_endpoint_t **e,
  -                       jk_logger_t    *l)
  -{
       l->jkLog(l, JK_LOG_DEBUG, "Into jk_endpoint_t::done\n");
   
       if (e && *e ) {
  @@ -301,7 +352,7 @@
                   int rc;
                   JK_ENTER_CS(&w->cs, rc);
                   if(rc) {
  -                    unsigned i;
  +                    int i;
   
                       for(i = 0 ; i < w->ep_cache_sz ; i++) {
                           if(!w->ep_cache[i]) {
  @@ -328,9 +379,10 @@
       return JK_FALSE;
   }
   
  -static int JK_METHOD get_endpoint(jk_worker_t *_this,
  -                                  jk_endpoint_t **e,
  -                                  jk_logger_t    *l)
  +static int JK_METHOD
  +jk_worker_ajp14_getEndpoint(jk_worker_t *_this,
  +                            jk_endpoint_t **e,
  +                            jk_logger_t    *l)
   {
       jk_endpoint_t *ae = NULL;
   
  @@ -343,7 +395,7 @@
           int rc;
           JK_ENTER_CS(&_this->cs, rc);
           if (rc) {
  -            unsigned i;
  +            int i;
               
               for (i = 0 ; i < _this->ep_cache_sz ; i++) {
                   if (_this->ep_cache[i]) {
  @@ -372,16 +424,17 @@
       ae->worker = _this;
       ae->proto = _this->proto;
       ae->channelData = NULL;
  -    ae->service = ajp_service;
  -    ae->done = ajp_done;
  +    ae->service = jk_worker_ajp14_service;
  +    ae->done = jk_worker_ajp14_done;
       *e = ae;
       return JK_TRUE;
   }
   
  -static int JK_METHOD init(jk_worker_t *_this,
  -                          jk_map_t    *props, 
  -                          jk_workerEnv_t *we,
  -                          jk_logger_t *l)
  +static int JK_METHOD
  +jk_worker_ajp14_init(jk_worker_t *_this,
  +                     jk_map_t    *props, 
  +                     jk_workerEnv_t *we,
  +                     jk_logger_t *l)
   {
       jk_endpoint_t *ae;
       int             rc;
  @@ -436,26 +489,29 @@
           l->jkLog(l, JK_LOG_ERROR, "can't malloc web_server_name\n");
           return JK_FALSE;
       }
  -    
  -    if (get_endpoint(_this, &ae, l) == JK_FALSE)
  -        return JK_FALSE;
       
  -    if (ajp_connect_to_endpoint(ae, l) == JK_TRUE) {
  +/*     if (get_endpoint(_this, &ae, l) == JK_FALSE) */
  +/*         return JK_FALSE; */
  +
  +    /* Temporary commented out. Will be added back after fixing
  +       few more things ( like what happens if apache is started before tomcat).
  +     */
  +/*     if (ajp_connect_to_endpoint(ae, l) == JK_TRUE) { */
           
  -	/* connection stage passed - try to get context info
  -	 * this is the long awaited autoconf feature :)
  -	 */
  -        rc = discovery(ae, we, l);
  -        ajp_close_endpoint(ae, l);
  -        return rc;
  -    }
  + 	/* connection stage passed - try to get context info 
  + 	 * this is the long awaited autoconf feature :) 
  + 	 */ 
  +/*         rc = discovery(ae, we, l); */
  +/*         ajp_close_endpoint(ae, l); */
  +/*         return rc; */
  +/*     } */
       
       return JK_TRUE;
   }
   
   
  -static int JK_METHOD destroy(jk_worker_t **pThis,
  -                             jk_logger_t *l)
  +static int JK_METHOD
  +jk_worker_ajp14_destroy(jk_worker_t **pThis, jk_logger_t *l)
   {
       jk_worker_t *aw = *pThis;
       
  @@ -485,7 +541,7 @@
                aw->ep_cache_sz);
   
       if(aw->ep_cache_sz > 0 ) {
  -        unsigned i;
  +        int i;
           for(i = 0 ; i < aw->ep_cache_sz ; i++) {
               if(aw->ep_cache[i]) {
                   ajp_close_endpoint(aw->ep_cache[i], l);
  @@ -501,54 +557,5 @@
       }
   
       free(aw);
  -    return JK_TRUE;
  -}
  -
  -int JK_METHOD jk_worker_ajp14_factory( jk_env_t *env, void **result,
  -                                       char *type, char *name)
  -{
  -    jk_logger_t *l=env->logger;
  -    jk_worker_t *w=(jk_worker_t *)malloc(sizeof(jk_worker_t));
  -   
  -    l->jkLog(l, JK_LOG_DEBUG, "Into ajp14_worker_factory\n");
  -
  -    if (name == NULL || w == NULL) {
  -        l->jkLog(l, JK_LOG_ERROR, "In ajp14_worker_factory, NULL parameters\n");
  -        return JK_FALSE;
  -    }
  -
  -    w->name = strdup(name);
  -    
  -    w->proto= AJP14_PROTO;
  -
  -    w->login= (jk_login_service_t *)malloc(sizeof(jk_login_service_t));
  -
  -    if (w->login == NULL) {
  -        l->jkLog(l, JK_LOG_ERROR,
  -               "In ajp14_worker_factory, malloc failed for login area\n");
  -        return JK_FALSE;
  -    }
  -	
  -    memset(w->login, 0, sizeof(jk_login_service_t));
  -    
  -    w->login->negociation=
  -        (AJP14_CONTEXT_INFO_NEG | AJP14_PROTO_SUPPORT_AJP14_NEG);
  -    w->login->web_server_name=NULL; /* must be set in init */
  -    
  -    w->ep_cache_sz= 0;
  -    w->ep_cache= NULL;
  -    w->connect_retry_attempts= AJP_DEF_RETRY_ATTEMPTS;
  -
  -    w->channel= NULL;
  -   
  -    w->validate= validate;
  -    w->init= init;
  -    w->get_endpoint= get_endpoint;
  -    w->destroy=destroy;
  -
  -    w->logon= logon; 
  -
  -    *result = w;
  -
       return JK_TRUE;
   }
  
  
  
  1.4       +6 -2      jakarta-tomcat-connectors/jk/native2/common/jk_channel_socket.c
  
  Index: jk_channel_socket.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_channel_socket.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- jk_channel_socket.c	2001/12/04 19:04:48	1.3
  +++ jk_channel_socket.c	2001/12/05 20:48:20	1.4
  @@ -107,9 +107,13 @@
   
   int JK_METHOD jk_channel_socket_factory(jk_env_t *env, void **result,
   					char *type, char *name);
  +
   static int JK_METHOD jk_channel_socket_resolve(char *host, short port,
   				     struct sockaddr_in *rc);
   
  +static int JK_METHOD jk_channel_socket_close(jk_channel_t *_this,
  +                                      jk_endpoint_t *endpoint);
  +
   static int JK_METHOD jk_channel_socket_getProperty(jk_channel_t *_this, 
   					 char *name, char **value)
   {
  @@ -290,8 +294,8 @@
   
   /** close the socket  ( was: jk_close_socket )
   */
  -int JK_METHOD jk_channel_socket_close(jk_channel_t *_this,
  -                                      jk_endpoint_t *endpoint)
  +static int JK_METHOD jk_channel_socket_close(jk_channel_t *_this,
  +                                             jk_endpoint_t *endpoint)
   {
       int sd;
       jk_channel_socket_data_t *chD=endpoint->channelData;
  
  
  
  1.3       +29 -36    jakarta-tomcat-connectors/jk/native2/common/jk_endpoint.c
  
  Index: jk_endpoint.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_endpoint.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- jk_endpoint.c	2001/12/04 23:56:07	1.2
  +++ jk_endpoint.c	2001/12/05 20:48:20	1.3
  @@ -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.2 $                                           *
  + * Version:     $Revision: 1.3 $                                           *
    ***************************************************************************/
   
   
  @@ -68,6 +68,18 @@
   #include "jk_env.h"
   #include "jk_requtil.h"
   
  +/* Private methods */
  +
  +static int ajp_read_fully_from_server(jk_ws_service_t *s,
  +                                      unsigned char   *buf,
  +                                      unsigned         len);
  +
  +static int ajp_process_callback(jk_msg_buf_t *msg, 
  +                                jk_msg_buf_t *pmsg,
  +                                jk_endpoint_t *ae,
  +                                jk_ws_service_t *r, 
  +                                jk_logger_t *l);
  +
   /*
    * Reset the endpoint (clean buf)
    */
  @@ -80,7 +92,6 @@
   /*
    * Close the endpoint (clean buf and close socket)
    */
  -
   void ajp_close_endpoint(jk_endpoint_t *ae,
                           jk_logger_t    *l)
   {
  @@ -98,7 +109,7 @@
   int ajp_connect_to_endpoint(jk_endpoint_t *ae,
                               jk_logger_t    *l)
   {
  -    unsigned attempt;
  +    int attempt;
   
       for(attempt = 0 ; attempt < ae->worker->connect_retry_attempts ; attempt++) {
   	jk_channel_t *channel=ae->worker->channel;
  @@ -120,7 +131,6 @@
   /*
    * Send a message to endpoint, using corresponding PROTO HEADER
    */
  -
   int ajp_connection_tcp_send_message(jk_endpoint_t *ae,
                                       jk_msg_buf_t   *msg,
                                       jk_logger_t    *l)
  @@ -216,9 +226,9 @@
    * read, so we must loop up to all awaited data are received 
    */
   
  -int ajp_read_fully_from_server(jk_ws_service_t *s,
  -                               unsigned char   *buf,
  -                               unsigned         len)
  +static int ajp_read_fully_from_server(jk_ws_service_t *s,
  +                                      unsigned char   *buf,
  +                                      unsigned         len)
   {
       unsigned rdlen = 0;
       unsigned padded_len = len;
  @@ -384,7 +394,7 @@
   	 * doing a read (not yet) 
   	 */
   	if (s->is_chunked || e->left_bytes_to_send > 0) {
  -	    unsigned len = e->left_bytes_to_send;
  +	    int len = e->left_bytes_to_send;
   	    if (len > AJP13_MAX_SEND_BODY_SZ) 
   		len = AJP13_MAX_SEND_BODY_SZ;
               len = ajp_read_into_msg_buff(e, s, e->post, len, l);
  @@ -408,46 +418,29 @@
    * What to do with incoming data (dispatcher)
    */
   
  -int ajp_process_callback(jk_msg_buf_t *msg, 
  -                         jk_msg_buf_t *pmsg,
  -                         jk_endpoint_t *ae,
  -                         jk_ws_service_t *r, 
  -                         jk_logger_t *l) 
  +static int ajp_process_callback(jk_msg_buf_t *msg, 
  +                                jk_msg_buf_t *pmsg,
  +                                jk_endpoint_t *ae,
  +                                jk_ws_service_t *r, 
  +                                jk_logger_t *l) 
   {
       int code = (int)jk_b_get_byte(msg);
  +    int err;
   
       switch(code) {
       case JK_AJP13_SEND_HEADERS:
  -        {
  -            if (!ajp_unmarshal_response(msg, r, ae, l)) {
  -                l->jkLog(l, JK_LOG_ERROR, "Error ajp_process_callback - ajp_unmarshal_response failed\n");
  -                return JK_AJP13_ERROR;
  -            }
  -            if (!r->start_response(r, 
  -                                   r->status, 
  -                                   r->msg, 
  -                                   (const char * const *)r->out_header_names,
  -                                   (const char * const *)r->out_header_values,
  -                                   r->out_headers)) {
  -                l->jkLog(l, JK_LOG_ERROR, "Error ajp_process_callback - start_response failed\n");
  -                return JK_CLIENT_ERROR;
  -            }
  -        }
  +        err=ajp_handle_response( msg, r, ae, l );
  +        return err;
           break;
           
       case JK_AJP13_SEND_BODY_CHUNK:
  -        {
  -            unsigned len = (unsigned)jk_b_get_int(msg);
  -            if(!r->write(r, jk_b_get_buff(msg) + jk_b_get_pos(msg), len)) {
  -                l->jkLog(l, JK_LOG_ERROR, "Error ajp_process_callback - write failed\n");
  -                return JK_CLIENT_ERROR;
  -            }
  -        }
  +        return ajp_handle_sendChunk( msg, r, ae, l);
           break;
           
       case JK_AJP13_GET_BODY_CHUNK:
           {
  -            unsigned len = (unsigned)jk_b_get_int(msg);
  +            /* XXX Is it signed or not ? */
  +            int len = jk_b_get_int(msg);
               
               if(len > AJP13_MAX_SEND_BODY_SZ) {
                   len = AJP13_MAX_SEND_BODY_SZ;
  
  
  
  1.3       +2 -2      jakarta-tomcat-connectors/jk/native2/common/jk_env.c
  
  Index: jk_env.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_env.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- jk_env.c	2001/12/02 01:05:25	1.2
  +++ jk_env.c	2001/12/05 20:48:20	1.3
  @@ -62,7 +62,7 @@
   
   /* Private methods 
   */
  -static jk_env_initEnv( jk_env_t *env, char *id );
  +static void jk_env_initEnv( jk_env_t *env, char *id );
   
   /* XXX We should have one env per thread to avoid sync problems. 
      The env will provide access to pools, etc 
  @@ -144,7 +144,7 @@
     map_put( env->_registry, typeName, fact, &old );
   }
   
  -static jk_env_initEnv( jk_env_t *env, char *id ) {
  +static void jk_env_initEnv( jk_env_t *env, char *id ) {
     /*   env->logger=NULL; */
     /*   map_alloc( & env->properties ); */
     env->getFactory= jk_env_getFactory; 
  
  
  
  1.5       +67 -18    jakarta-tomcat-connectors/jk/native2/common/jk_handler_discovery.c
  
  Index: jk_handler_discovery.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_handler_discovery.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- jk_handler_discovery.c	2001/12/04 23:56:07	1.4
  +++ jk_handler_discovery.c	2001/12/05 20:48:20	1.5
  @@ -58,14 +58,16 @@
   /**
    * Description: AJP14 Discovery handler
    * Author:      Henri Gomez <hg...@slib.fr>
  - * Version:     $Revision: 1.4 $                                          
  + * Version:     $Revision: 1.5 $                                          
    */
   
   #include "jk_global.h"
   #include "jk_pool.h"
  +#include "jk_env.h"
   #include "jk_msg_buff.h"
   #include "jk_logger.h"
   #include "jk_service.h"
  +#include "jk_handler.h"
   
   #define CBASE_INC_SIZE   (8)    /* Allocate memory by step of 8 URIs : ie 8 URI by context */
   #define URI_INC_SIZE (8)        /* Allocate memory by step of 8 CONTEXTs : ie 8 contexts by worker */
  @@ -137,6 +139,35 @@
   
   int context_add_uri(jk_context_t *c, char *cbase, char *uri);
   
  +static int jk_handler_discovery_init( jk_worker_t *w );
  +
  +static int jk_handler_discovery_discovery(jk_endpoint_t *ae,jk_workerEnv_t *we,
  +                                          jk_logger_t *l);
  +
  +static int ajp14_marshal_context_query_into_msgb(jk_msg_buf_t *msg,
  +                                                 char         *virtual,
  +                                                 jk_logger_t  *l);
  +
  +static int ajp14_unmarshal_context_info(jk_msg_buf_t *msg,
  +                                        jk_context_t *c,
  +                                        jk_logger_t  *l);
  +
  +static int ajp14_marshal_context_state_into_msgb(jk_msg_buf_t *msg,
  +                                                 jk_context_t *c,
  +                                                 char         *cname,
  +                                                 jk_logger_t  *l);
  +
  +static int ajp14_unmarshal_context_state_reply(jk_msg_buf_t *msg,
  +                                               jk_context_t *c,
  +                                               jk_logger_t  *l);
  +
  +static int ajp14_unmarshal_context_update_cmd(jk_msg_buf_t *msg,
  +                                              jk_context_t *c,
  +                                              jk_logger_t  *l);
  +
  +int JK_METHOD jk_handler_discovery_factory( jk_env_t *env, void **result,
  +                                            char *type, char *name);
  +
   /*
    * Context Query (web server -> servlet engine), which URI are handled by servlet engine ?
    */
  @@ -163,6 +194,24 @@
    */
   #define AJP14_CONTEXT_STATE_REP_CMD	(unsigned char)0x1D
   
  +/* ==================== Constructor and impl. ==================== */
  +
  +int JK_METHOD jk_handler_discovery_factory( jk_env_t *env, void **result,
  +                                            char *type, char *name)
  +{
  +    jk_handler_t *h=(jk_handler_t *)malloc( sizeof( jk_handler_t));
  +
  +    h->init=jk_handler_discovery_init;
  +    *result=h;
  +    return JK_TRUE;
  +}
  +
  +
  +static int jk_handler_discovery_init( jk_worker_t *w ) {
  +    return JK_TRUE;
  +}
  +
  +
   static int context_realloc(jk_context_t *c)
   {
       if (c->size == c->capacity) {
  @@ -331,7 +380,7 @@
       return JK_TRUE;
   }
    
  -int discovery(jk_endpoint_t *ae,
  +static int jk_handler_discovery_discovery(jk_endpoint_t *ae,
                 jk_workerEnv_t *we,
                 jk_logger_t    *l)
   {
  @@ -360,9 +409,9 @@
    * +--------------------------+---------------------------------+
    *
    */
  -int ajp14_marshal_context_query_into_msgb(jk_msg_buf_t *msg,
  -                                          char         *virtual,
  -                                          jk_logger_t  *l)
  +static int ajp14_marshal_context_query_into_msgb(jk_msg_buf_t *msg,
  +                                                 char         *virtual,
  +                                                 jk_logger_t  *l)
   {
       l->jkLog(l, JK_LOG_DEBUG, "Into ajp14_marshal_context_query_into_msgb\n");
       
  @@ -404,9 +453,9 @@
    *-------------------+-------------------------------+-----------+
    */
   
  -int ajp14_unmarshal_context_info(jk_msg_buf_t *msg,
  -                                 jk_context_t *c,
  -                                 jk_logger_t  *l)
  +static int ajp14_unmarshal_context_info(jk_msg_buf_t *msg,
  +                                        jk_context_t *c,
  +                                        jk_logger_t  *l)
   {
       char *vname;
       char *cname;
  @@ -505,10 +554,10 @@
    * +----------------------------+----------------------------------+----------
    *
    */
  -int ajp14_marshal_context_state_into_msgb(jk_msg_buf_t *msg,
  -                                          jk_context_t *c,
  -                                          char         *cname,
  -                                          jk_logger_t  *l)
  +static int ajp14_marshal_context_state_into_msgb(jk_msg_buf_t *msg,
  +                                                 jk_context_t *c,
  +                                                 char         *cname,
  +                                                 jk_logger_t  *l)
   {
       jk_context_item_t *ci;
       int                i;
  @@ -594,9 +643,9 @@
    *CONTEXT NAME (CString (*)) | UP/DOWN (1 byte) | .. |
    * ------------------------+------------------+----+
    */
  -int ajp14_unmarshal_context_state_reply(jk_msg_buf_t *msg,
  -                                        jk_context_t *c,
  -                                        jk_logger_t  *l)
  +static int ajp14_unmarshal_context_state_reply(jk_msg_buf_t *msg,
  +                                               jk_context_t *c,
  +                                               jk_logger_t  *l)
   {
       char                *vname;
       char                *cname;
  @@ -666,9 +715,9 @@
    * ----------------------+------------------+
    * 
    */
  -int ajp14_unmarshal_context_update_cmd(jk_msg_buf_t *msg,
  -                                       jk_context_t *c,
  -                                       jk_logger_t  *l)
  +static int ajp14_unmarshal_context_update_cmd(jk_msg_buf_t *msg,
  +                                              jk_context_t *c,
  +                                              jk_logger_t  *l)
   {
       return (ajp14_unmarshal_context_state_reply(msg, c, l));
   }
  
  
  
  1.4       +32 -3     jakarta-tomcat-connectors/jk/native2/common/jk_handler_logon.c
  
  Index: jk_handler_logon.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_handler_logon.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- jk_handler_logon.c	2001/12/04 19:04:48	1.3
  +++ jk_handler_logon.c	2001/12/05 20:48:20	1.4
  @@ -58,7 +58,7 @@
   /**
    * Description: AJP14 Login handler
    * Author:      Henri Gomez <hg...@slib.fr>
  - * Version:     $Revision: 1.3 $                                          
  + * Version:     $Revision: 1.4 $                                          
    */
   
   #include "jk_global.h"
  @@ -67,6 +67,8 @@
   #include "jk_md5.h"
   #include "jk_logger.h"
   #include "jk_service.h"
  +#include "jk_env.h"
  +#include "jk_handler.h"
   
   /* Private definitions */
   
  @@ -95,7 +97,10 @@
    */
   #define AJP14_LOGNOK_CMD	(unsigned char)0x14
   
  +int JK_METHOD jk_handler_logon_factory( jk_env_t *env, void **result,
  +                                        char *type, char *name);
   
  +
   /* Private functions */
   
   static void ajp14_compute_md5(jk_login_service_t *s, 
  @@ -121,6 +126,28 @@
                                      jk_logger_t *l);
   
   
  +static int jk_handler_logon_logon(jk_endpoint_t *ae, jk_logger_t    *l);
  +static int jk_handler_logon_init( jk_worker_t *w );
  +
  +/* ==================== Impl =================== */
  +
  +int JK_METHOD jk_handler_logon_factory( jk_env_t *env, void **result,
  +                                       char *type, char *name)
  +{
  +    jk_handler_t *h=(jk_handler_t *)malloc( sizeof( jk_handler_t));
  +
  +    h->init=jk_handler_logon_init;
  +    *result=h;
  +    return JK_TRUE;
  +}
  +
  +
  +static int jk_handler_logon_init( jk_worker_t *w ) {
  +    w->logon= jk_handler_logon_logon; 
  +    return JK_TRUE;
  +}
  +
  +
   /* 
    * AJP14 Logon Phase 
    *
  @@ -192,9 +219,10 @@
       
       return JK_FALSE;
   }
  +
   
  -int logon(jk_endpoint_t *ae,
  -          jk_logger_t    *l)
  +static int jk_handler_logon_logon(jk_endpoint_t *ae,
  +                           jk_logger_t    *l)
   {
       jk_pool_t     *p = &ae->pool;
       jk_msg_buf_t  *msg;
  @@ -210,6 +238,7 @@
       
       return rc;
   }
  +
   
   /* -------------------- private utils/marshaling -------------------- */
   
  
  
  
  1.2       +5 -0      jakarta-tomcat-connectors/jk/native2/common/jk_handler_request.c
  
  Index: jk_handler_request.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_handler_request.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- jk_handler_request.c	2001/12/04 18:37:13	1.1
  +++ jk_handler_request.c	2001/12/05 20:48:20	1.2
  @@ -87,6 +87,11 @@
   #define SC_A_SSL_KEY_SIZE       (unsigned char)11		/* only in if JkOptions +ForwardKeySize */
   #define SC_A_ARE_DONE           (unsigned char)0xFF
   
  +int jk_handler_request_marshal(jk_msg_buf_t    *msg,
  +                               jk_ws_service_t *s,
  +                               jk_logger_t     *l,
  +                               jk_endpoint_t  *ae);
  +
   /**
     Message structure
    
  
  
  
  1.3       +103 -4    jakarta-tomcat-connectors/jk/native2/common/jk_handler_response.c
  
  Index: jk_handler_response.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_handler_response.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- jk_handler_response.c	2001/12/04 23:56:07	1.2
  +++ jk_handler_response.c	2001/12/05 20:48:20	1.3
  @@ -60,7 +60,106 @@
   #include "jk_msg_buff.h"
   #include "jk_env.h"
   #include "jk_requtil.h"
  +#include "jk_env.h"
  +#include "jk_handler.h"
  +#include "jk_endpoint.h"
  +
  +static int ajp_unmarshal_response(jk_msg_buf_t   *msg,
  +                                  jk_ws_service_t  *s,
  +                                  jk_endpoint_t *ae,
  +                                  jk_logger_t    *l);
  +
  +int ajp_handle_sendChunk(jk_msg_buf_t   *msg,
  +                         jk_ws_service_t  *r,
  +                         jk_endpoint_t *ae,
  +                         jk_logger_t    *l);
  +
  +
  +int ajp_handle_startResponse(jk_msg_buf_t   *msg,
  +                             jk_ws_service_t  *r,
  +                             jk_endpoint_t *ae,
  +                             jk_logger_t    *l);
  +
  +int ajp_handle_getChunk(jk_msg_buf_t   *msg,
  +                         jk_ws_service_t  *r,
  +                         jk_endpoint_t *ae,
  +                         jk_logger_t    *l);
   
  +/** SEND_HEADERS handler
  + */
  +int ajp_handle_startResponse(jk_msg_buf_t   *msg,
  +                             jk_ws_service_t  *r,
  +                             jk_endpoint_t *ae,
  +                             jk_logger_t    *l)
  +{
  +    int err;
  +    
  +    err=ajp_unmarshal_response(msg, r, ae, l);
  +    if( err!=JK_TRUE ) {
  +        l->jkLog(l, JK_LOG_ERROR, "Error ajp_process_callback - ajp_unmarshal_response failed\n");
  +        return JK_AJP13_ERROR;
  +    }
  +    err=r->start_response(r, r->status, r->msg, 
  +                          (const char * const *)r->out_header_names,
  +                          (const char * const *)r->out_header_values,
  +                          r->out_headers);
  +    if( err!=JK_TRUE ) {
  +        l->jkLog(l, JK_LOG_ERROR, "Error ajp_process_callback - start_response failed\n");
  +        return JK_CLIENT_ERROR;
  +    }
  +    return JK_TRUE;
  +}
  +
  +/** SEND_BODY_CHUNK handler
  + */
  +int ajp_handle_sendChunk(jk_msg_buf_t   *msg,
  +                         jk_ws_service_t  *r,
  +                         jk_endpoint_t *ae,
  +                         jk_logger_t    *l)
  +{
  +    int err;
  +    unsigned len = (unsigned)jk_b_get_int(msg);
  +
  +    err=r->write(r, jk_b_get_buff(msg) + jk_b_get_pos(msg), len);
  +    if( err!= JK_TRUE ) {
  +        l->jkLog(l, JK_LOG_ERROR, "Error ajp_process_callback - write failed\n");
  +        return JK_CLIENT_ERROR;
  +    }
  +
  +    return JK_TRUE;
  +}
  +
  +/** SEND_BODY_CHUNK handler
  + */
  +int ajp_handle_getChunk(jk_msg_buf_t   *msg,
  +                        jk_ws_service_t  *r,
  +                        jk_endpoint_t *ae,
  +                        jk_logger_t    *l)
  +{
  +    int len = jk_b_get_int(msg);
  +    
  +    if(len > AJP13_MAX_SEND_BODY_SZ) {
  +        len = AJP13_MAX_SEND_BODY_SZ;
  +    }
  +    if(len > ae->left_bytes_to_send) {
  +        len = ae->left_bytes_to_send;
  +    }
  +    if(len < 0) {
  +        len = 0;
  +    }
  +            
  +    /* the right place to add file storage for upload */
  +    if ((len = ajp_read_into_msg_buff(ae, r, msg, len, l)) >= 0) {
  +        r->content_read += len;
  +        return JK_AJP13_HAS_RESPONSE;
  +    }                  
  +            
  +    l->jkLog(l, JK_LOG_ERROR, "Error ajp_process_callback - ajp_read_into_msg_buff failed\n");
  +    return JK_INTERNAL_ERROR;	    
  +}
  +
  +
  +
   
   /*
   AJPV13_RESPONSE/AJPV14_RESPONSE:=
  @@ -86,10 +185,10 @@
       body    length*(var binary)
   
    */
  -int ajp_unmarshal_response(jk_msg_buf_t   *msg,
  -                           jk_ws_service_t  *s,
  -                           jk_endpoint_t *ae,
  -                           jk_logger_t    *l)
  +static int ajp_unmarshal_response(jk_msg_buf_t   *msg,
  +                                  jk_ws_service_t  *s,
  +                                  jk_endpoint_t *ae,
  +                                  jk_logger_t    *l)
   {
       jk_pool_t * p = &ae->pool;
   
  
  
  
  1.6       +24 -17    jakarta-tomcat-connectors/jk/native2/common/jk_jni_worker.c
  
  Index: jk_jni_worker.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_jni_worker.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- jk_jni_worker.c	2001/12/04 23:52:43	1.5
  +++ jk_jni_worker.c	2001/12/05 20:48:20	1.6
  @@ -59,7 +59,7 @@
    * Description: In process JNI worker                                      *
    * Author:      Gal Shachor <sh...@il.ibm.com>                           *
    * Based on:                                                               *
  - * Version:     $Revision: 1.5 $                                           *
  + * Version:     $Revision: 1.6 $                                           *
    ***************************************************************************/
   
   #if !defined(WIN32) && !defined(NETWARE)
  @@ -193,6 +193,8 @@
   };
   typedef struct jni_endpoint jni_endpoint_t;
   
  +int JK_METHOD jk_worker_jni_factory(jk_env_t *env, void **result,
  +                                    char *type, char *name);
   
   static int load_jvm_dll(jni_worker_t *p,
                           jk_logger_t *l);
  @@ -228,7 +230,15 @@
   static void detach_from_jvm(jni_worker_t *p, 
                               jk_logger_t *l);
   
  +static char **jk_parse_sysprops(jk_pool_t *p, 
  +                                const char *sysprops);
  +
  +static int jk_file_exists(const char *f);
  +
  +static void jk_append_libpath(jk_pool_t *p, 
  +                              const char *libpath);
   
  +
   #if defined LINUX && defined APACHE2_SIGHACK
   static void linux_signal_hack() 
   {
  @@ -254,9 +264,8 @@
       printf( "\n");
   }
   #endif
  -
   
  -char **jk_parse_sysprops(jk_pool_t *p, 
  +static char **jk_parse_sysprops(jk_pool_t *p, 
                            const char *sysprops)
   {
       char **rc = NULL;
  @@ -290,8 +299,7 @@
       return rc;
   }
   
  -
  -int jk_file_exists(const char *f)
  +static int jk_file_exists(const char *f)
   {
       if(f) {
           struct stat st;
  @@ -303,8 +311,8 @@
   }
   
   
  -void jk_append_libpath(jk_pool_t *p, 
  -                       const char *libpath)
  +static void jk_append_libpath(jk_pool_t *p, 
  +                              const char *libpath)
   {
       char *env = NULL;
       char *current = getenv(PATH_ENV_VARIABLE);
  @@ -703,22 +711,21 @@
                                       char *type, char *name)
   {
       jk_logger_t *l=env->logger;
  -    jk_worker_t **w=result;
       jni_worker_t *private_data;
   
       l->jkLog(l, JK_LOG_DEBUG, "Into jni_worker_factory\n");
   
  -    if(!name || !w) {
  +    if(!name) {
   	    l->jkLog(l, JK_LOG_EMERG, 
                  "In jni_worker_factory, assert failed - invalid parameters\n");
   	    return JK_FALSE;
       }
   
       if(the_singleton_jni_worker) {
  -	    l->jkLog(l, JK_LOG_DEBUG, 
  -               "In jni_worker_factory, instance already created\n");
  -        *w = the_singleton_jni_worker;
  -	    return JK_TRUE;
  +        l->jkLog(l, JK_LOG_DEBUG, 
  +                 "In jni_worker_factory, instance already created\n");
  +        *result = the_singleton_jni_worker;
  +        return JK_TRUE;
       }
   
       private_data = (jni_worker_t *)malloc(sizeof(jni_worker_t ));
  @@ -730,15 +737,15 @@
       }
   
       jk_open_pool(&private_data->p,
  -	             private_data->buf,
  +                 private_data->buf,
                    sizeof(jk_pool_atom_t) * TINY_POOL_SIZE);
   
       private_data->name = private_data->p.pstrdup(&private_data->p, name);
   
       if(!private_data->name) {
           l->jkLog(l, JK_LOG_ERROR, 
  -               "In jni_worker_factory, memory allocation error\n");
  -	    private_data->p.close(&private_data->p);
  +                 "In jni_worker_factory, memory allocation error\n");
  +        private_data->p.close(&private_data->p);
           free(private_data);
           return JK_FALSE;
       }
  @@ -771,7 +778,7 @@
       private_data->worker.get_endpoint   = get_endpoint;
       private_data->worker.destroy        = destroy;
   
  -    *w = &private_data->worker;
  +    *result = &private_data->worker;
       the_singleton_jni_worker = &private_data->worker;
   
       l->jkLog(l, JK_LOG_DEBUG, "Done jni_worker_factory\n");
  
  
  
  1.4       +41 -2     jakarta-tomcat-connectors/jk/native2/common/jk_map.c
  
  Index: jk_map.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_map.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- jk_map.c	2001/12/04 23:56:07	1.3
  +++ jk_map.c	2001/12/05 20:48:20	1.4
  @@ -58,7 +58,7 @@
   /***************************************************************************
    * Description: General purpose map object                                 *
    * Author:      Gal Shachor <sh...@il.ibm.com>                           *
  - * Version:     $Revision: 1.3 $                                           *
  + * Version:     $Revision: 1.4 $                                           *
    ***************************************************************************/
   
   #include "jk_global.h"
  @@ -512,7 +512,7 @@
                        const char *objType,
                        const char *objName,
                        const char *pname,
  -                     const char *def)
  +                     char *def)
   {
       char buf[1024];
   
  @@ -544,5 +544,44 @@
   
       sprintf(buf, "%s.%s.%s", objType, objName, pname);
       return map_get_int(m, buf, def);
  +}
  +
  +double map_getDoubleProp(jk_map_t *m,
  +                         const char *objType,
  +                         const char *objName,
  +                         const char *pname,
  +                         const double def)
  +{
  +    char buf[1024];
  +
  +    if( m==NULL ||
  +        objType==NULL ||
  +        objName==NULL ||
  +        pname==NULL ) {
  +        return def;
  +    }
  +
  +    sprintf(buf, "%s.%s.%s", objType, objName, pname);
  +    return map_get_double(m, buf, def);
  +}
  +
  +char **map_getListProp(jk_map_t *m,
  +                    const char *objType,
  +                    const char *objName,
  +                    const char *pname, 
  +                    unsigned *size)
  +{
  +    char buf[1024];
  +
  +    if( m==NULL ||
  +        objType==NULL ||
  +        objName==NULL ||
  +        pname==NULL ) {
  +        return NULL;
  +    }
  +
  +    sprintf(buf, "%s.%s.%s", objType, objName, pname);
  +
  +    return map_get_string_list(m, buf, size, NULL);
   }
   
  
  
  
  1.3       +22 -6     jakarta-tomcat-connectors/jk/native2/common/jk_pool.c
  
  Index: jk_pool.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_pool.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- jk_pool.c	2001/12/04 23:56:07	1.2
  +++ jk_pool.c	2001/12/05 20:48:20	1.3
  @@ -58,7 +58,7 @@
   /***************************************************************************
    * Description: Simple memory pool                                         *
    * Author:      Gal Shachor <sh...@il.ibm.com>                           *
  - * Version:     $Revision: 1.2 $                                           *
  + * Version:     $Revision: 1.3 $                                           *
    ***************************************************************************/
   
   #include "jk_pool.h"
  @@ -66,11 +66,19 @@
   
   #define DEFAULT_DYNAMIC 10
   
  +int JK_METHOD jk_pool_factory( jk_env_t *env, void **result,
  +                               char *type, char *name);
   
   static void *jk_pool_dyn_alloc(jk_pool_t *p, 
                                  size_t size);
   
  +static void jk_reset_pool(jk_pool_t *p);
  +
  +static void jk_close_pool(jk_pool_t *p);
   
  +static void *jk_pool_alloc(jk_pool_t *p, 
  +                           size_t size);
  +
   static void jk_close_pool(jk_pool_t *p)
   {
       if(p) {
  @@ -168,13 +176,13 @@
   static void jk_dump_pool(jk_pool_t *p, 
                     FILE *f)
   {
  -    fprintf(f, "Dumping for pool [%x]\n", p);
  +    fprintf(f, "Dumping for pool [%p]\n", p);
       fprintf(f, "size             [%d]\n", p->size);
       fprintf(f, "pos              [%d]\n", p->pos);
  -    fprintf(f, "buf              [%x]\n", p->buf);  
  +    fprintf(f, "buf              [%p]\n", p->buf);  
       fprintf(f, "dyn_size         [%d]\n", p->dyn_size);
       fprintf(f, "dyn_pos          [%d]\n", p->dyn_pos);
  -    fprintf(f, "dynamic          [%x]\n", p->dynamic);
  +    fprintf(f, "dynamic          [%p]\n", p->dynamic);
   
       fflush(f);
   }
  @@ -212,8 +220,15 @@
   }
   
   /* Not implemented yet */
  -int jk_pool_create( jk_pool_t **newPool, jk_pool_t *parent ) {
  +int jk_pool_create( jk_pool_t **newPool, jk_pool_t *parent, int size ) {
  +    jk_pool_t *_this=(jk_pool_t *)malloc( sizeof( jk_pool_t ));
   
  +    /* XXX strange, but I assume the size is in bytes, not atom_t */
  +    _this->buf=(jk_pool_atom_t *)malloc( size );
  +    jk_open_pool( _this, _this->buf, size );
  +    _this->own_buffer = JK_TRUE;
  +    *newPool = _this;
  +    
       return JK_TRUE;
   }
   
  @@ -247,11 +262,12 @@
   {
       _this->pos  = 0;
       _this->size = size;
  -    _this->buf  = (char *)buf;
  +    _this->buf  = buf;
   
       _this->dyn_pos = 0;
       _this->dynamic = NULL;
       _this->dyn_size = 0;
  +    _this->own_buffer = JK_FALSE;
       init_methods( _this );
   }
   
  
  
  
  1.3       +18 -18    jakarta-tomcat-connectors/jk/native2/common/jk_registry.c
  
  Index: jk_registry.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_registry.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- jk_registry.c	2001/12/02 01:05:25	1.2
  +++ jk_registry.c	2001/12/05 20:48:20	1.3
  @@ -62,7 +62,7 @@
   
   /***************************************************************************
    * Description: Worker list                                                *
  - * Version:     $Revision: 1.2 $                                           *
  + * Version:     $Revision: 1.3 $                                           *
    ***************************************************************************/
   
   /** Static declarations for all 'hardcoded' modules. This is a hack, 
  @@ -85,33 +85,33 @@
    */
   
   int JK_METHOD jk_worker_ajp14_factory( jk_env_t *env, void **result,
  -                                       char *type, char *name);
  +                                       const char *type, const char *name);
   
                                      
   int JK_METHOD jk_worker_lb_factory(jk_env_t *env, void **result,
  -                                   char *type, char *name);
  +                                   const char *type, const char *name);
   
   
   int JK_METHOD jk_worker_jni_factory(jk_env_t *env, void **result,
  -                                    char *type, char *name);
  +                                    const char *type, const char *name);
   
   int JK_METHOD jk_worker_ajp12_factory(jk_env_t *env, void **result,
  -                                    char *type, char *name);
  +                                      const char *type, const char *name);
   
   /* Factories for 'new' types. We use the new factory interface,
    *  workers will be updated later 
    */
   int JK_METHOD jk_channel_socket_factory(jk_env_t *env, void **result,
  -					char *type, char *name);
  +					const char *type, const char *name);
   
   int JK_METHOD jk_workerEnv_factory(jk_env_t *env, void **result,
  -                                   char *type, char *name);
  +                                   const char *type, const char *name);
   
   int JK_METHOD jk_uriMap_factory(jk_env_t *env, void **result,
  -                                   char *type, char *name);
  +                                const char *type, const char *name);
   
   int JK_METHOD jk_logger_file_factory(jk_env_t *env, void **result,
  -                                     char *type, char *name);
  +                                     const char *type, const char *name);
   
   
   /**
  @@ -134,21 +134,21 @@
      * and because the MetroWerks compiler (used for NetWare) treats this as an
      * error, I'm casting the function pointers to (void *) - mmanders
      */
  -  env->registerFactory( env, "logger", "file",   &jk_logger_file_factory );
  -  env->registerFactory( env, "workerEnv", "default", &jk_workerEnv_factory );
  -  env->registerFactory( env, "uriMap", "default",    &jk_uriMap_factory );
  -  env->registerFactory( env, "worker", "ajp13", &jk_worker_ajp14_factory );
  -  env->registerFactory( env, "worker", "ajp14", &jk_worker_ajp14_factory );
  -  env->registerFactory( env, "worker", "lb",    &jk_worker_lb_factory );
  -  env->registerFactory( env, "channel", "socket", &jk_channel_socket_factory );
  +  env->registerFactory( env, "logger", "file",   jk_logger_file_factory );
  +  env->registerFactory( env, "workerEnv", "default", jk_workerEnv_factory );
  +  env->registerFactory( env, "uriMap", "default",    jk_uriMap_factory );
  +  env->registerFactory( env, "worker", "ajp13", jk_worker_ajp14_factory );
  +  env->registerFactory( env, "worker", "ajp14", jk_worker_ajp14_factory );
  +  env->registerFactory( env, "worker", "lb",    jk_worker_lb_factory );
  +  env->registerFactory( env, "channel", "socket", jk_channel_socket_factory );
   
     /* Optional objects */
   
   #ifdef HAVE_JNI
  -  env->registerFactory( env, "worker", "jni",   &jk_worker_jni_factory );
  +  env->registerFactory( env, "worker", "jni",   jk_worker_jni_factory );
   #endif
   #ifdef AJP12
  -  env->registerFactory( env, "worker", "ajp12", &jk_worker_ajp12_factory );
  +  env->registerFactory( env, "worker", "ajp12", jk_worker_ajp12_factory );
   #endif
   
   
  
  
  
  1.6       +52 -31    jakarta-tomcat-connectors/jk/native2/common/jk_uriMap.c
  
  Index: jk_uriMap.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_uriMap.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- jk_uriMap.c	2001/12/04 23:56:07	1.5
  +++ jk_uriMap.c	2001/12/05 20:48:20	1.6
  @@ -55,25 +55,46 @@
    *                                                                           *
    * ========================================================================= */
   
  -/***************************************************************************
  - * Description: URI to worker map object.                                  *
  - * Maps can be                                                             *
  - *                                                                         *
  - * Exact Context -> /exact/uri=worker e.g. /examples/do*=ajp12             *
  - * Context Based -> /context/*=worker e.g. /examples/*=ajp12               *
  - * Context and suffix ->/context/*.suffix=worker e.g. /examples/ *.jsp=ajp12*
  - *                                                                         *
  - * This lets us either partition the work among the web server and the     *
  - * servlet container.                                                      *
  - *                                                                         *
  - * Author:      Gal Shachor <sh...@il.ibm.com>                           *
  - * Version:     $Revision: 1.5 $                                           *
  - ***************************************************************************/
  +/**
  + * Description: URI to worker map object.                          
  + * Maps can be                                                     
  + *                                                                 
  + * Exact Context -> /exact/uri=worker e.g. /examples/do[STAR]=ajp12
  + * Context Based -> /context/[STAR]=worker e.g. /examples/[STAR]=ajp12
  + * Context and suffix ->/context/[STAR].suffix=worker e.g. /examples/[STAR].jsp=ajp12
  + *                                                                         
  + * This lets us either partition the work among the web server and the     
  + * servlet container.                                                      
  + *                                                                         
  + * Author:      Gal Shachor <sh...@il.ibm.com>                           
  + * Version:     $Revision: 1.6 $                                           
  + */
   
   #include "jk_pool.h"
   #include "jk_env.h"
   #include "jk_uriMap.h"
   
  +int JK_METHOD jk_uriMap_factory( jk_env_t *env, void **result,
  +                                 const char *type, const char *name);
  +
  +static int jk_uriMap_init(jk_uriMap_t *_this,
  +                          jk_workerEnv_t *workerEnv,
  +                          jk_map_t *init_data );
  +
  +static jk_uriEnv_t *jk_uriMap_addMapping(jk_uriMap_t *_this,
  +                                         const char *vhost,
  +                                         const char *puri, 
  +                                         const char *pworker );
  +
  +static INLINE const char *findExtension( const char *uri );
  +
  +static jk_uriEnv_t *jk_uriMap_mapUri(jk_uriMap_t *_this,
  +                                     const char *vhost,
  +                                     const char *uri );
  +
  +static int jk_uriMap_checkUri(jk_uriMap_t *_this, 
  +                              const char *uri );
  +
   /*
    * We are now in a security nightmare, it maybe that somebody sent 
    * us a uri that looks like /top-secret.jsp. and the web server will 
  @@ -88,7 +109,7 @@
   static int jk_uriMap_checkUri(jk_uriMap_t *_this, 
                                 const char *uri )
   {
  -    unsigned i;    
  +    int i;    
   
       for(i = 0 ; i < _this->size ; i++) {
           if(MATCH_TYPE_SUFFIX == _this->maps[i]->match_type) {
  @@ -163,9 +184,9 @@
   }
   
   static jk_uriEnv_t *jk_uriMap_addMapping(jk_uriMap_t *_this,
  -                                         char *vhost,
  -                                         char *puri, 
  -                                         char *pworker )
  +                                         const char *vhost,
  +                                         const char *puri, 
  +                                         const char *pworker )
   {
       jk_logger_t *l=_this->workerEnv->l;
       jk_uriEnv_t *uwr;
  @@ -235,8 +256,8 @@
       }
   
       /*
  -     * Now, lets check that the pattern is /context/*.suffix
  -     * or /context/*
  +     * Now, lets check that the pattern is /context/STAR.suffix
  +     * or /context/STAR
        * we need to have a '/' then a '*' and the a '.' or a
        * '/' then a '*'
        */
  @@ -287,9 +308,9 @@
       return uwr;
   }
   
  -int jk_uriMap_init(jk_uriMap_t *_this,
  -                   jk_workerEnv_t *workerEnv,
  -                   jk_map_t *init_data )
  +static int jk_uriMap_init(jk_uriMap_t *_this,
  +                          jk_workerEnv_t *workerEnv,
  +                          jk_map_t *init_data )
   {
       int rc=JK_TRUE;
       int sz;
  @@ -365,7 +386,7 @@
      we check only the last component, as required by
      servlet spec
   */
  -INLINE const char *findExtension( const char *uri ) {
  +static INLINE const char *findExtension( const char *uri ) {
       int suffix_start;
       const char *suffix;
       
  @@ -386,13 +407,13 @@
       return suffix;
   }
   
  -jk_uriEnv_t *jk_uriMap_mapUri(jk_uriMap_t *_this,
  -                              const char *vhost,
  -                              const char *uri )
  +static jk_uriEnv_t *jk_uriMap_mapUri(jk_uriMap_t *_this,
  +                                     const char *vhost,
  +                                     const char *uri )
   {
  -    unsigned i;
  -    unsigned best_match = -1;
  -    unsigned longest_match = 0;
  +    int i;
  +    int best_match = -1;
  +    int longest_match = 0;
       char * clean_uri = NULL;
       char *url_rewrite;
       const char *suffix;
  @@ -507,7 +528,7 @@
   }
   
   int JK_METHOD jk_uriMap_factory( jk_env_t *env, void **result,
  -                                 char *type, char *name)
  +                                 const char *type, const char *name)
   {
       jk_uriMap_t *_this;
       jk_map_t *init_data;
  
  
  
  1.4       +18 -28    jakarta-tomcat-connectors/jk/native2/common/jk_workerEnv.c
  
  Index: jk_workerEnv.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_workerEnv.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- jk_workerEnv.c	2001/12/04 19:10:04	1.3
  +++ jk_workerEnv.c	2001/12/05 20:48:20	1.4
  @@ -59,7 +59,7 @@
    * Description: Workers controller                                         *
    * Author:      Gal Shachor <sh...@il.ibm.com>                           *
    * Author:      Henri Gomez <hg...@slib.fr>                               *
  - * Version:     $Revision: 1.3 $                                           *
  + * Version:     $Revision: 1.4 $                                           *
    ***************************************************************************/
   
   #include "jk_workerEnv.h" 
  @@ -68,25 +68,10 @@
   
   #define DEFAULT_WORKER              ("ajp13")
   
  -int jk_get_worker_list(jk_map_t *m,
  -                       char ***list,
  -                       unsigned *num_of_wokers)
  -{
  -    if(m && list && num_of_wokers) {
  -        char **ar = map_get_string_list(m, 
  -                                        "worker.list", 
  -                                        num_of_wokers, 
  -                                        DEFAULT_WORKER );
  -        if(ar)  {
  -            *list = ar;     
  -            return JK_TRUE;
  -        }
  -        *list = NULL;   
  -        *num_of_wokers = 0;
  -    }
  +int JK_METHOD jk_workerEnv_factory( jk_env_t *env, void **result,
  +                                    const char *type, const char *name);
   
  -    return JK_FALSE;
  -}
  +static void jk_workerEnv_close(jk_workerEnv_t *_this);
   
   /**
    *  Init the workers, prepare the we.
  @@ -98,14 +83,17 @@
       jk_map_t *init_data=_this->init_data;
       char **worker_list  = NULL;
       jk_logger_t *l=_this->l;
  -    unsigned i;
  +    int i;
       int err;
   
       /*     _this->init_data=init_data; */
  -    
  -    if(!jk_get_worker_list(init_data, 
  -                           &worker_list, 
  -                           &_this->num_of_workers)) {
  +
  +    worker_list = map_get_string_list(init_data, 
  +                                      "worker.list", 
  +                                      &_this->num_of_workers, 
  +                                      DEFAULT_WORKER );
  +    if(worker_list==NULL || _this->num_of_workers<= 0 ) {
  +        /* assert() - we pass default worker, we should get something back */
           return JK_FALSE;
       }
   
  @@ -143,9 +131,9 @@
   }
   
   
  -void jk_workerEnv_close(jk_workerEnv_t *_this)
  +static void jk_workerEnv_close(jk_workerEnv_t *_this)
   {
  -    jk_logger_t *l;
  +    jk_logger_t *l=_this->l;
       int sz;
       int i;
       
  @@ -210,6 +198,8 @@
   
       w->name=(char *)name;
       w->workerEnv=_this;
  +
  +    jk_pool_create( & w->pool, NULL, 1024 );
       
       err=w->validate(w, init_data, _this, l);
       
  @@ -237,7 +227,7 @@
   }
   
   int JK_METHOD jk_workerEnv_factory( jk_env_t *env, void **result,
  -                                    char *type, char *name)
  +                                    const char *type, const char *name)
   {
       jk_logger_t *l=env->logger;
       jk_workerEnv_t *_this;
  @@ -311,7 +301,7 @@
   
       if( _this->uriMap==NULL ) {
           l->jkLog(l, JK_LOG_ERROR, "Error getting uriMap implementation\n");
  -        return;
  +        return JK_FALSE;
       }
   
       _this->uriMap->workerEnv = _this;
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>