diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/retrace/create.wsgi | 2 | ||||
| -rw-r--r-- | src/retrace/worker.c | 15 |
2 files changed, 15 insertions, 2 deletions
diff --git a/src/retrace/create.wsgi b/src/retrace/create.wsgi index e26ae0cc..7c5f81b4 100644 --- a/src/retrace/create.wsgi +++ b/src/retrace/create.wsgi @@ -104,7 +104,7 @@ def application(environ, start_response): return response(start_response, "403 Forbidden", "Required file \"%s\" is missing" % required_file) - Popen(["/usr/bin/abrt-retrace-worker", "%d" % taskid]) + call(["/usr/bin/abrt-retrace-worker", "%d" % taskid]) return response(start_response, "201 Created", "", [("X-Task-Id", "%d" % taskid), diff --git a/src/retrace/worker.c b/src/retrace/worker.c index 83773e61..8207a032 100644 --- a/src/retrace/worker.c +++ b/src/retrace/worker.c @@ -50,7 +50,20 @@ int main(int argc, char **argv) /* required by mock to be able to write into result directory */ setenv("SUDO_GID", "0", 1); - /* launch worker.py */ + /* fork and launch worker.py */ + pid = fork(); + + if (pid < 0) + { + fputs("Unable to fork.", stderr); + return 6; + } + + /* parent - exit */ + if (pid > 0) + return 0; + + /* child */ sprintf(command, "/usr/bin/python /usr/share/abrt-retrace/worker.py \"%s\"", argv[1]); pipe = popen(command, "r"); if (pipe == NULL) |
