Show More
@@ -33,7 +33,6 b' struct cmdserveropts {' | |||
|
33 | 33 | char sockname[UNIX_PATH_MAX]; |
|
34 | 34 | char redirectsockname[UNIX_PATH_MAX]; |
|
35 | 35 | char lockfile[UNIX_PATH_MAX]; |
|
36 | char pidfile[UNIX_PATH_MAX]; | |
|
37 | 36 | size_t argsize; |
|
38 | 37 | const char **args; |
|
39 | 38 | int lockfd; |
@@ -149,16 +148,12 b' static void setcmdserveropts(struct cmds' | |||
|
149 | 148 | const char *basename = (envsockname) ? envsockname : sockdir; |
|
150 | 149 | const char *sockfmt = (envsockname) ? "%s" : "%s/server"; |
|
151 | 150 | const char *lockfmt = (envsockname) ? "%s.lock" : "%s/lock"; |
|
152 | const char *pidfmt = (envsockname) ? "%s.pid" : "%s/pid"; | |
|
153 | 151 | r = snprintf(opts->sockname, sizeof(opts->sockname), sockfmt, basename); |
|
154 | 152 | if (r < 0 || (size_t)r >= sizeof(opts->sockname)) |
|
155 | 153 | abortmsg("too long TMPDIR or CHGSOCKNAME (r = %d)", r); |
|
156 | 154 | r = snprintf(opts->lockfile, sizeof(opts->lockfile), lockfmt, basename); |
|
157 | 155 | if (r < 0 || (size_t)r >= sizeof(opts->lockfile)) |
|
158 | 156 | abortmsg("too long TMPDIR or CHGSOCKNAME (r = %d)", r); |
|
159 | r = snprintf(opts->pidfile, sizeof(opts->pidfile), pidfmt, basename); | |
|
160 | if (r < 0 || (size_t)r >= sizeof(opts->pidfile)) | |
|
161 | abortmsg("too long TMPDIR or CHGSOCKNAME (r = %d)", r); | |
|
162 | 157 | } |
|
163 | 158 | |
|
164 | 159 | /* |
@@ -214,7 +209,6 b' static void execcmdserver(const struct c' | |||
|
214 | 209 | "--cmdserver", "chgunix", |
|
215 | 210 | "--address", opts->sockname, |
|
216 | 211 | "--daemon-postexec", "chdir:/", |
|
217 | "--pid-file", opts->pidfile, | |
|
218 | 212 | "--config", "extensions.chgserver=", |
|
219 | 213 | }; |
|
220 | 214 | size_t baseargvsize = sizeof(baseargv) / sizeof(baseargv[0]); |
@@ -314,21 +308,13 b' static hgclient_t *connectcmdserver(stru' | |||
|
314 | 308 | return hgc; |
|
315 | 309 | } |
|
316 | 310 | |
|
317 |
static void killcmdserver(const struct cmdserveropts *opts |
|
|
311 | static void killcmdserver(const struct cmdserveropts *opts) | |
|
318 | 312 | { |
|
319 | FILE *fp = fopen(opts->pidfile, "r"); | |
|
320 | if (!fp) | |
|
321 | abortmsg("cannot open %s (errno = %d)", opts->pidfile, errno); | |
|
322 | int pid = 0; | |
|
323 | int n = fscanf(fp, "%d", &pid); | |
|
324 | fclose(fp); | |
|
325 | if (n != 1 || pid <= 0) | |
|
326 | abortmsg("cannot read pid from %s", opts->pidfile); | |
|
327 | ||
|
328 | if (kill((pid_t)pid, sig) < 0) { | |
|
329 | if (errno == ESRCH) | |
|
330 | return; | |
|
331 | abortmsg("cannot kill %d (errno = %d)", pid, errno); | |
|
313 | /* resolve config hash */ | |
|
314 | char *resolvedpath = realpath(opts->sockname, NULL); | |
|
315 | if (resolvedpath) { | |
|
316 | unlink(resolvedpath); | |
|
317 | free(resolvedpath); | |
|
332 | 318 | } |
|
333 | 319 | } |
|
334 | 320 | |
@@ -536,11 +522,8 b' int main(int argc, const char *argv[], c' | |||
|
536 | 522 | setcmdserverargs(&opts, argc, argv); |
|
537 | 523 | |
|
538 | 524 | if (argc == 2) { |
|
539 | int sig = 0; | |
|
540 | if (strcmp(argv[1], "--kill-chg-daemon") == 0) | |
|
541 | sig = SIGTERM; | |
|
542 | if (sig > 0) { | |
|
543 | killcmdserver(&opts, sig); | |
|
525 | if (strcmp(argv[1], "--kill-chg-daemon") == 0) { | |
|
526 | killcmdserver(&opts); | |
|
544 | 527 | return 0; |
|
545 | 528 | } |
|
546 | 529 | } |
@@ -2384,9 +2384,9 b' class TestRunner(object):' | |||
|
2384 | 2384 | def _killchgdaemons(self): |
|
2385 | 2385 | """Kill all background chg command servers spawned by tests""" |
|
2386 | 2386 | for f in os.listdir(self._chgsockdir): |
|
2387 |
if n |
|
|
2387 | if '.' in f: | |
|
2388 | 2388 | continue |
|
2389 |
|
|
|
2389 | os.unlink(os.path.join(self._chgsockdir, f)) | |
|
2390 | 2390 | |
|
2391 | 2391 | def _outputcoverage(self): |
|
2392 | 2392 | """Produce code coverage output.""" |
General Comments 0
You need to be logged in to leave comments.
Login now