Changeset 1918

Show
Ignore:
Timestamp:
08/31/08 13:41:49 (3 months ago)
Author:
alo
Message:

--

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • cherokee/trunk/ChangeLog

    r1917 r1918  
     12008-08-31  Alvaro Lopez Ortega  <alvaro@alobbs.com> 
     2 
     3        * cherokee/Makefile.am, cherokee/main.c, cherokee/main_guardian.c, 
     4        cherokee/server.c, constants.h.pre, admin/configured.py.pre, 
     5        admin/PageMain.py, admin/CherokeeManagement.py: Cherokee-guardian 
     6        becomes Cherokee, and Cherokee is renamed to Cherokee-worker. The 
     7        idea behind this change is to use the "guardian" feature by 
     8        default. 
     9 
    1102008-08-30  Alvaro Lopez Ortega  <alvaro@alobbs.com> 
    211 
  • cherokee/trunk/admin/CherokeeManagement.py

    r1914 r1918  
    5050    def __init__ (self, cfg): 
    5151        self._cfg = cfg 
    52         self._pid = self._get_guardian_pid(
     52        self._pid = self._get_pid (worker=False
    5353 
    5454    # Public 
     
    7474            os.setsid()  
    7575 
    76         p = Popen ([CHEROKEE_GUARDIAN, '-C', self._cfg.file],  
     76        p = Popen ([CHEROKEE_SERVER, '-C', self._cfg.file],  
    7777                   stdout=PIPE, stderr=PIPE,  
    7878                   preexec_fn=daemonize, close_fds=True) 
     
    112112         
    113113        # Get the PID 
    114         pid = self._get_cherokee_pid(
     114        pid = self._get_pid (worker=True
    115115        if not pid: return 
    116116 
     
    139139    # Protected 
    140140    # 
    141  
    142     def _get_guardian_pid (self): 
    143         pid_file = os.path.join (CHEROKEE_VAR_RUN, "cherokee-guardian.pid") 
    144         return self.__read_pid_file (pid_file) 
    145  
    146     def _get_cherokee_pid (self): 
     141    def _get_pid_path (self, worker): 
    147142        pid_file = self._cfg.get_val("server!pid_file") 
    148143        if not pid_file: 
    149             pid_file = os.path.join (CHEROKEE_VAR_RUN, "cherokee-guardian.pid") 
     144            pid_file = os.path.join (CHEROKEE_VAR_RUN, "cherokee.pid") 
     145        if worker: 
     146            pid_file += ".worker"             
     147        return pid_file 
     148 
     149    def _get_pid (self, worker=False): 
     150        pid_file = self._get_pid_path(worker) 
    150151        return self.__read_pid_file (pid_file) 
    151152 
  • cherokee/trunk/admin/PageMain.py

    r1638 r1918  
    6969 
    7070        manager = cherokee_management_get (self._cfg) 
    71         if manager._pid
     71        if manager.is_alive()
    7272            current_pid = str(manager._pid) 
    7373        else: 
  • cherokee/trunk/admin/configured.py.pre

    r1510 r1918  
    99VERSION    = "%version%" 
    1010 
    11 CHEROKEE_SRV_PATH   = join (PREFIX, "sbin/cherokee") 
    12 CHEROKEE_GUARDIAN   = join (PREFIX, "sbin/cherokee-guardian") 
     11CHEROKEE_SERVER     = join (PREFIX, "sbin/cherokee") 
     12CHEROKEE_WORKER     = join (PREFIX, "sbin/cherokee-worker") 
    1313CHEROKEE_ADMINDIR   = join (PREFIX, "share/cherokee/admin") 
    1414CHEROKEE_ICONSDIR   = join (PREFIX, "share/cherokee/icons") 
  • cherokee/trunk/cherokee/Makefile.am

    r1887 r1918  
    11901190 
    11911191# 
    1192 # Main binary: Cherokee server 
    1193 # 
    1194 sbin_PROGRAMS = cherokee cherokee-admin 
     1192# Cherokee server worker 
     1193# 
     1194sbin_PROGRAMS = cherokee-worker cherokee-admin 
    11951195 
    11961196if !PLATFORM_WIN32 
    1197 sbin_PROGRAMS += cherokee-guardian 
    1198 endif 
    1199  
    1200 cherokee_SOURCES = main.c 
    1201 cherokee_LDADD   = \ 
     1197sbin_PROGRAMS += cherokee 
     1198endif 
     1199 
     1200cherokee_worker_SOURCES = main_worker.c 
     1201cherokee_worker_LDADD   = \ 
    12021202$(PTHREAD_LIBS) \ 
    12031203$(PTHREAD_CFLAGS) \ 
     
    12071207 
    12081208# 
    1209 # Cherokee guardians 
    1210 # 
    1211 cherokee_guardian_SOURCES = main_guardian.c 
     1209# Cherokee 
     1210# 
     1211cherokee_SOURCES = main.c 
    12121212 
    12131213# 
     
    12151215# 
    12161216cherokee_admin_SOURCES = main_admin.c 
    1217 cherokee_admin_LDADD   = $(cherokee_LDADD) 
    1218 cherokee_admin_LDFLAGS = $(cherokee_LDFLAGS) 
     1217cherokee_admin_LDADD   = $(cherokee_worker_LDADD) 
     1218cherokee_admin_LDFLAGS = $(cherokee_worker_LDFLAGS) 
    12191219 
    12201220 
  • cherokee/trunk/cherokee/main.c

    r1771 r1918  
    3939#define DELAY_ERROR       3000 * 1000 
    4040#define DELAY_RESTARTING   500 * 1000 
    41 #define PID_FILE          CHEROKEE_VAR_RUN "/cherokee-guardian.pid" 
    42  
    43 pid_t              pid; 
    44 cherokee_boolean_t graceful_restart;  
     41 
     42#define DEFAULT_PID_FILE  CHEROKEE_VAR_RUN "/cherokee.pid" 
     43#define DEFAULT_CONFIG    CHEROKEE_CONFDIR "/cherokee.conf" 
     44 
     45pid_t               pid; 
     46char               *pid_file_path; 
     47cherokee_boolean_t  graceful_restart;  
     48 
     49static const char * 
     50figure_config_file (int argc, char **argv) 
     51
     52        int i; 
     53 
     54        for (i=0; i<argc; i++) { 
     55                if ((i+1 < argc) && 
     56                    (strcmp(argv[i], "-C") == 0)) 
     57                        return argv[i+1]; 
     58        } 
     59 
     60        return DEFAULT_CONFIG; 
     61
     62 
     63static char * 
     64figure_pid_file_path (const char *config) 
     65
     66        FILE *f; 
     67        char *line; 
     68        char  tmp[512]; 
     69 
     70        f = fopen (config, "r"); 
     71        if (f == NULL) 
     72                return NULL; 
     73 
     74        while (! feof(f)) { 
     75                line = fgets (tmp, sizeof(tmp), f); 
     76                if ((line != NULL) && 
     77                    (! strcmp (line, "server!pid_file = "))) 
     78                { 
     79                        fclose(f); 
     80                        return strdup(line + 18); 
     81                } 
     82        } 
     83 
     84        fclose(f); 
     85        return strdup(DEFAULT_PID_FILE); 
     86
    4587 
    4688static void 
     
    114156 
    115157static void  
    116 guardian_signals_handler (int sig, siginfo_t *si, void *context)  
     158signals_handler (int sig, siginfo_t *si, void *context)  
    117159{ 
    118160        int exitcode; 
     
    138180                kill (pid, SIGTERM); 
    139181                process_wait (pid); 
    140                 pid_file_clean (PID_FILE); 
     182                pid_file_clean (pid_file_path); 
    141183                exit(0); 
    142184 
     
    154196 
    155197static void 
    156 set_guardian_signals (void) 
     198set_signals (void) 
    157199{ 
    158200        struct sigaction act; 
     
    167209        /* Signals it handles 
    168210         */ 
    169         act.sa_sigaction = guardian_signals_handler; 
     211        act.sa_sigaction = signals_handler; 
    170212        sigemptyset (&act.sa_mask); 
    171213        act.sa_flags = SA_SIGINFO; 
     
    242284main (int argc, char *argv[]) 
    243285{ 
    244         ret_t              ret; 
    245         cherokee_boolean_t single_time; 
    246  
    247         set_guardian_signals(); 
     286        ret_t               ret; 
     287        cherokee_boolean_t  single_time; 
     288        const char         *config_file_path; 
     289 
     290        set_signals(); 
    248291        single_time = is_single_execution (argc, argv); 
     292 
     293        /* Figure out some stuff 
     294         */ 
     295        config_file_path = figure_config_file (argc, argv); 
     296        pid_file_path    = figure_pid_file_path (config_file_path); 
    249297 
    250298        /* Turn into a daemon 
     
    252300        if (! single_time) { 
    253301                may_daemonize (argc, argv); 
    254                 pid_file_save (PID_FILE, getpid()); 
     302                pid_file_save (pid_file_path, getpid()); 
    255303        } 
    256304 
     
    258306                graceful_restart = false; 
    259307 
    260                 pid = process_launch (CHEROKEE_SRV_PATH, argv); 
     308                pid = process_launch (CHEROKEE_WORKER, argv); 
    261309                if (pid < 0) { 
    262                         PRINT_MSG ("Couldn't launch '%s'\n", CHEROKEE_SRV_PATH); 
     310                        PRINT_MSG ("Couldn't launch '%s'\n", CHEROKEE_WORKER); 
    263311                        exit (1); 
    264312                } 
     
    273321        } 
    274322 
    275         pid_file_clean (PID_FILE); 
     323        pid_file_clean (pid_file_path); 
    276324        return 0; 
    277325} 
  • cherokee/trunk/cherokee/server.c

    r1912 r1918  
    18671867                return ret_not_found; 
    18681868 
     1869        cherokee_buffer_add_str (&srv->pidfile, ".worker"); 
     1870 
    18691871        file = fopen (srv->pidfile.buf, "w+"); 
    18701872        if (file == NULL) { 
    18711873                PRINT_ERRNO (errno, "Cannot write PID file '%s': '${errno}'", srv->pidfile.buf); 
    1872                 return ret_error; 
     1874                goto error; 
    18731875        } 
    18741876 
     
    18781880 
    18791881        if (written <= 0) 
    1880                 return ret_error; 
    1881  
    1882         return ret_ok; 
     1882                goto error; 
     1883 
     1884        cherokee_buffer_drop_ending (&srv->pidfile, 7); 
     1885        return ret_ok; 
     1886 
     1887error: 
     1888        cherokee_buffer_drop_ending (&srv->pidfile, 7); 
     1889        return ret_error; 
    18831890} 
    18841891 
  • cherokee/trunk/constants.h.pre

    r1282 r1918  
    1111# define CHEROKEE_VAR_RUN     "%localstatedir%/run" 
    1212# define CHEROKEE_CONFDIR     "%sysconfdir%/cherokee" 
    13 # define CHEROKEE_SRV_PATH    "%prefix%/sbin/cherokee" 
     13# define CHEROKEE_SERVER      "%prefix%/sbin/cherokee" 
     14# define CHEROKEE_WORKER      "%prefix%/sbin/cherokee-worker" 
    1415# define CHEROKEE_ICONSDIR    "%prefix%/share/cherokee/icons" 
    1516# define CHEROKEE_THEMEDIR    "%prefix%/share/cherokee/themes"