On 13/03/2009, sebb <[email protected]> wrote:
> On 13/03/2009, [email protected] <[email protected]> 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: [email protected]
> > For additional commands, e-mail: [email protected]
> >
> >
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]