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