mturk       2005/02/17 04:32:16

  Modified:    jk/native/common jk_ajp_common.c
  Log:
  Create separate function for creating the entire endpoint cache.
  It is just a way to make the code more readable.
  
  Revision  Changes    Path
  1.86      +62 -49    
jakarta-tomcat-connectors/jk/native/common/jk_ajp_common.c
  
  Index: jk_ajp_common.c
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_ajp_common.c,v
  retrieving revision 1.85
  retrieving revision 1.86
  diff -u -r1.85 -r1.86
  --- jk_ajp_common.c   17 Feb 2005 07:14:19 -0000      1.85
  +++ jk_ajp_common.c   17 Feb 2005 12:32:16 -0000      1.86
  @@ -1780,21 +1780,45 @@
       return JK_FALSE;
   }
   
  -static ajp_endpoint_t *ajp_create_endpoint(jk_worker_t *w, int proto, time_t 
now)
  +static int ajp_create_endpoint_cache(ajp_worker_t *p, int proto, jk_logger_t 
*l)
   {
  -    ajp_endpoint_t *ae = (ajp_endpoint_t *)calloc(1, sizeof(ajp_endpoint_t));
  -    if (ae) {
  -        ae->sd = -1;
  -        ae->reuse = JK_FALSE;
  -        ae->last_access = now;
  -        jk_open_pool(&ae->pool, ae->buf, sizeof(ae->buf));
  -        ae->worker = w->worker_private;
  -        ae->endpoint.endpoint_private = ae;
  -        ae->proto = proto;
  -        ae->endpoint.service = ajp_service;
  -        ae->endpoint.done = ajp_done;
  +    unsigned int i;
  +    time_t now = time(NULL);
  +
  +    JK_TRACE_ENTER(l);
  +    p->ep_cache = (ajp_endpoint_t **)calloc(1, sizeof(ajp_endpoint_t *) *
  +                                            p->ep_cache_sz);
  +    if (!p->ep_cache) {
  +        JK_TRACE_EXIT(l);
  +        return JK_FALSE;
       }
  -    return ae;
  +    if (JK_IS_DEBUG_LEVEL(l))
  +        jk_log(l, JK_LOG_DEBUG,
  +                "setting connection cache size to %d",
  +                p->ep_cache_sz);
  +        for (i = 0; i < p->ep_cache_sz; i++) {
  +            p->ep_cache[i] = (ajp_endpoint_t *)calloc(1, 
sizeof(ajp_endpoint_t));
  +            if (!p->ep_cache[i]) {
  +                jk_log(l, JK_LOG_ERROR,
  +                        "creating endpont cache slot %d errno=%d",
  +                        i, errno);
  +                JK_TRACE_EXIT(l);
  +                return JK_FALSE;
  +            }
  +            p->ep_cache[i]->sd = -1;
  +            p->ep_cache[i]->reuse = JK_FALSE;
  +            p->ep_cache[i]->last_access = now;
  +            jk_open_pool(&(p->ep_cache[i]->pool), p->ep_cache[i]->buf,
  +                         sizeof(p->ep_cache[i]->buf));
  +            p->ep_cache[i]->worker = p;
  +            p->ep_cache[i]->endpoint.endpoint_private = p->ep_cache[i];
  +            p->ep_cache[i]->proto = proto;
  +            p->ep_cache[i]->endpoint.service = ajp_service;
  +            p->ep_cache[i]->endpoint.done    = ajp_done;
  +        }
  +
  +    JK_TRACE_EXIT(l);
  +    return JK_TRUE;
   }
   
   int ajp_init(jk_worker_t *pThis,
  @@ -1903,40 +1927,16 @@
   
           p->secret = jk_get_worker_secret(props, p->name);
           p->ep_mincache_sz = 1;
  -        p->ep_cache = (ajp_endpoint_t **)calloc(1, sizeof(ajp_endpoint_t *) *
  -                                                p->ep_cache_sz);
  -        if (p->ep_cache) {
  -            unsigned int i;
  -            time_t now = time(NULL);
  -
  -            if (JK_IS_DEBUG_LEVEL(l))
  -                jk_log(l, JK_LOG_DEBUG,
  -                        "setting connection cache size to %d",
  -                        p->ep_cache_sz);
  -            /* Initialize cache slots */
  -            for (i = 0; i < p->ep_cache_sz; i++) {
  -                p->ep_cache[i] = ajp_create_endpoint(pThis, proto, now);
  -                if (!p->ep_cache[i]) {
  -                    jk_log(l, JK_LOG_ERROR,
  -                            "creating endpont cache slot %d errno=%d",
  -                            i, errno);
  -                    JK_TRACE_EXIT(l);
  -                    return JK_FALSE;
  -                }
  -                jk_log(l, JK_LOG_DEBUG,
  -                    "Initialized endpont cache slot %d %#lx:%#lx",
  -                    i, p->ep_cache[i], &(p->ep_cache[i]->pool));
  -            }
  -            JK_INIT_CS(&(p->cs), i);
  -            if (i == JK_FALSE) {
  -                jk_log(l, JK_LOG_ERROR,
  -                       "creating thread lock errno=%d",
  -                       errno);
  -                JK_TRACE_EXIT(l);
  -                return JK_FALSE;
  -            }
  +        /* Initialize cache slots */
  +        JK_INIT_CS(&(p->cs), rc);
  +        if (!rc) {
  +            jk_log(l, JK_LOG_ERROR,
  +                   "creating thread lock errno=%d",
  +                   errno);
  +            JK_TRACE_EXIT(l);
  +            return JK_FALSE;
           }
  -        else {
  +        if (!ajp_create_endpoint_cache(p, proto, l)) {
               jk_log(l, JK_LOG_ERROR,
                      "allocating ep_cache of size %d",
                      p->ep_cache_sz);
  @@ -2046,8 +2046,12 @@
       if (pThis && pThis->worker_private && je) {
           ajp_worker_t *aw = pThis->worker_private;
           ajp_endpoint_t *ae = NULL;
  -        time_t now = time(NULL);
  +        time_t now = 0;
           int rc;
  +        /* Obtain current time only if needed */
  +        if (aw->cache_timeout > 0 || aw->recycle_timeout > 0)
  +            now = time(NULL);
  +        *je = NULL;
   
           JK_ENTER_CS(&aw->cs, rc);
           if (rc) {
  @@ -2076,7 +2080,6 @@
                       }
                   }
               }
  -            JK_LEAVE_CS(&aw->cs, rc);
               if (ae) {
                   if (ae->sd > 0 && aw->recycle_timeout > 0) {
                       /* Handle timeouts for open sockets */
  @@ -2096,6 +2099,7 @@
                   }
                   ae->last_access = now;
                   *je = &ae->endpoint;
  +                JK_LEAVE_CS(&aw->cs, rc);
                   if (JK_IS_DEBUG_LEVEL(l))
                       jk_log(l, JK_LOG_DEBUG,
                              "acquired connection cache slot=%d",
  @@ -2103,6 +2107,15 @@
                   JK_TRACE_EXIT(l);
                   return JK_TRUE;
               }
  +            JK_LEAVE_CS(&aw->cs, rc);
  +        }
  +        else {
  +           jk_log(l, JK_LOG_ERROR,
  +                  "locking thread with errno=%d",
  +                  errno);
  +            JK_TRACE_EXIT(l);
  +            return JK_FALSE;
  +
           }
           jk_log(l, JK_LOG_INFO,
                  "can't find free endpoint");
  
  
  

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

Reply via email to