>OK, Sorry.  It's right there in front of me!  Been a long week ...

For some it was even longer...

What do you think of the CHUNK code, David ?


>-David
>
>-----Original Message-----
>From: Schreibman, David [mailto:[EMAIL PROTECTED]]
>Sent: Friday, September 14, 2001 4:07 PM
>To: '[EMAIL PROTECTED]';
>[EMAIL PROTECTED]
>Subject: RE: cvs commit: jakarta-tomcat-connectors/jk/native/apache-1.3
>mo d_jk.c
>
>
>Hi,
>
>Shouldn't "content-length" be "Content-Length"? Or are the 
>headers already
>forced to lowercase elsewhere?  Or how about a case 
>insensitive comparison
>to be nice ....
>
>-David
>
>-----Original Message-----
>From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
>Sent: Friday, September 14, 2001 3:32 PM
>To: [EMAIL PROTECTED]
>Subject: cvs commit: jakarta-tomcat-connectors/jk/native/apache-1.3
>mod_jk.c
>
>
>hgomez      01/09/14 15:31:36
>
>  Modified:    jk/native/apache-1.3 mod_jk.c
>  Log:
>  Complete the support of chunk encoding and
>  add the required content-length which is
>  now required by recent ajp13 present in JT
>  and which will soon be ported to JTC for
>  at least TC 4.0 use (candidate here ?)
>  
>  Revision  Changes    Path
>  1.16      +57 -36
>jakarta-tomcat-connectors/jk/native/apache-1.3/mod_jk.c
>  
>  Index: mod_jk.c
>  ===================================================================
>  RCS file:
>/home/cvs/jakarta-tomcat-connectors/jk/native/apache-1.3/mod_jk.c,v
>  retrieving revision 1.15
>  retrieving revision 1.16
>  diff -u -r1.15 -r1.16
>  --- mod_jk.c 2001/09/14 17:45:14     1.15
>  +++ mod_jk.c 2001/09/14 22:31:36     1.16
>  @@ -61,7 +61,7 @@
>    * Author:      Gal Shachor <[EMAIL PROTECTED]>
>*
>    *              Dan Milstein <[EMAIL PROTECTED]>
>*
>    *              Henri Gomez <[EMAIL PROTECTED]>
>*
>  - * Version:     $Revision: 1.15 $
>*
>  + * Version:     $Revision: 1.16 $
>*
> 
>***************************************************************
>************/
>   
>   /*
>  @@ -118,15 +118,22 @@
>    * Configuration object for the mod_jk module.
>    */
>   typedef struct {
>  -    char *log_file;
>  -    int  log_level;
>  +
>  +    /*
>  +     * Log stuff
>  +     */
>  +    char        *log_file;
>  +    int         log_level;
>       jk_logger_t *log;
>   
>  -    char *worker_file;
>  -    int  mountcopy;
>  +    /*
>  +     * Worker stuff
>  +     */
>  +    char     *worker_file;
>       jk_map_t *uri_to_context;
>   
>  -    char * secret_key;
>  +    int      mountcopy;
>  +    char     *secret_key;
>       jk_map_t *automount;
>   
>       jk_uri_worker_map_t *uw_map;
>  @@ -440,35 +447,16 @@
>       s->remote_host  = NULL_FOR_EMPTY(s->remote_host);
>   
>       s->remote_addr  = NULL_FOR_EMPTY(r->connection->remote_ip);
>  -    /* Wrong:    s->server_name  = (char 
>*)ap_get_server_name( r ); */
>  -    s->server_name= (char *)(r->hostname ? r->hostname :
>r->server->server_hostname);
>  -    
>  -    s->server_port= htons( r->connection->local_addr.sin_port );
>  -    /* Wrong: s->server_port  = r->server->port; */
>  -
>  +    s->server_name  = (char *)(r->hostname ? r->hostname :
>r->server->server_hostname);
>       
>  -    /*    Winners:  htons( r->connection->local_addr.sin_port )
>  -                      (r->hostname ? r->hostname : 
>  -                             r->server->server_hostname),
>  -    */
>  -    /* printf( "Port %u %u %u %s %s %s %d %d \n", 
>  -        ap_get_server_port( r ), 
>  -        htons( r->connection->local_addr.sin_port ),
>  -        ntohs( r->connection->local_addr.sin_port ),
>  -        ap_get_server_name( r ),
>  -        (r->hostname ? r->hostname : r->server->server_hostname),
>  -        r->hostname,
>  -        r->connection->base_server->port,
>  -        r->server->port
>  -        );
>  -    */
>  +    s->server_port     = htons( 
>r->connection->local_addr.sin_port );
>       s->server_software = (char *)ap_get_server_version();
>   
>  -    s->method       = (char *)r->method;
>  +    s->method         = (char *)r->method;
>       s->content_length = get_content_length(r);
>  -    s->is_chunked   = r->read_chunked;
>  +    s->is_chunked     = r->read_chunked;
>       s->no_more_chunks = 0;
>  -    s->query_string = r->args;
>  +    s->query_string   = r->args;
>   
>       if (conf->options & JK_OPT_FWDUNPARSED) {
>       /*
>  @@ -515,10 +503,12 @@
>                   s->ssl_cipher   = (char 
>*)ap_table_get(r->subprocess_env,
>conf->cipher_indicator);
>                   s->ssl_session  = (char 
>*)ap_table_get(r->subprocess_env,
>conf->session_indicator);
>   
>  -                            /* Servlet 2.3 API */
>  -                ssl_temp = (char *)ap_table_get(r->subprocess_env,
>conf->key_size_indicator);
>  -                            if (ssl_temp) 
>  -                            s->ssl_key_size = atoi(ssl_temp);
>  +                if (conf->options & JK_OPT_FWDKEYSIZE) {
>  +                                /* Servlet 2.3 API */
>  +                    ssl_temp = (char 
>*)ap_table_get(r->subprocess_env,
>conf->key_size_indicator);
>  +                                if (ssl_temp) 
>  +                                s->ssl_key_size = atoi(ssl_temp);
>  +                }
>               }
>           }
>   
>  @@ -547,13 +537,17 @@
>       s->headers_values   = NULL;
>       s->num_headers      = 0;
>       if(r->headers_in && ap_table_elts(r->headers_in)) {
>  +        int need_content_length_header = (!s->is_chunked &&
>s->content_length == 0) ? JK_TRUE : JK_FALSE;
>           array_header *t = ap_table_elts(r->headers_in);        
>           if(t && t->nelts) {
>               int i;
>               table_entry *elts = (table_entry *)t->elts;
>               s->num_headers = t->nelts;
>  -            s->headers_names  = ap_palloc(r->pool, sizeof(char *) *
>t->nelts);
>  -            s->headers_values = ap_palloc(r->pool, sizeof(char *) *
>t->nelts);
>  +            /* allocate an extra header slot in case we 
>need to add a
>content-length header */
>  +            s->headers_names  = ap_palloc(r->pool, sizeof(char *) *
>(t->nelts + 1));
>  +            s->headers_values = ap_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 = ap_pstrdup(r->pool, elts[i].key);
>                   s->headers_values[i] = ap_pstrdup(r->pool, 
>elts[i].val);
>  @@ -562,8 +556,31 @@
>                       *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  = ap_palloc(r->pool, sizeof(char *));
>  +            s->headers_values = ap_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;
>  @@ -1051,6 +1068,7 @@
>               private_data.r = r;
>   
>               jk_init_ws_service(&s);
>  +
>               s.ws_private = &private_data;
>               s.pool = &private_data.p;            
>               
>  @@ -1101,6 +1119,7 @@
>       c->log_level   = -1;
>       c->log         = NULL;
>       c->mountcopy   = JK_FALSE;
>  +    c->options     = 0;
>   
>       /*
>        * By default we will try to gather SSL info. 
>  @@ -1181,6 +1200,8 @@
>           overrides->key_size_indicator = base->key_size_indicator;
>       }
>       
>  +    overrides->options = base->options;
>  +
>       if(overrides->mountcopy) {
>               copy_jk_map(p, overrides->s, base->uri_to_context,
>overrides->uri_to_context);
>               copy_jk_map(p, overrides->s, base->automount,
>overrides->automount);
>  
>  
>  
>

Reply via email to