Changeset 1918
- Timestamp:
- 08/31/08 13:41:49 (3 months ago)
- Files:
-
- cherokee/trunk/ChangeLog (modified) (1 diff)
- cherokee/trunk/admin/CherokeeManagement.py (modified) (4 diffs)
- cherokee/trunk/admin/PageMain.py (modified) (1 diff)
- cherokee/trunk/admin/configured.py.pre (modified) (1 diff)
- cherokee/trunk/cherokee/Makefile.am (modified) (3 diffs)
- cherokee/trunk/cherokee/main.c (moved) (moved from cherokee/trunk/cherokee/main_guardian.c) (9 diffs)
- cherokee/trunk/cherokee/main_worker.c (copied) (copied from cherokee/trunk/cherokee/main.c)
- cherokee/trunk/cherokee/server.c (modified) (2 diffs)
- cherokee/trunk/constants.h.pre (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
cherokee/trunk/ChangeLog
r1917 r1918 1 2008-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 1 10 2008-08-30 Alvaro Lopez Ortega <alvaro@alobbs.com> 2 11 cherokee/trunk/admin/CherokeeManagement.py
r1914 r1918 50 50 def __init__ (self, cfg): 51 51 self._cfg = cfg 52 self._pid = self._get_ guardian_pid()52 self._pid = self._get_pid (worker=False) 53 53 54 54 # Public … … 74 74 os.setsid() 75 75 76 p = Popen ([CHEROKEE_ GUARDIAN, '-C', self._cfg.file],76 p = Popen ([CHEROKEE_SERVER, '-C', self._cfg.file], 77 77 stdout=PIPE, stderr=PIPE, 78 78 preexec_fn=daemonize, close_fds=True) … … 112 112 113 113 # Get the PID 114 pid = self._get_ cherokee_pid()114 pid = self._get_pid (worker=True) 115 115 if not pid: return 116 116 … … 139 139 # Protected 140 140 # 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): 147 142 pid_file = self._cfg.get_val("server!pid_file") 148 143 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) 150 151 return self.__read_pid_file (pid_file) 151 152 cherokee/trunk/admin/PageMain.py
r1638 r1918 69 69 70 70 manager = cherokee_management_get (self._cfg) 71 if manager. _pid:71 if manager.is_alive(): 72 72 current_pid = str(manager._pid) 73 73 else: cherokee/trunk/admin/configured.py.pre
r1510 r1918 9 9 VERSION = "%version%" 10 10 11 CHEROKEE_S RV_PATH= join (PREFIX, "sbin/cherokee")12 CHEROKEE_ GUARDIAN = join (PREFIX, "sbin/cherokee-guardian")11 CHEROKEE_SERVER = join (PREFIX, "sbin/cherokee") 12 CHEROKEE_WORKER = join (PREFIX, "sbin/cherokee-worker") 13 13 CHEROKEE_ADMINDIR = join (PREFIX, "share/cherokee/admin") 14 14 CHEROKEE_ICONSDIR = join (PREFIX, "share/cherokee/icons") cherokee/trunk/cherokee/Makefile.am
r1887 r1918 1190 1190 1191 1191 # 1192 # Main binary: Cherokee server1193 # 1194 sbin_PROGRAMS = cherokee cherokee-admin1192 # Cherokee server worker 1193 # 1194 sbin_PROGRAMS = cherokee-worker cherokee-admin 1195 1195 1196 1196 if !PLATFORM_WIN32 1197 sbin_PROGRAMS += cherokee -guardian1198 endif 1199 1200 cherokee_ SOURCES = main.c1201 cherokee_ LDADD = \1197 sbin_PROGRAMS += cherokee 1198 endif 1199 1200 cherokee_worker_SOURCES = main_worker.c 1201 cherokee_worker_LDADD = \ 1202 1202 $(PTHREAD_LIBS) \ 1203 1203 $(PTHREAD_CFLAGS) \ … … 1207 1207 1208 1208 # 1209 # Cherokee guardians1210 # 1211 cherokee_ guardian_SOURCES = main_guardian.c1209 # Cherokee 1210 # 1211 cherokee_SOURCES = main.c 1212 1212 1213 1213 # … … 1215 1215 # 1216 1216 cherokee_admin_SOURCES = main_admin.c 1217 cherokee_admin_LDADD = $(cherokee_ LDADD)1218 cherokee_admin_LDFLAGS = $(cherokee_ LDFLAGS)1217 cherokee_admin_LDADD = $(cherokee_worker_LDADD) 1218 cherokee_admin_LDFLAGS = $(cherokee_worker_LDFLAGS) 1219 1219 1220 1220 cherokee/trunk/cherokee/main.c
r1771 r1918 39 39 #define DELAY_ERROR 3000 * 1000 40 40 #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 45 pid_t pid; 46 char *pid_file_path; 47 cherokee_boolean_t graceful_restart; 48 49 static const char * 50 figure_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 63 static char * 64 figure_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 } 45 87 46 88 static void … … 114 156 115 157 static void 116 guardian_signals_handler (int sig, siginfo_t *si, void *context)158 signals_handler (int sig, siginfo_t *si, void *context) 117 159 { 118 160 int exitcode; … … 138 180 kill (pid, SIGTERM); 139 181 process_wait (pid); 140 pid_file_clean ( PID_FILE);182 pid_file_clean (pid_file_path); 141 183 exit(0); 142 184 … … 154 196 155 197 static void 156 set_ guardian_signals (void)198 set_signals (void) 157 199 { 158 200 struct sigaction act; … … 167 209 /* Signals it handles 168 210 */ 169 act.sa_sigaction = guardian_signals_handler;211 act.sa_sigaction = signals_handler; 170 212 sigemptyset (&act.sa_mask); 171 213 act.sa_flags = SA_SIGINFO; … … 242 284 main (int argc, char *argv[]) 243 285 { 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(); 248 291 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); 249 297 250 298 /* Turn into a daemon … … 252 300 if (! single_time) { 253 301 may_daemonize (argc, argv); 254 pid_file_save ( PID_FILE, getpid());302 pid_file_save (pid_file_path, getpid()); 255 303 } 256 304 … … 258 306 graceful_restart = false; 259 307 260 pid = process_launch (CHEROKEE_ SRV_PATH, argv);308 pid = process_launch (CHEROKEE_WORKER, argv); 261 309 if (pid < 0) { 262 PRINT_MSG ("Couldn't launch '%s'\n", CHEROKEE_ SRV_PATH);310 PRINT_MSG ("Couldn't launch '%s'\n", CHEROKEE_WORKER); 263 311 exit (1); 264 312 } … … 273 321 } 274 322 275 pid_file_clean ( PID_FILE);323 pid_file_clean (pid_file_path); 276 324 return 0; 277 325 } cherokee/trunk/cherokee/server.c
r1912 r1918 1867 1867 return ret_not_found; 1868 1868 1869 cherokee_buffer_add_str (&srv->pidfile, ".worker"); 1870 1869 1871 file = fopen (srv->pidfile.buf, "w+"); 1870 1872 if (file == NULL) { 1871 1873 PRINT_ERRNO (errno, "Cannot write PID file '%s': '${errno}'", srv->pidfile.buf); 1872 return ret_error;1874 goto error; 1873 1875 } 1874 1876 … … 1878 1880 1879 1881 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 1887 error: 1888 cherokee_buffer_drop_ending (&srv->pidfile, 7); 1889 return ret_error; 1883 1890 } 1884 1891 cherokee/trunk/constants.h.pre
r1282 r1918 11 11 # define CHEROKEE_VAR_RUN "%localstatedir%/run" 12 12 # 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" 14 15 # define CHEROKEE_ICONSDIR "%prefix%/share/cherokee/icons" 15 16 # define CHEROKEE_THEMEDIR "%prefix%/share/cherokee/themes"