On 13/03/2009, mt...@apache.org <mt...@apache.org> wrote:
> Author: mturk
>  Date: Fri Mar 13 07:25:50 2009
>  New Revision: 753147
>
>  URL: http://svn.apache.org/viewvc?rev=753147&view=rev
>  Log:
>  Use inplace rewrite of dot part. We are safe to do that cause sessionid is 
> allocated for every request

Might be good to add that assumption to the documentation in the source file?

>  Modified:
>     tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c
>
>  Modified: tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c
>  URL: 
> http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c?rev=753147&r1=753146&r2=753147&view=diff
>  
> ==============================================================================
>  --- tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c (original)
>  +++ tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c Fri Mar 13 
> 07:25:50 2009
>  @@ -689,7 +689,7 @@
>
>   static int find_by_session(jk_ws_service_t *s,
>                             lb_worker_t *p,
>  -                           const char *name,
>  +                           char *sessionid,

Would it not be better to keep the const modifier here?
Likewise in the other changed functions.

>                             jk_logger_t *l)
>   {
>
>  @@ -697,7 +697,7 @@
>      unsigned int i;
>
>      for (i = 0; i < p->num_of_workers; i++) {
>  -        if (strcmp(p->lb_workers[i].route, name) == 0) {
>  +        if (strcmp(p->lb_workers[i].route, sessionid) == 0) {
>              rc = i;
>              break;
>          }
>  @@ -707,33 +707,22 @@
>
>   static int find_best_bydomain(jk_ws_service_t *s,
>                                lb_worker_t *p,
>  -                              const char *name,
>  +                              char *sessionid,
>                                int *states,
>                                jk_logger_t *l)
>   {
>      unsigned int i;
>      int d = 0;
>      jk_uint64_t curmin = 0;
>  -    char rdomain[JK_SHM_STR_SIZ+1];
>      int candidate = -1;
>      int activation;
>      lb_sub_worker_t wr;
>  -    const char *domain = strchr(name, '.');
>  +    char *idpart = strchr(sessionid, '.');
>  +    char *domain = sessionid;
>
>  -    if (domain) {
>  -        size_t dl = (size_t)(domain - name);
>  -        if (dl >= JK_SHM_STR_SIZ) {
>  -            /* Overflow */
>  -            return -1;
>  -        }
>  -        else {
>  -            strncpy(rdomain, name, dl);
>  -            rdomain[dl] = '\0';
>  -            domain = rdomain;
>  -        }
>  +    if (idpart) {
>  +        *idpart = '\0';
>      }
>  -    else
>  -        domain = name;
>      /* First try to see if we have available candidate */
>      for (i = 0; i < p->num_of_workers; i++) {
>          /* Skip all workers that are not member of domain */
>  @@ -759,6 +748,10 @@
>              }
>          }
>      }
>  +    if (idpart) {
>  +        /* Restore original char */
>  +        *idpart = '.';
>  +    }
>      return candidate;
>   }
>
>  @@ -810,17 +803,17 @@
>
>   static int find_bysession_route(jk_ws_service_t *s,
>                                  lb_worker_t *p,
>  -                                const char *name,
>  +                                char *sessionid,
>                                  int *states,
>                                  jk_logger_t *l)
>   {
>      int uses_domain  = 0;
>      int candidate = -1;
>
>  -    candidate = find_by_session(s, p, name, l);
>  +    candidate = find_by_session(s, p, sessionid, l);
>      if (candidate < 0) {
>          uses_domain = 1;
>  -        candidate = find_best_bydomain(s, p, name, states, l);
>  +        candidate = find_best_bydomain(s, p, sessionid, states, l);
>      }
>      if (candidate >= 0) {
>          lb_sub_worker_t wr = p->lb_workers[candidate];
>  @@ -871,7 +864,7 @@
>   {
>      int rc = -1;
>      unsigned int i;
>  -    const char *redirect = NULL;
>  +    char *redirect = NULL;
>
>      for (i = 0; i < p->num_of_workers; i++) {
>          if (strlen(p->lb_workers[i].redirect)) {
>
>
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
>  For additional commands, e-mail: dev-h...@tomcat.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to