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/13 20:05:32 UTC

cvs commit: jakarta-tomcat-connectors/jk/native2/server/apache2 jk_logger_apache2.c jk_pool_apr.c jk_service_apache2.c mod_jk.c

costin      01/12/13 11:05:31

  Modified:    jk/native2/server/apache2 jk_logger_apache2.c jk_pool_apr.c
                        jk_service_apache2.c mod_jk.c
  Log:
  Renamed jk_service->finalize to afterRequest ( finalize is too overloaded ).
  
  Updates, make it compile again :-)
  
  Revision  Changes    Path
  1.7       +2 -0      jakarta-tomcat-connectors/jk/native2/server/apache2/jk_logger_apache2.c
  
  Index: jk_logger_apache2.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/apache2/jk_logger_apache2.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- jk_logger_apache2.c	2001/12/12 23:36:01	1.6
  +++ jk_logger_apache2.c	2001/12/13 19:05:31	1.7
  @@ -83,6 +83,8 @@
   #include "httpd.h"
   #include "http_log.h"
   
  +#include "jk_apache2.h"
  +
   #define HUGE_BUFFER_SIZE (8*1024)
   
   int JK_METHOD jk_logger_apache2_factory(jk_env_t *env, jk_pool_t *pool,
  
  
  
  1.4       +5 -3      jakarta-tomcat-connectors/jk/native2/server/apache2/jk_pool_apr.c
  
  Index: jk_pool_apr.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/apache2/jk_pool_apr.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- jk_pool_apr.c	2001/12/06 22:50:25	1.3
  +++ jk_pool_apr.c	2001/12/13 19:05:31	1.4
  @@ -66,6 +66,8 @@
   #include "apr_pools.h"
   #include "apr_strings.h"
   
  +#include "jk_apache2.h"
  +
   int jk_pool_apr_create( jk_pool_t **newPool, jk_pool_t *parent, apr_pool_t *aprPool );
   
   int JK_METHOD jk_pool_apr_factory(jk_env_t *env,
  @@ -163,9 +165,9 @@
   }
   
   /* Not used yet */
  -int JK_METHOD jk_pool_apr_factory(jk_env_t *env, jk_pool_t *pool,
  -                                  void **result,
  -                                  char *type, char *name)
  +int  jk_pool_apr_factory(jk_env_t *env, jk_pool_t *pool,
  +                         void **result,
  +                         char *type, char *name)
   {
       jk_pool_t *_this=(jk_pool_t *)calloc( 1, sizeof(jk_pool_t));
   
  
  
  
  1.2       +6 -7      jakarta-tomcat-connectors/jk/native2/server/apache2/jk_service_apache2.c
  
  Index: jk_service_apache2.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/apache2/jk_service_apache2.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- jk_service_apache2.c	2001/12/13 18:50:33	1.1
  +++ jk_service_apache2.c	2001/12/13 19:05:31	1.2
  @@ -59,7 +59,7 @@
    * Description: Apache 2 plugin for Jakarta/Tomcat                         
    * Author:      Gal Shachor <sh...@il.ibm.com>                           
    *                 Henri Gomez <hg...@slib.fr>                            
  - * Version:     $Revision: 1.1 $                                           
  + * Version:     $Revision: 1.2 $                                           
    */
   
   #include "apu_compat.h"
  @@ -276,11 +276,10 @@
                              jk_endpoint_t *e,
                              void *serverObj)
   {
  -    request_rec *r=s->ws_private;
  -    jk_logger_t *l=workerEnv->l;
       apr_port_t port;
       char *ssl_temp      = NULL;
       jk_workerEnv_t *workerEnv=e->worker->workerEnv;
  +    jk_logger_t *l=workerEnv->l;
       request_rec *r=serverObj;
   
       /* Common initialization */
  @@ -495,7 +494,7 @@
    *  jk shouldn't do it instead, and the user should get the
    *  error message !
    */
  -static int jk_service_apache2_finalize(jk_ws_service_t *s )
  +static void jk_service_apache2_afterRequest(jk_ws_service_t *s )
   {
       
       if (s->content_read < s->content_length ||
  @@ -521,10 +520,10 @@
   {
       jk_ws_service_t *s = *result;
       if( s==NULL ) {
  -        s=(jk_ws_service_t *)pool->calloc(pool, sizeof(jk_service_t));
  +        s=(jk_ws_service_t *)pool->calloc(pool, sizeof(jk_ws_service_t));
       }
   
  -    if(l==NULL ) {
  +    if(s==NULL ) {
           return JK_FALSE;
       }
   
  @@ -532,7 +531,7 @@
       s->read             = ws_read;
       s->write            = ws_write;
       s->init             = init_ws_service;
  -    s->finalize         = jk_service_apache2_finalize;
  +    s->afterRequest     = jk_service_apache2_afterRequest;
       
       *result=(void *)s;
   
  
  
  
  1.10      +47 -455   jakarta-tomcat-connectors/jk/native2/server/apache2/mod_jk.c
  
  Index: mod_jk.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/apache2/mod_jk.c,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- mod_jk.c	2001/12/12 22:07:25	1.9
  +++ mod_jk.c	2001/12/13 19:05:31	1.10
  @@ -59,7 +59,7 @@
    * Description: Apache 2 plugin for Jakarta/Tomcat                         *
    * Author:      Gal Shachor <sh...@il.ibm.com>                           *
    *                 Henri Gomez <hg...@slib.fr>                               *
  - * Version:     $Revision: 1.9 $                                           *
  + * Version:     $Revision: 1.10 $                                           *
    ***************************************************************************/
   
   /*
  @@ -93,422 +93,16 @@
   #include "jk_uriMap.h"
   #include "jk_requtil.h"
   
  +#include "jk_apache2.h"
  +
   #define JK_HANDLER          ("jakarta-servlet")
  +#define JK_CTL_HANDLER      ("jakarta-ctl")
   #define JK_MAGIC_TYPE       ("application/x-jakarta-servlet")
   
  -#define NULL_FOR_EMPTY(x)   ((x && !strlen(x)) ? NULL : x) 
  -
   module AP_MODULE_DECLARE_DATA jk_module;
   
  -
  -static int JK_METHOD ws_start_response(jk_ws_service_t *s,
  -                                       int status,
  -                                       const char *reason,
  -                                       const char * const *header_names,
  -                                       const char * const *header_values,
  -                                       unsigned num_of_headers);
  -
  -static int JK_METHOD ws_read(jk_ws_service_t *s,
  -                             void *b,
  -                             unsigned len,
  -                             unsigned *actually_read);
  -
  -static void init_jk( apr_pool_t *pconf,jk_workerEnv_t *workerEnv, server_rec *s );
  -
  -static int JK_METHOD ws_write(jk_ws_service_t *s,
  -                              const void *b,
  -                              unsigned l);
  -
  -
  -/* ========================================================================= */
  -/* JK Service step callbacks                                                 */
  -/* ========================================================================= */
  -
  -static int JK_METHOD ws_start_response(jk_ws_service_t *s,
  -                                       int status,
  -                                       const char *reason,
  -                                       const char * const *header_names,
  -                                       const char * const *header_values,
  -                                       unsigned num_of_headers)
  -{
  -    if(s && s->ws_private) {
  -        unsigned h;
  -        request_rec *r = (request_rec *)s->ws_private;  
  -        
  -        if(!reason) {
  -            reason = "";
  -        }
  -        r->status = status;
  -        r->status_line = apr_psprintf(r->pool, "%d %s", status, reason);
  -
  -        for(h = 0 ; h < num_of_headers ; h++) {
  -            if(!strcasecmp(header_names[h], "Content-type")) {
  -                char *tmp = apr_pstrdup(r->pool, header_values[h]);
  -                ap_content_type_tolower(tmp);
  -                r->content_type = tmp;
  -            } else if(!strcasecmp(header_names[h], "Location")) {
  -                apr_table_set(r->headers_out, 
  -                              header_names[h], header_values[h]);
  -            } else if(!strcasecmp(header_names[h], "Content-Length")) {
  -                apr_table_set(r->headers_out, 
  -                              header_names[h], header_values[h]);
  -            } else if(!strcasecmp(header_names[h], "Transfer-Encoding")) {
  -                apr_table_set(r->headers_out, 
  -                              header_names[h], header_values[h]);
  -            } else if(!strcasecmp(header_names[h], "Last-Modified")) {
  -                /*
  -                 * If the script gave us a Last-Modified header, we can't just
  -                 * pass it on blindly because of restrictions on future values.
  -                 */
  -                ap_update_mtime(r, ap_parseHTTPdate(header_values[h]));
  -                ap_set_last_modified(r);
  -            } else {                
  -                apr_table_add(r->headers_out, 
  -                              header_names[h], header_values[h]);
  -            }
  -        }
  -
  -        /* this NOP function was removed in apache 2.0 alpha14 */
  -        /* ap_send_http_header(r); */
  -        s->response_started = JK_TRUE;
  -          
  -        return JK_TRUE;
  -    }
  -    return JK_FALSE;
  -}
  -
  -/*
  - * Read a chunk of the request body into a buffer.  Attempt to read len
  - * bytes into the buffer.  Write the number of bytes actually read into
  - * actually_read.
  - *
  - * Think of this function as a method of the apache1.3-specific subclass of
  - * the jk_ws_service class.  Think of the *s param as a "this" or "self"
  - * pointer.
  - */
  -static int JK_METHOD ws_read(jk_ws_service_t *s,
  -                             void *b,
  -                             unsigned len,
  -                             unsigned *actually_read)
  -{
  -    if(s && s->ws_private && b && actually_read) {
  -        if(!s->read_body_started) {
  -           if(ap_should_client_block(s->ws_private)) {
  -                s->read_body_started = JK_TRUE;
  -            }
  -        }
  -
  -        if(s->read_body_started) {
  -            long rv;
  -            if ((rv = ap_get_client_block(s->ws_private, b, len)) < 0) {
  -                *actually_read = 0;
  -            } else {
  -                *actually_read = (unsigned) rv;
  -            }
  -            return JK_TRUE;
  -        }
  -    }
  -    return JK_FALSE;
  -}
  -
  -/*
  - * Write a chunk of response data back to the browser.  If the headers
  - * haven't yet been sent over, send over default header values (Status =
  - * 200, basically).
  - *
  - * Write len bytes from buffer b.
  - *
  - * Think of this function as a method of the apache1.3-specific subclass of
  - * the jk_ws_service class.  Think of the *s param as a "this" or "self"
  - * pointer.
  - */
  -/* Works with 4096, fails with 8192 */
  -#ifndef CHUNK_SIZE
  -#define CHUNK_SIZE 4096
  -#endif
  -
  -static int JK_METHOD ws_write(jk_ws_service_t *s,
  -                              const void *b,
  -                              unsigned len)
  -{
  -    jk_logger_t *l=s->workerEnv->l;
  -    
  -    if(s && s->ws_private && b) {
  -        if(l) {
  -            /* BUFF *bf = p->r->connection->client; */
  -            size_t w = (size_t)l;
  -            size_t r = 0;
  -            long ll=len;
  -            char *bb=(char *)b;
  -            
  -            if(!s->response_started) {
  -                l->jkLog(l, JK_LOG_DEBUG, 
  -                       "Write without start, starting with defaults\n");
  -                if(!s->start_response(s, 200, NULL, NULL, NULL, 0)) {
  -                    return JK_FALSE;
  -                }
  -            }
  -            
  -            /* Debug - try to get around rwrite */
  -            while( ll > 0 ) {
  -                unsigned long toSend=(ll>CHUNK_SIZE) ? CHUNK_SIZE : ll;
  -                r = ap_rwrite((const char *)bb, toSend, s->ws_private );
  -                l->jkLog(l, JK_LOG_DEBUG, 
  -                       "writing %ld (%ld) out of %ld \n",toSend, r, ll );
  -                ll-=CHUNK_SIZE;
  -                bb+=CHUNK_SIZE;
  -                
  -                if(toSend != r) { 
  -                    return JK_FALSE; 
  -                } 
  -                
  -            }
  -
  -            /*
  -             * To allow server push. After writing full buffers
  -             */
  -            if(ap_rflush(s->ws_private) != APR_SUCCESS) {
  -                ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, 
  -                             NULL, "mod_jk: Error flushing \n"  );
  -                return JK_FALSE;
  -            }
  -
  -        }
  -        
  -        return JK_TRUE;
  -    }
  -    return JK_FALSE;
  -}
  -
  -/* ========================================================================= */
  -/* Utility functions                                                         */
  -/* ========================================================================= */
  -
  -static int get_content_length(request_rec *r)
  -{
  -    if(r->clength > 0) {
  -        return r->clength;
  -    } else {
  -        char *lenp = (char *)apr_table_get(r->headers_in, "Content-Length");
  -
  -        if(lenp) {
  -            int rc = atoi(lenp);
  -            if(rc > 0) {
  -                return rc;
  -            }
  -        }
  -    }
  -
  -    return 0;
  -}
  -
  -static int init_ws_service(jk_ws_service_t *s,
  -                           jk_workerEnv_t *workerEnv)
  -{
  -    request_rec *r=s->ws_private;
  -    jk_logger_t *l=workerEnv->l;
  -    apr_port_t port;
  -    char *ssl_temp      = NULL;
  -
  -    s->workerEnv=workerEnv;
  -    s->jvm_route        = NULL;    /* Used for sticky session routing */
  -
  -    /* Copy in function pointers (which are really methods) */
  -    s->start_response   = ws_start_response;
  -    s->read             = ws_read;
  -    s->write            = ws_write;
  -
  -    s->auth_type    = NULL_FOR_EMPTY(r->ap_auth_type);
  -    s->remote_user  = NULL_FOR_EMPTY(r->user);
  -
  -    s->protocol     = r->protocol;
  -    s->remote_host  = (char *)ap_get_remote_host(r->connection, 
  -                                                 r->per_dir_config, 
  -                                                 REMOTE_HOST, NULL);
  -    s->remote_host  = NULL_FOR_EMPTY(s->remote_host);
  -    s->remote_addr  = NULL_FOR_EMPTY(r->connection->remote_ip);
  -
  -    /* get server name */
  -    s->server_name= (char *)(r->hostname ? r->hostname :
  -                 r->server->server_hostname);
  -
  -    /* get the real port (otherwise redirect failed) */
  -    apr_sockaddr_port_get(&port,r->connection->local_addr);
  -    s->server_port = port;
  -
  -    s->server_software = (char *)ap_get_server_version();
  -
  -    s->method         = (char *)r->method;
  -    s->content_length = get_content_length(r);
  -    s->is_chunked     = r->read_chunked;
  -    s->no_more_chunks = 0;
  -    s->query_string   = r->args;
  -
  -    /*
  -     * The 2.2 servlet spec errata says the uri from
  -     * HttpServletRequest.getRequestURI() should remain encoded.
  -     * [http://java.sun.com/products/servlet/errata_042700.html]
  -     *
  -     * We use JkOptions to determine which method to be used
  -     *
  -     * ap_escape_uri is the latest recommanded but require
  -     *               some java decoding (in TC 3.3 rc2)
  -     *
  -     * unparsed_uri is used for strict compliance with spec and
  -     *              old Tomcat (3.2.3 for example)
  -     *
  -     * uri is use for compatibilty with mod_rewrite with old Tomcats
  -     */
  -
  -    switch (workerEnv->options & JK_OPT_FWDURIMASK) {
  -
  -        case JK_OPT_FWDURICOMPATUNPARSED :
  -            s->req_uri      = r->unparsed_uri;
  -            if (s->req_uri != NULL) {
  -                char *query_str = strchr(s->req_uri, '?');
  -                if (query_str != NULL) {
  -                    *query_str = 0;
  -                }
  -            }
  -
  -        break;
  -
  -        case JK_OPT_FWDURICOMPAT :
  -            s->req_uri = r->uri;
  -        break;
  -
  -        case JK_OPT_FWDURIESCAPED :
  -            s->req_uri      = ap_escape_uri(r->pool, r->uri);
  -        break;
  -
  -        default :
  -            return JK_FALSE;
  -    }
  -
  -    s->is_ssl       = JK_FALSE;
  -    s->ssl_cert     = NULL;
  -    s->ssl_cert_len = 0;
  -    s->ssl_cipher   = NULL;        /* required by Servlet 2.3 Api, 
  -                                   allready in original ajp13 */
  -    s->ssl_session  = NULL;
  -    s->ssl_key_size = -1;        /* required by Servlet 2.3 Api, added in jtc */
  -
  -    if(workerEnv->ssl_enable || workerEnv->envvars_in_use) {
  -        ap_add_common_vars(r);
  -
  -        if(workerEnv->ssl_enable) {
  -            ssl_temp = 
  -                (char *)apr_table_get(r->subprocess_env, 
  -                                      workerEnv->https_indicator);
  -            if(ssl_temp && !strcasecmp(ssl_temp, "on")) {
  -                s->is_ssl       = JK_TRUE;
  -                s->ssl_cert     = 
  -                    (char *)apr_table_get(r->subprocess_env, 
  -                                          workerEnv->certs_indicator);
  -                if(s->ssl_cert) {
  -                    s->ssl_cert_len = strlen(s->ssl_cert);
  -                }
  -                /* Servlet 2.3 API */
  -                s->ssl_cipher   = 
  -                    (char *)apr_table_get(r->subprocess_env, 
  -                                          workerEnv->cipher_indicator);
  -                s->ssl_session  = 
  -                    (char *)apr_table_get(r->subprocess_env, 
  -                                          workerEnv->session_indicator);
  -
  -                if (workerEnv->options & JK_OPT_FWDKEYSIZE) {
  -                    /* Servlet 2.3 API */
  -                    ssl_temp = (char *)apr_table_get(r->subprocess_env, 
  -                                                 workerEnv->key_size_indicator);
  -                    if (ssl_temp)
  -                        s->ssl_key_size = atoi(ssl_temp);
  -                }
  -            }
  -        }
  -
  -        if(workerEnv->envvars_in_use) {
  -            const apr_array_header_t *t = apr_table_elts(workerEnv->envvars);
  -            if(t && t->nelts) {
  -                int i;
  -                apr_table_entry_t *elts = (apr_table_entry_t *)t->elts;
  -                s->attributes_names = apr_palloc(r->pool, 
  -                                                 sizeof(char *) * t->nelts);
  -                s->attributes_values = apr_palloc(r->pool, 
  -                                                  sizeof(char *) * t->nelts);
  -
  -                for(i = 0 ; i < t->nelts ; i++) {
  -                    s->attributes_names[i] = elts[i].key;
  -                    s->attributes_values[i] = 
  -                        (char *)apr_table_get(r->subprocess_env, elts[i].key);
  -                    if(!s->attributes_values[i]) {
  -                        s->attributes_values[i] = elts[i].val;
  -                    }
  -                }
  -
  -                s->num_attributes = t->nelts;
  -            }
  -        }
  -    }
  -
  -    s->headers_names    = NULL;
  -    s->headers_values   = NULL;
  -    s->num_headers      = 0;
  -    if(r->headers_in && apr_table_elts(r->headers_in)) {
  -        int need_content_length_header = (!s->is_chunked && s->content_length == 0) ? JK_TRUE : JK_FALSE;
  -        const apr_array_header_t *t = apr_table_elts(r->headers_in);
  -        if(t && t->nelts) {
  -            int i;
  -            apr_table_entry_t *elts = (apr_table_entry_t *)t->elts;
  -            s->num_headers = t->nelts;
  -            /* allocate an extra header slot in case we need to add a content-length header */
  -            s->headers_names  = apr_palloc(r->pool, sizeof(char *) * (t->nelts + 1));
  -            s->headers_values = apr_palloc(r->pool, sizeof(char *) * (t->nelts + 1));
  -            if(!s->headers_names || !s->headers_values)
  -                return JK_FALSE;
  -            for(i = 0 ; i < t->nelts ; i++) {
  -                char *hname = apr_pstrdup(r->pool, elts[i].key);
  -                s->headers_values[i] = apr_pstrdup(r->pool, elts[i].val);
  -                s->headers_names[i] = hname;
  -                while(*hname) {
  -                    *hname = tolower(*hname);
  -                    hname++;
  -                }
  -                if(need_content_length_header &&
  -                        !strncmp(s->headers_values[i],"content-length",14)) {
  -                    need_content_length_header = JK_FALSE;
  -                }
  -            }
  -            /* Add a content-length = 0 header if needed.
  -             * Ajp13 assumes an absent content-length header means an unknown,
  -             * but non-zero length body.
  -             */
  -            if(need_content_length_header) {
  -                s->headers_names[s->num_headers] = "content-length";
  -                s->headers_values[s->num_headers] = "0";
  -                s->num_headers++;
  -            }
  -        }
  -        /* Add a content-length = 0 header if needed.*/
  -        else if (need_content_length_header) {
  -            s->headers_names  = apr_palloc(r->pool, sizeof(char *));
  -            s->headers_values = apr_palloc(r->pool, sizeof(char *));
  -            if(!s->headers_names || !s->headers_values)
  -                return JK_FALSE;
  -            s->headers_names[0] = "content-length";
  -            s->headers_values[0] = "0";
  -            s->num_headers++;
  -        }
  -    }
  -
  -    return JK_TRUE;
  -}
  -
  -
  -/*  */
   /* ==================== Options setters ==================== */
   
  -
  -
   /*
    * The JK module command processors
    *
  @@ -1021,11 +615,16 @@
       /*
        * Options to tune mod_jk configuration
        * for now we understand :
  -     * +ForwardSSLKeySize        => Forward SSL Key Size, to follow 2.3 specs but may broke old TC 3.2
  -     * -ForwardSSLKeySize        => Don't Forward SSL Key Size, will make mod_jk works with all TC release
  -     *  ForwardURICompat         => Forward URI normally, less spec compliant but mod_rewrite compatible (old TC)
  -     *  ForwardURICompatUnparsed => Forward URI as unparsed, spec compliant but broke mod_rewrite (old TC)
  -     *  ForwardURIEscaped        => Forward URI escaped and Tomcat (3.3 rc2) stuff will do the decoding part
  +     * +ForwardSSLKeySize        => Forward SSL Key Size, to follow 2.3
  +                                    specs but may broke old TC 3.2
  +     * -ForwardSSLKeySize        => Don't Forward SSL Key Size, will make
  +                                    mod_jk works with all TC release
  +     *  ForwardURICompat         => Forward URI normally, less spec compliant
  +                                    but mod_rewrite compatible (old TC)
  +     *  ForwardURICompatUnparsed => Forward URI as unparsed, spec compliant
  +                                    but broke mod_rewrite (old TC)
  +     *  ForwardURIEscaped        => Forward URI escaped and Tomcat (3.3 rc2)
  +                                    stuff will do the decoding part
        */
       AP_INIT_RAW_ARGS(
           "JkOptions", jk_set_options, NULL, RSRC_CONF, 
  @@ -1064,12 +663,6 @@
       return add;
   }
   
  -int jk_logger_apache2_factory(jk_env_t *env,
  -                              jk_pool_t *pool,
  -                              void **result,
  -                              char *type,
  -                              char *name);
  -
   /** Create default jk_config. XXX This is mostly server-independent,
       all servers are using something similar - should go to common.
   
  @@ -1298,17 +891,41 @@
       return 0;
   }
   
  +/** handler for 'ctl' requests. 
  + */
  +static int jk_ctl_handler(request_rec *r)
  +{
  +    jk_workerEnv_t *workerEnv;
  +    jk_logger_t      *l;
  +
  +    if( strcmp( r->handler, JK_CTL_HANDLER ) != 0 )
  +        return DECLINED;
  +    
  +    workerEnv=(jk_workerEnv_t *)ap_get_module_config(r->server->module_config,
  +                                                     &jk_module);
  +    l = workerEnv->l;
  +
  +    /* Find what 'ctl' request we have */
  +
  +
  +    /* 'Ping' clt - update the status for all workers, send ping
  +       message. This will update 'up/down' state and give tomcat
  +       an option to update the mapping tables. The ctl handler
  +       will output an xhtml status page */
  +    
  +    return DECLINED;
  +}
   /** Main service method, called to forward a request to tomcat
    */
   static int jk_handler(request_rec *r)
   {   
       const char       *worker_name;
  -    jk_logger_t      *l;
  -    jk_workerEnv_t *workerEnv;
  +    jk_logger_t      *l=NULL;
       int              rc;
       jk_worker_t *worker=NULL;
       jk_endpoint_t *end = NULL;
       jk_uriEnv_t *uriEnv;
  +    jk_workerEnv_t *workerEnv;
   
       uriEnv=ap_get_module_config( r->request_config, &jk_module );
   
  @@ -1322,8 +939,8 @@
           return HTTP_INTERNAL_SERVER_ERROR;
       }
   
  -    workerEnv = (jk_workerEnv_t *)ap_get_module_config(r->server->module_config, 
  -                                                       &jk_module);
  +    workerEnv=(jk_workerEnv_t *)ap_get_module_config(r->server->module_config, 
  +                                                     &jk_module);
       l = workerEnv->l;
   
       /* Set up r->read_chunked flags for chunked encoding, if present */
  @@ -1356,40 +973,15 @@
           jk_ws_service_t sOnStack;
           jk_ws_service_t *s=&sOnStack;
           int is_recoverable_error = JK_FALSE;
  -        
  -        jk_requtil_initRequest(s);
   
  -        s->workerEnv=workerEnv;
  -        s->response_started = JK_FALSE;
  -        s->read_body_started = JK_FALSE;
  -        s->ws_private = r;
  -        s->pool=end->cPool;
  +        jk_service_apache2_factory( workerEnv->env, end->cPool, &s,
  +                                    "service", "apache2");
           
  -        rc=init_ws_service(s, workerEnv);
  +        s->init( s, end, r );
           
           rc = end->service(end, s, l, &is_recoverable_error);
  -                    
  -        if (s->content_read < s->content_length ||
  -            (s->is_chunked && ! s->no_more_chunks)) {
  -            
  -            /*
  -             * If the servlet engine didn't consume all of the
  -             * request data, consume and discard all further
  -             * characters left to read from client
  -             *
  -             *  XXX Is it the right thing to do ????? Why spend the
  -             *  bandwith, the servlet decided not to read the POST then
  -             *  jk shouldn't do it instead, and the user should get the
  -             *  error message !
  -             */
  -            char *buff = apr_palloc(r->pool, 2048);
  -            if (buff != NULL) {
  -                int rd;
  -                while ((rd = ap_get_client_block(r, buff, 2048)) > 0) {
  -                    s->content_read += rd;
  -                }
  -            }
  -        }
  +
  +        s->afterRequest(s);
       }
   
       end->done(&end, l); 
  
  
  

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