On 13/03/2009, sebb <seb...@gmail.com> wrote: > 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. >
Oops, crossed message, I see that has been reverted. > > 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