You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ji...@apache.org on 2012/12/06 14:59:35 UTC

svn commit: r1417892 - in /httpd/httpd/branches/2.4.x: ./ docs/manual/ docs/manual/mod/ include/ modules/proxy/

Author: jim
Date: Thu Dec  6 13:59:32 2012
New Revision: 1417892

URL: http://svn.apache.org/viewvc?rev=1417892&view=rev
Log:
Merge r1404653 from trunk:

Allow for setting of sticky session split char...
Bugz 53893

Reviewed/backported by: jim

Modified:
    httpd/httpd/branches/2.4.x/   (props changed)
    httpd/httpd/branches/2.4.x/CHANGES
    httpd/httpd/branches/2.4.x/STATUS
    httpd/httpd/branches/2.4.x/docs/manual/   (props changed)
    httpd/httpd/branches/2.4.x/docs/manual/mod/   (props changed)
    httpd/httpd/branches/2.4.x/docs/manual/mod/mod_proxy.xml
    httpd/httpd/branches/2.4.x/include/ap_mmn.h
    httpd/httpd/branches/2.4.x/modules/proxy/mod_proxy.c
    httpd/httpd/branches/2.4.x/modules/proxy/mod_proxy.h
    httpd/httpd/branches/2.4.x/modules/proxy/mod_proxy_balancer.c
    httpd/httpd/branches/2.4.x/modules/proxy/proxy_util.c

Propchange: httpd/httpd/branches/2.4.x/
------------------------------------------------------------------------------
  Merged /httpd/httpd/trunk:r1404653

Modified: httpd/httpd/branches/2.4.x/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/CHANGES?rev=1417892&r1=1417891&r2=1417892&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/CHANGES [utf-8] (original)
+++ httpd/httpd/branches/2.4.x/CHANGES [utf-8] Thu Dec  6 13:59:32 2012
@@ -2,6 +2,9 @@
 
 Changes with Apache 2.4.4
 
+  *) mod_proxy: Add ability to configure the sticky session separator.
+     PR 53893. [<inu inusasha de>, Jim Jagielski]
+
   *) mod_dumpio: Correctly log large messages
      PR 54179 [Marek Wianecki <mieszek2 interia pl>]
 

Modified: httpd/httpd/branches/2.4.x/STATUS
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/STATUS?rev=1417892&r1=1417891&r2=1417892&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/STATUS (original)
+++ httpd/httpd/branches/2.4.x/STATUS Thu Dec  6 13:59:32 2012
@@ -91,11 +91,6 @@ RELEASE SHOWSTOPPERS:
 PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
   [ start all new proposals below, under PATCHES PROPOSED. ]
 
-   * mod_proxy: Allow for setting of sticky session split char...
-     PR 53893.
-     trunk patch: http://svn.apache.org/viewvc?rev=1404653&view=rev
-     2.4.x patch: http://people.apache.org/~jim/patches/sticky-sep-2.4.patch
-     +1: jim, covener, sf
 
 PATCHES PROPOSED TO BACKPORT FROM TRUNK:
   [ New proposals should be added at the end of the list ]

Propchange: httpd/httpd/branches/2.4.x/docs/manual/
------------------------------------------------------------------------------
  Merged /httpd/httpd/trunk/docs/manual:r1404653

Propchange: httpd/httpd/branches/2.4.x/docs/manual/mod/
------------------------------------------------------------------------------
  Merged /httpd/httpd/trunk/docs/manual/mod:r1404653

Modified: httpd/httpd/branches/2.4.x/docs/manual/mod/mod_proxy.xml
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/docs/manual/mod/mod_proxy.xml?rev=1417892&r1=1417891&r2=1417892&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/docs/manual/mod/mod_proxy.xml (original)
+++ httpd/httpd/branches/2.4.x/docs/manual/mod/mod_proxy.xml Thu Dec  6 13:59:32 2012
@@ -1060,6 +1060,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.
     </td></tr>
+    <tr><td>stickysessionsep</td>
+        <td>"."</td>
+        <td>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.
+    </td></tr>
     <tr><td>scolonpathdelim</td>
         <td>Off</td>
         <td>If set to <code>On</code> the semi-colon character ';' will be

Modified: httpd/httpd/branches/2.4.x/include/ap_mmn.h
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/include/ap_mmn.h?rev=1417892&r1=1417891&r2=1417892&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/include/ap_mmn.h (original)
+++ httpd/httpd/branches/2.4.x/include/ap_mmn.h Thu Dec  6 13:59:32 2012
@@ -397,6 +397,7 @@
  * 20120211.5 (2.4.3-dev)  Add missing HTTP status codes registered with IANA.
  * 20120211.6 (2.4.3-dev)  Add ap_proxy_checkproxyblock2.
  * 20120211.7 (2.4.3-dev)  Add ap_get_loadavg()
+ * 20120211.8 (2.4.3-dev)  Add sticky_separator to proxy_balancer_shared struct.
  */
 
 #define MODULE_MAGIC_COOKIE 0x41503234UL /* "AP24" */
@@ -404,7 +405,7 @@
 #ifndef MODULE_MAGIC_NUMBER_MAJOR
 #define MODULE_MAGIC_NUMBER_MAJOR 20120211
 #endif
