145 |
switch(Util_getAction(action)) { |
switch(Util_getAction(action)) { |
146 |
|
|
147 |
case ACTION_START: |
case ACTION_START: |
148 |
if(s->type==TYPE_PROCESS && Util_isProcessRunning(s)) { |
if(s->type==TYPE_PROCESS) { |
149 |
DEBUG("%s: Process already running -- process %s\n", prog, S); |
if(Util_isProcessRunning(s)) { |
150 |
Util_monitorSet(s); |
DEBUG("%s: Process already running -- process %s\n", prog, S); |
151 |
return; |
Util_monitorSet(s); |
152 |
} |
return; |
153 |
if(s->type==TYPE_PROCESS && !s->start) { |
} |
154 |
DEBUG("%s: Start method not defined -- process %s\n", prog, S); |
if(!s->start) { |
155 |
Util_monitorSet(s); |
DEBUG("%s: Start method not defined -- process %s\n", prog, S); |
156 |
return; |
Util_monitorSet(s); |
157 |
|
return; |
158 |
|
} |
159 |
} |
} |
160 |
do_depend(s, ACTION_STOP); |
do_depend(s, ACTION_STOP); |
161 |
do_start(s); |
do_start(s); |
168 |
Util_monitorUnset(s); |
Util_monitorUnset(s); |
169 |
return; |
return; |
170 |
} |
} |
171 |
|
/* soft unmonitor and stop: */ |
172 |
do_depend(s, ACTION_STOP); |
do_depend(s, ACTION_STOP); |
173 |
do_stop(s); |
do_stop(s); |
174 |
|
/* hard unmonitor - will reset all counters and flags: */ |
175 |
|
do_depend(s, ACTION_UNMONITOR); |
176 |
|
do_unmonitor(s); |
177 |
break; |
break; |
178 |
|
|
179 |
case ACTION_RESTART: |
case ACTION_RESTART: |
183 |
return; |
return; |
184 |
} |
} |
185 |
log("'%s' trying to restart\n", s->name); |
log("'%s' trying to restart\n", s->name); |
186 |
|
/* don't unmonitor the service - keep the start counters state */ |
187 |
do_depend(s, ACTION_STOP); |
do_depend(s, ACTION_STOP); |
188 |
if(do_stop(s)) { |
if(do_stop(s)) { |
189 |
/* Only start if stop succeeded */ |
/* Only start if stop succeeded */ |
282 |
} |
} |
283 |
} |
} |
284 |
} |
} |
|
|
|
285 |
Util_monitorSet(s); |
Util_monitorSet(s); |
|
|
|
286 |
} |
} |
287 |
|
|
288 |
|
|
299 |
return TRUE; |
return TRUE; |
300 |
|
|
301 |
s->depend_visited= TRUE; |
s->depend_visited= TRUE; |
302 |
|
|
303 |
Util_monitorUnset(s); |
/* do soft unmonitor - start counter state is kept, in the case that |
304 |
|
the process should be definitely stopped, Util_monitorUnset should |
305 |
|
be called after do_stop */ |
306 |
|
if(s->monitor != MONITOR_NOT) |
307 |
|
{ |
308 |
|
s->monitor= MONITOR_NOT; |
309 |
|
DEBUG("Monitoring disabled -- service %s\n", s->name); |
310 |
|
} |
311 |
|
|
312 |
if(s->stop && (s->type!=TYPE_PROCESS || Util_isProcessRunning(s))) { |
if(s->stop && (s->type!=TYPE_PROCESS || Util_isProcessRunning(s))) { |
313 |
log("'%s' stop: %s\n", s->name, s->stop->arg[0]); |
log("'%s' stop: %s\n", s->name, s->stop->arg[0]); |
320 |
|
|
321 |
} |
} |
322 |
|
|
323 |
|
Util_resetInfo(s); |
324 |
|
|
325 |
return TRUE; |
return TRUE; |
326 |
|
|
327 |
} |
} |