Loading docs/manual/mod/mod_proxy.xml +7 −0 Changes for docs/manual/mod/mod_proxy.xml: 7 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -841,6 +841,13 @@ expressions</description> and url encoded id (like servlet containers) use | to to separate them. The first part is for the cookie the second for the path. </td></tr> <tr><td>scolonpathdelim</td> <td>Off</td> <td>If set to <code>On</code> the semi-colon character ';' will be used as an additional sticky session path deliminator/separator. This is mainly used to emulate mod_jk's behavior when dealing with paths such as <code>JSESSIONID=6736bcf34;foo=aabfa</code> </td></tr> <tr><td>timeout</td> <td>0</td> <td>Balancer timeout in seconds. If set this will be the maximum time Loading include/ap_mmn.h +2 −1 Changes for include/ap_mmn.h: 2 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -165,6 +165,7 @@ * 20080722.0 (2.3.0-dev) remove has_realm_hash() from authn_provider struct * 20080722.1 (2.3.0-dev) Add conn_timeout and conn_timeout_set to * proxy_worker struct. * 20080722.2 (2.3.0-dev) Add scolonsep to proxy_balancer * */ Loading @@ -173,7 +174,7 @@ #ifndef MODULE_MAGIC_NUMBER_MAJOR #define MODULE_MAGIC_NUMBER_MAJOR 20080722 #endif #define MODULE_MAGIC_NUMBER_MINOR 1 /* 0...n */ #define MODULE_MAGIC_NUMBER_MINOR 2 /* 0...n */ /** * Determine if the server's current MODULE_MAGIC_NUMBER is at least a Loading modules/proxy/mod_proxy.c +12 −0 Changes for modules/proxy/mod_proxy.c: 12 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -360,6 +360,18 @@ static const char *set_balancer_param(proxy_server_conf *conf, } return "unknown lbmethod"; } else if (!strcasecmp(key, "scolonpathdelim")) { /* If set to 'on' then ';' will also be * used as a session path separator/delim (ala * mod_jk) */ if (!strcasecmp(val, "on")) balancer->scolonsep = 1; else if (!strcasecmp(val, "off")) balancer->scolonsep = 0; else return "scolonpathdelim must be On|Off"; } else { return "unknown Balancer parameter"; } Loading modules/proxy/mod_proxy.h +1 −0 Changes for modules/proxy/mod_proxy.h: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -382,6 +382,7 @@ struct proxy_balancer { #endif void *context; /* general purpose storage */ const char *sticky_path; /* URL sticky session identifier */ int scolonsep; /* true if ';' seps sticky session paths */ }; struct proxy_balancer_method { Loading modules/proxy/mod_proxy_balancer.c +7 −3 Changes for modules/proxy/mod_proxy_balancer.c: 7 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -128,10 +128,14 @@ static int init_balancer_members(proxy_server_conf *conf, server_rec *s, * Something like 'JSESSIONID=12345...N' */ static char *get_path_param(apr_pool_t *pool, char *url, const char *name) const char *name, int scolon_sep) { char *path = NULL; char *pathdelims = "?&"; if (scolon_sep) { pathdelims = ";?&"; } for (path = strstr(url, name); path; path = strstr(path + 1, name)) { path += strlen(name); if (*path == '=') { Loading @@ -141,7 +145,7 @@ static char *get_path_param(apr_pool_t *pool, char *url, ++path; if (strlen(path)) { char *q; path = apr_strtok(apr_pstrdup(pool, path), ";?&", &q); path = apr_strtok(apr_pstrdup(pool, path), pathdelims, &q); return path; } } Loading Loading @@ -261,7 +265,7 @@ static proxy_worker *find_session_route(proxy_balancer *balancer, if (!balancer->sticky) return NULL; /* Try to find the sticky route inside url */ *route = get_path_param(r->pool, *url, balancer->sticky_path); *route = get_path_param(r->pool, *url, balancer->sticky_path, balancer->scolonsep); if (*route) { ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server, "proxy: BALANCER: Found value %s for " Loading Loading
docs/manual/mod/mod_proxy.xml +7 −0 Changes for docs/manual/mod/mod_proxy.xml: 7 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -841,6 +841,13 @@ expressions</description> and url encoded id (like servlet containers) use | to to separate them. The first part is for the cookie the second for the path. </td></tr> <tr><td>scolonpathdelim</td> <td>Off</td> <td>If set to <code>On</code> the semi-colon character ';' will be used as an additional sticky session path deliminator/separator. This is mainly used to emulate mod_jk's behavior when dealing with paths such as <code>JSESSIONID=6736bcf34;foo=aabfa</code> </td></tr> <tr><td>timeout</td> <td>0</td> <td>Balancer timeout in seconds. If set this will be the maximum time Loading
include/ap_mmn.h +2 −1 Changes for include/ap_mmn.h: 2 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -165,6 +165,7 @@ * 20080722.0 (2.3.0-dev) remove has_realm_hash() from authn_provider struct * 20080722.1 (2.3.0-dev) Add conn_timeout and conn_timeout_set to * proxy_worker struct. * 20080722.2 (2.3.0-dev) Add scolonsep to proxy_balancer * */ Loading @@ -173,7 +174,7 @@ #ifndef MODULE_MAGIC_NUMBER_MAJOR #define MODULE_MAGIC_NUMBER_MAJOR 20080722 #endif #define MODULE_MAGIC_NUMBER_MINOR 1 /* 0...n */ #define MODULE_MAGIC_NUMBER_MINOR 2 /* 0...n */ /** * Determine if the server's current MODULE_MAGIC_NUMBER is at least a Loading
modules/proxy/mod_proxy.c +12 −0 Changes for modules/proxy/mod_proxy.c: 12 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -360,6 +360,18 @@ static const char *set_balancer_param(proxy_server_conf *conf, } return "unknown lbmethod"; } else if (!strcasecmp(key, "scolonpathdelim")) { /* If set to 'on' then ';' will also be * used as a session path separator/delim (ala * mod_jk) */ if (!strcasecmp(val, "on")) balancer->scolonsep = 1; else if (!strcasecmp(val, "off")) balancer->scolonsep = 0; else return "scolonpathdelim must be On|Off"; } else { return "unknown Balancer parameter"; } Loading
modules/proxy/mod_proxy.h +1 −0 Changes for modules/proxy/mod_proxy.h: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -382,6 +382,7 @@ struct proxy_balancer { #endif void *context; /* general purpose storage */ const char *sticky_path; /* URL sticky session identifier */ int scolonsep; /* true if ';' seps sticky session paths */ }; struct proxy_balancer_method { Loading
modules/proxy/mod_proxy_balancer.c +7 −3 Changes for modules/proxy/mod_proxy_balancer.c: 7 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -128,10 +128,14 @@ static int init_balancer_members(proxy_server_conf *conf, server_rec *s, * Something like 'JSESSIONID=12345...N' */ static char *get_path_param(apr_pool_t *pool, char *url, const char *name) const char *name, int scolon_sep) { char *path = NULL; char *pathdelims = "?&"; if (scolon_sep) { pathdelims = ";?&"; } for (path = strstr(url, name); path; path = strstr(path + 1, name)) { path += strlen(name); if (*path == '=') { Loading @@ -141,7 +145,7 @@ static char *get_path_param(apr_pool_t *pool, char *url, ++path; if (strlen(path)) { char *q; path = apr_strtok(apr_pstrdup(pool, path), ";?&", &q); path = apr_strtok(apr_pstrdup(pool, path), pathdelims, &q); return path; } } Loading Loading @@ -261,7 +265,7 @@ static proxy_worker *find_session_route(proxy_balancer *balancer, if (!balancer->sticky) return NULL; /* Try to find the sticky route inside url */ *route = get_path_param(r->pool, *url, balancer->sticky_path); *route = get_path_param(r->pool, *url, balancer->sticky_path, balancer->scolonsep); if (*route) { ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server, "proxy: BALANCER: Found value %s for " Loading