mturk       2005/05/18 23:31:42

  Modified:    jk/native/apache-2.0 mod_jk.c
  Log:
  Fix Apache2 ws_write. There is no need to break the write to 4K
  chunks. Since apache does not write directly to wire but rather
  creates output filter buckets this will also lower the number of buckets
  created.
  
  Revision  Changes    Path
  1.150     +28 -20    jakarta-tomcat-connectors/jk/native/apache-2.0/mod_jk.c
  
  Index: mod_jk.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/apache-2.0/mod_jk.c,v
  retrieving revision 1.149
  retrieving revision 1.150
  diff -u -r1.149 -r1.150
  --- mod_jk.c  18 May 2005 18:21:59 -0000      1.149
  +++ mod_jk.c  19 May 2005 06:31:42 -0000      1.150
  @@ -319,10 +319,12 @@
   
   static void JK_METHOD ws_flush(jk_ws_service_t *s)
   {
  +#ifndef AS400
       if (s && s->ws_private) {
           apache_private_data_t *p = s->ws_private;
           ap_rflush(p->r);
       }
  +#endif
   }
   
   /*
  @@ -341,7 +343,7 @@
   #define CHUNK_SIZE 4096
   #endif
   
  -static int JK_METHOD ws_write(jk_ws_service_t *s, const void *b, unsigned l)
  +static int JK_METHOD ws_write(jk_ws_service_t *s, const void *b, unsigned 
int l)
   {
   #ifdef AS400
       int rc;
  @@ -352,9 +354,9 @@
   
           if (l) {
               /* BUFF *bf = p->r->connection->client; */
  -            size_t r = 0;
  -            long ll = l;
  -            char *bb = (char *)b;
  +            int r = 0;
  +            int ll = l;
  +            const char *bb = (const char *)b;
   
               if (!p->response_started) {
                   if (JK_IS_DEBUG_LEVEL(main_log))
  @@ -371,7 +373,8 @@
                   return JK_TRUE;
               }
   #ifdef AS400
  -            rc = ap_change_response_body_xlate(p->r, 65535, 65535);     /* 
turn off response body translation */
  +            /* turn off response body translation */
  +            rc = ap_change_response_body_xlate(p->r, 65535, 65535);
               if (rc) {
                   ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_CRIT, 0,
                                NULL,
  @@ -381,19 +384,24 @@
               }
   #endif
   
  -            /* Debug - try to get around rwrite */
  -            while (ll > 0) {
  -                size_t toSend = (ll > CHUNK_SIZE) ? CHUNK_SIZE : ll;
  -                r = ap_rwrite((const char *)bb, toSend, p->r);
  -                jk_log(main_log, JK_LOG_DEBUG,
  -                       "writing %ld (%ld) out of %ld", toSend, r, ll);
  -                ll -= CHUNK_SIZE;
  -                bb += CHUNK_SIZE;
  +            while (ll > 0 && !p->r->connection->aborted) {
  +#if 0
  +                /* Apache 2 output filter does not write
  +                 * directly to the wire.
  +                 */
  +                int toSend = (ll > CHUNK_SIZE) ? CHUNK_SIZE : ll;
  +                r = ap_rwrite(bb, toSend, p->r);
  +#else
  +                r = ap_rwrite(bb, ll, p->r);
  +#endif
  +                if (JK_IS_DEBUG_LEVEL(main_log))
  +                    jk_log(main_log, JK_LOG_DEBUG,
  +                           "written %d out of %d", r, ll);
   
  -                if (toSend != r) {
  +                if (r < 0)
                       return JK_FALSE;
  -                }
  -
  +                ll -= r;
  +                bb += r;
               }
           }
   
  @@ -1870,7 +1878,7 @@
               private_data.response_started = JK_FALSE;
               private_data.read_body_started = JK_FALSE;
               private_data.r = r;
  -            
  +
               wc_maintain(xconf->log);
   
               jk_init_ws_service(&s);
  @@ -2406,7 +2414,7 @@
       worker_env.uri_to_worker = conf->uw_map;
       worker_env.virtual = "*";   /* for now */
       worker_env.server_name = (char *)ap_get_server_version();
  -    if (wc_open(init_map, &worker_env, conf->log)) {        
  +    if (wc_open(init_map, &worker_env, conf->log)) {
           ap_add_version_component(pconf, JK_EXPOSED_VERSION);
       }
   }
  @@ -2418,7 +2426,7 @@
       apr_status_t rv;
       jk_server_conf_t *conf;
       server_rec *srv = s;
  -    
  +
       /* create the jk log lockfiles in the parent */
       if ((rv = apr_global_mutex_create(&jk_log_lock, NULL,
                                         APR_LOCK_DEFAULT,
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to