fat                                      Mon, 11 Jan 2010 17:57:22 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=293414

Log:
INSTALL_ROOT was not set correctly for fpm binary

Changed paths:
    U   php/php-src/branches/PHP_5_3_FPM/sapi/fpm/Makefile.frag
    U   php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_conf.c
    U   php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_conf.h

Modified: php/php-src/branches/PHP_5_3_FPM/sapi/fpm/Makefile.frag
===================================================================
--- php/php-src/branches/PHP_5_3_FPM/sapi/fpm/Makefile.frag     2010-01-11 
17:08:53 UTC (rev 293413)
+++ php/php-src/branches/PHP_5_3_FPM/sapi/fpm/Makefile.frag     2010-01-11 
17:57:22 UTC (rev 293414)
@@ -12,7 +12,7 @@
        @$(mkinstalldirs) $(INSTALL_ROOT)$(sbindir)
        @$(mkinstalldirs) $(INSTALL_ROOT)$(localstatedir)/log
        @$(mkinstalldirs) $(INSTALL_ROOT)$(localstatedir)/run
-       @$(INSTALL) -m 0755 $(SAPI_FPM_PATH) 
$(INSTALL_ROO)$(sbindir)/$(program_prefix)php-fpm$(program_suffix)$(EXEEXT)
+       @$(INSTALL) -m 0755 $(SAPI_FPM_PATH) 
$(INSTALL_ROOT)$(sbindir)/$(program_prefix)php-fpm$(program_suffix)$(EXEEXT)

        @echo "Installing PHP FPM config:        $(INSTALL_ROOT)$(sysconfdir)/" 
&& \
        $(mkinstalldirs) $(INSTALL_ROOT)$(sysconfdir) || :

Modified: php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_conf.c
===================================================================
--- php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_conf.c    2010-01-11 
17:08:53 UTC (rev 293413)
+++ php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_conf.c    2010-01-11 
17:57:22 UTC (rev 293414)
@@ -297,6 +297,8 @@
        free(wpc->pm->status);
        free(wpc->pm->ping);
        free(wpc->pm->pong);
+       free(wpc->sticky_cookie);
+       free(wpc->sticky_route);
        if (wpc->listen_options) {
                free(wpc->listen_options->owner);
                free(wpc->listen_options->group);
@@ -347,6 +349,9 @@
                { XML_CONF_SCALAR,              "rlimit_files",                 
                &xml_conf_set_slot_integer,                                     
offsetof(struct fpm_worker_pool_config_s, rlimit_files) },
                { XML_CONF_SCALAR,              "rlimit_core",                  
                &fpm_conf_set_rlimit_core,                                      
0 },
                { XML_CONF_SCALAR,              "max_requests",                 
                &xml_conf_set_slot_integer,                                     
offsetof(struct fpm_worker_pool_config_s, max_requests) },
+               { XML_CONF_SCALAR,              "sticky",                       
                &xml_conf_set_slot_boolean,                                     
offsetof(struct fpm_worker_pool_config_s, sticky) },
+               { XML_CONF_SCALAR,              "sticky_cookie",                
                        &xml_conf_set_slot_string,                              
        offsetof(struct fpm_worker_pool_config_s, sticky_cookie) },
+               { XML_CONF_SCALAR,              "sticky_route",                 
                &xml_conf_set_slot_string,                                      
offsetof(struct fpm_worker_pool_config_s, sticky_route) },
                { XML_CONF_SCALAR,              "catch_workers_output",         
        &fpm_conf_set_catch_workers_output,                     0 },
                { XML_CONF_SUBSECTION,  "pm",                                   
                &fpm_conf_set_pm_subsection,                            
offsetof(struct fpm_worker_pool_config_s, pm) },
                { 0, 0, 0, 0 }
@@ -475,7 +480,65 @@
                                close(fd);
                        }
                }