-#define MODULE_MAGIC_NUMBER_MINOR 7                   /* 0...n */
+#define MODULE_MAGIC_NUMBER_MINOR 8                   /* 0...n */
 
 /**
  * Determine if the server's current MODULE_MAGIC_NUMBER is at least a

Modified: httpd/httpd/branches/2.4.x/modules/proxy/mod_proxy.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/modules/proxy/mod_proxy.c?rev=1417892&r1=1417891&r2=1417892&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/modules/proxy/mod_proxy.c (original)
+++ httpd/httpd/branches/2.4.x/modules/proxy/mod_proxy.c Thu Dec  6 13:59:32 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/branches/2.4.x/modules/proxy/mod_proxy.h
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/modules/proxy/mod_proxy.h?rev=1417892&r1=1417891&r2=1417892&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/modules/proxy/mod_proxy.h (original)
+++ httpd/httpd/branches/2.4.x/modules/proxy/mod_proxy.h Thu Dec  6 13:59:32 2012
@@ -425,6 +425,7 @@ typedef struct {
     unsigned int    vhosted:1;
     unsigned int    inactive:1;
     unsigned int    forcerecovery:1;
+    char      sticky_separator;                                /* separator for sessionid/route */
 } proxy_balancer_shared;
 
 #define ALIGNED_PROXY_BALANCER_SHARED_SIZE (APR_ALIGN_DEFAULT(sizeof(proxy_balancer_shared)))

Modified: httpd/httpd/branches/2.4.x/modules/proxy/mod_proxy_balancer.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/modules/proxy/mod_proxy_balancer.c?rev=1417892&r1=1417891&r2=1417892&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/modules/proxy/mod_proxy_balancer.c (original)
+++ httpd/httpd/branches/2.4.x/modules/proxy/mod_proxy_balancer.c Thu Dec  6 13:59:32 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/branches/2.4.x/modules/proxy/proxy_util.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/modules/proxy/proxy_util.c?rev=1417892&r1=1417891&r2=1417892&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/modules/proxy/proxy_util.c (original)
+++ httpd/httpd/branches/2.4.x/modules/proxy/proxy_util.c Thu Dec  6 13:59:32 2012
@@ -1185,6 +1185,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;



Re: svn commit: r1417892 - in /httpd/httpd/branches/2.4.x: ./ docs/manual/ docs/manual/mod/ include/ modules/proxy/

Posted by Jim Jagielski <ji...@jaguNET.com>.
It was, wasn't it?
Let be dbl-check.
On Dec 6, 2012, at 2:13 PM, Marion & Christophe JAILLET <ch...@wanadoo.fr> wrote:

> 
> Le 06/12/2012 14:59, jim@apache.org a écrit :
>> Author: jim
>> Date: Thu Dec  6 13:59:32 2012
>> New Revision: 1417892
>> 
>> URL: http://svn.apache.org/viewvc?rev=1417892&view=rev
>> Log:
>> Merge r1404653 from trunk:
>> 
>> Allow for setting of sticky session split char...
>> Bugz 53893
>> 
> [...]
>> --- httpd/httpd/branches/2.4.x/modules/proxy/mod_proxy.h (original)
>> +++ httpd/httpd/branches/2.4.x/modules/proxy/mod_proxy.h Thu Dec  6 13:59:32 2012
>> @@ -425,6 +425,7 @@ typedef struct {
>>      unsigned int    vhosted:1;
>>      unsigned int    inactive:1;
>>      unsigned int    forcerecovery:1;
>> +    char      sticky_separator;                                /* separator for sessionid/route */
>>  } proxy_balancer_shared;
>>    #define ALIGNED_PROXY_BALANCER_SHARED_SIZE (APR_ALIGN_DEFAULT(sizeof(proxy_balancer_shared)))
>> 
> Hi,
> 
> I think that the change of position of the sticky_separator struct member, should be forward-ported to trunk, shouldn't it ?
> 
> Best regards,
> CJ
> 


Re: svn commit: r1417892 - in /httpd/httpd/branches/2.4.x: ./ docs/manual/ docs/manual/mod/ include/ modules/proxy/

Posted by Marion & Christophe JAILLET <ch...@wanadoo.fr>.
Le 06/12/2012 14:59, jim@apache.org a écrit :
> Author: jim
> Date: Thu Dec  6 13:59:32 2012
> New Revision: 1417892
>
> URL: http://svn.apache.org/viewvc?rev=1417892&view=rev
> Log:
> Merge r1404653 from trunk:
>
> Allow for setting of sticky session split char...
> Bugz 53893
>
[...]
> --- httpd/httpd/branches/2.4.x/modules/proxy/mod_proxy.h (original)
> +++ httpd/httpd/branches/2.4.x/modules/proxy/mod_proxy.h Thu Dec  6 13:59:32 2012
> @@ -425,6 +425,7 @@ typedef struct {
>       unsigned int    vhosted:1;
>       unsigned int    inactive:1;
>       unsigned int    forcerecovery:1;
> +    char      sticky_separator;                                /* separator for sessionid/route */
>   } proxy_balancer_shared;
>   
>   #define ALIGNED_PROXY_BALANCER_SHARED_SIZE (APR_ALIGN_DEFAULT(sizeof(proxy_balancer_shared)))
>
Hi,

I think that the change of position of the sticky_separator struct 
member, should be forward-ported to trunk, shouldn't it ?

Best regards,
CJ