From cvs-return-45360-apmail-httpd-cvs-archive=httpd.apache.org@httpd.apache.org Thu Nov 1 16:07:29 2012 Return-Path: X-Original-To: apmail-httpd-cvs-archive@www.apache.org Delivered-To: apmail-httpd-cvs-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B77DBD4C5 for ; Thu, 1 Nov 2012 16:07:29 +0000 (UTC) Received: (qmail 6047 invoked by uid 500); 1 Nov 2012 16:07:29 -0000 Delivered-To: apmail-httpd-cvs-archive@httpd.apache.org Received: (qmail 5925 invoked by uid 500); 1 Nov 2012 16:07:29 -0000 Mailing-List: contact cvs-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list cvs@httpd.apache.org Received: (qmail 5905 invoked by uid 99); 1 Nov 2012 16:07:29 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Nov 2012 16:07:29 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Nov 2012 16:07:27 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 9F85D238897F; Thu, 1 Nov 2012 16:06:44 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1404653 - in /httpd/httpd/trunk: CHANGES docs/manual/mod/mod_proxy.xml include/ap_mmn.h modules/proxy/mod_proxy.c modules/proxy/mod_proxy.h modules/proxy/mod_proxy_balancer.c modules/proxy/proxy_util.c Date: Thu, 01 Nov 2012 16:06:44 -0000 To: cvs@httpd.apache.org From: jim@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20121101160644.9F85D238897F@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: jim Date: Thu Nov 1 16:06:43 2012 New Revision: 1404653 URL: http://svn.apache.org/viewvc?rev=1404653&view=rev Log: Allow for setting of sticky session split char... Bugz 53893 Modified: httpd/httpd/trunk/CHANGES httpd/httpd/trunk/docs/manual/mod/mod_proxy.xml httpd/httpd/trunk/include/ap_mmn.h httpd/httpd/trunk/modules/proxy/mod_proxy.c httpd/httpd/trunk/modules/proxy/mod_proxy.h httpd/httpd/trunk/modules/proxy/mod_proxy_balancer.c httpd/httpd/trunk/modules/proxy/proxy_util.c Modified: httpd/httpd/trunk/CHANGES URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=1404653&r1=1404652&r2=1404653&view=diff ============================================================================== --- httpd/httpd/trunk/CHANGES [utf-8] (original) +++ httpd/httpd/trunk/CHANGES [utf-8] Thu Nov 1 16:06:43 2012 @@ -1,8 +1,11 @@ -*- coding: utf-8 -*- Changes with Apache 2.5.0 + *) mod_proxy: Add ability to configure the sticky session separator. + PR 53893. [, Jim Jagielski] + *) mod_proxy_ftp: Fix segfaults on IPv4 requests to hosts with DNS AAAA records. - PR 40841. [Andrew Rucker Jones , + PR 40841. [Andrew Rucker Jones , , Jim Jagielski] *) ap_expr: Add req_novary function that allows HTTP header lookups Modified: httpd/httpd/trunk/docs/manual/mod/mod_proxy.xml URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/docs/manual/mod/mod_proxy.xml?rev=1404653&r1=1404652&r2=1404653&view=diff ============================================================================== --- httpd/httpd/trunk/docs/manual/mod/mod_proxy.xml (original) +++ httpd/httpd/trunk/docs/manual/mod/mod_proxy.xml Thu Nov 1 16:06:43 2012 @@ -1092,6 +1092,13 @@ ProxyPass /mirror/foo http://backend.exa and url encoded id (like servlet containers) use | to to separate them. The first part is for the cookie the second for the path. + stickysessionsep + "." + Sets the separation symbol in the session cookie. Some backend application servers + do not use the '.' as the symbol. For example the Oracle Weblogic server uses + '!'. The correct symbol can be set using this option. The setting of 'Off' + signifies that no symbol is used. + scolonpathdelim Off If set to On the semi-colon character ';' will be Modified: httpd/httpd/trunk/include/ap_mmn.h URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/include/ap_mmn.h?rev=1404653&r1=1404652&r2=1404653&view=diff ============================================================================== --- httpd/httpd/trunk/include/ap_mmn.h (original) +++ httpd/httpd/trunk/include/ap_mmn.h Thu Nov 1 16:06:43 2012 @@ -403,6 +403,7 @@ * 20120724.3 (2.5.0-dev) Add bal_persist, inherit to proxy_server_conf * 20120724.4 (2.5.0-dev) Add dirwalk_stat hook. * 20120724.5 (2.5.0-dev) Add ap_get_sload() and ap_get_loadavg(). + * 20120724.6 (2.5.0-dev) Add sticky_separator to proxy_balancer_shared struct. */ #define MODULE_MAGIC_COOKIE 0x41503235UL /* "AP25" */ @@ -410,7 +411,7 @@ #ifndef MODULE_MAGIC_NUMBER_MAJOR #define MODULE_MAGIC_NUMBER_MAJOR 20120724 #endif -#define MODULE_MAGIC_NUMBER_MINOR 5 /* 0...n */ +#define MODULE_MAGIC_NUMBER_MINOR 6 /* 0...n */ /** * Determine if the server's current MODULE_MAGIC_NUMBER is at least a Modified: httpd/httpd/trunk/modules/proxy/mod_proxy.c URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.c?rev=1404653&r1=1404652&r2=1404653&view=diff ============================================================================== --- httpd/httpd/trunk/modules/proxy/mod_proxy.c (original) +++ httpd/httpd/trunk/modules/proxy/mod_proxy.c Thu Nov 1 16:06:43 2012 @@ -287,6 +287,19 @@ static const char *set_balancer_param(pr PROXY_STRNCPY(balancer->s->sticky_path, path); } } + else if (!strcasecmp(key, "stickysessionsep")) { + /* separator/delimiter for sessionid and route, + * normally '.' + */ + if (strlen(val) != 1) { + if (!strcasecmp(val, "off")) + balancer->s->sticky_separator = 0; + else + return "stickysessionsep must be a single character or Off"; + } + else + balancer->s->sticky_separator = *val; + } else if (!strcasecmp(key, "nofailover")) { /* If set to 'on' the session will break * if the worker is in error state or Modified: httpd/httpd/trunk/modules/proxy/mod_proxy.h URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.h?rev=1404653&r1=1404652&r2=1404653&view=diff ============================================================================== --- httpd/httpd/trunk/modules/proxy/mod_proxy.h (original) +++ httpd/httpd/trunk/modules/proxy/mod_proxy.h Thu Nov 1 16:06:43 2012 @@ -419,6 +419,7 @@ typedef struct { int max_attempts; /* Number of attempts before failing */ int index; /* shm array index */ proxy_hashes hash; + char sticky_separator; /* separator for sessionid/route */ unsigned int sticky_force:1; /* Disable failover for sticky sessions */ unsigned int scolonsep:1; /* true if ';' seps sticky session paths */ unsigned int max_attempts_set:1; Modified: httpd/httpd/trunk/modules/proxy/mod_proxy_balancer.c URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy_balancer.c?rev=1404653&r1=1404652&r2=1404653&view=diff ============================================================================== --- httpd/httpd/trunk/modules/proxy/mod_proxy_balancer.c (original) +++ httpd/httpd/trunk/modules/proxy/mod_proxy_balancer.c Thu Nov 1 16:06:43 2012 @@ -293,10 +293,11 @@ static proxy_worker *find_session_route( } } /* - * If we found a value for sticksession, find the first '.' within. - * Everything after '.' (if present) is our route. + * If we found a value for stickysession, find the first '.' (or whatever + * sticky_separator is set to) within. Everything after '.' (if present) + * is our route. */ - if ((*route) && ((*route = strchr(*route, '.')) != NULL )) + if ((*route) && (balancer->s->sticky_separator != 0) && ((*route = strchr(*route, balancer->s->sticky_separator)) != NULL )) (*route)++; if ((*route) && (**route)) { ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(01161) "Found route %s", *route); Modified: httpd/httpd/trunk/modules/proxy/proxy_util.c URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/proxy_util.c?rev=1404653&r1=1404652&r2=1404653&view=diff ============================================================================== --- httpd/httpd/trunk/modules/proxy/proxy_util.c (original) +++ httpd/httpd/trunk/modules/proxy/proxy_util.c Thu Nov 1 16:06:43 2012 @@ -1182,6 +1182,7 @@ PROXY_DECLARE(char *) ap_proxy_define_ba (*balancer)->hash = bshared->hash; bshared->forcerecovery = 1; + bshared->sticky_separator = '.'; *bshared->nonce = PROXY_UNSET_NONCE; /* impossible valid input */ (*balancer)->s = bshared;