+               if (wp->config->sticky) {
+                       char *cookie = wp->config->sticky_cookie;
+                       char *route = wp->config->sticky_route;
+                       int i;

+                       if (!cookie) {
+                               wp->config->sticky_cookie = strdup("FPMCOOKIE");
+                       } else {
+                               if (strlen(cookie) < 2) {
+                                       zlog(ZLOG_STUFF, ZLOG_ERROR, "[pool %s] 
the sticky cookie '%s' is not long enough", wp->config->name, cookie);
+                                       return(-1);
+                               }
+
+                               for (i=0; i<strlen(cookie); i++) {
+                                       if (!isalnum(cookie[i])) {
+                                               zlog(ZLOG_STUFF, ZLOG_ERROR, 
"[pool %s] the sticky cookie '%s' must containt only the alphanum characters", 
wp->config->name, cookie);
+                                               return(-1);
+                                       }
+                               }
+                       }
+
+                       if (!route) {
+                               char *hostname;
+                               hostname = malloc(sizeof(char) * 
(FPM_CONF_MAX_HOSTNAME_LENGTH + 1));
+                               if (!hostname) {
+                                       zlog(ZLOG_STUFF, ZLOG_ERROR, "[pool %s] 
sticky: unable to malloc memory for hostname", wp->config->name);
+                                       return(-1);
+                               }
+                               if (gethostname(hostname, 
FPM_CONF_MAX_HOSTNAME_LENGTH) != 0) {
+                                       zlog(ZLOG_STUFF, ZLOG_ERROR, "[pool %s] 
sticky: unable to retrieve hostname", wp->config->name);
+                                       return(-1);
+                               }
+                               hostname[FPM_CONF_MAX_HOSTNAME_LENGTH] = '\0';
+                               wp->config->sticky_route = strdup(hostname);
+                               zlog(ZLOG_STUFF, ZLOG_NOTICE, "[pool %s] the 
sticky route has been set to the local hostname '%s'", wp->config->name, 
wp->config->sticky_route);
+                               free(hostname);
+                       } else {
+                               if (strlen(route) < 2) {
+                                       zlog(ZLOG_STUFF, ZLOG_ERROR, "[pool %s] 
the sticky route '%s' is not long enough", wp->config->name, route);
+                                       return(-1);
+                               }
+
+                               for (i=0; i<strlen(route); i++) {
+                                       if (!isalnum(route[i])) {
+                                               zlog(ZLOG_STUFF, ZLOG_ERROR, 
"[pool %s] the sticky route '%s' must containt only the alphanum characters", 
wp->config->name, route);
+                                               return(-1);
+                                       }
+                               }
+                       }
+zlog(ZLOG_STUFF, ZLOG_NOTICE, "[pool %s] sticky is set to %s=%s", 
wp->config->name, wp->config->sticky_cookie, wp->config->sticky_route);
+               } else {
+                       if (wp->config->sticky_route) {
+                               free(wp->config->sticky_route);
+                       }
+                       if (wp->config->sticky_cookie) {
+                               free(wp->config->sticky_cookie);
+                       }
+               }
+
                if (wp->config->pm->ping && *wp->config->pm->ping) {
                        char *ping = wp->config->pm->ping;
                        int i;

Modified: php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_conf.h
===================================================================
--- php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_conf.h    2010-01-11 
17:08:53 UTC (rev 293413)
+++ php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_conf.h    2010-01-11 
17:57:22 UTC (rev 293414)
@@ -6,6 +6,7 @@
 #define FPM_CONF_H 1

 #define FPM_CONF_MAX_PONG_LENGTH 64
+#define FPM_CONF_MAX_HOSTNAME_LENGTH 255

 struct key_value_s;

@@ -64,6 +65,9 @@
        int max_requests;
        int rlimit_files;
        int rlimit_core;
+       int sticky;
+       char *sticky_cookie;
+       char *sticky_route;
        unsigned catch_workers_output:1;
 };


-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to