Commit 14559435 authored by Pavel Emelyanov's avatar Pavel Emelyanov

service: Sanitize service-child code-flow

* Close fd only once at the end
* Close listener socket
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 0acc2624
...@@ -168,7 +168,6 @@ exit: ...@@ -168,7 +168,6 @@ exit:
} }
} }
close(sk);
return success ? 0 : 1; return success ? 0 : 1;
} }
...@@ -200,7 +199,6 @@ static int cr_service_work(int sk) ...@@ -200,7 +199,6 @@ static int cr_service_work(int sk)
} }
err: err:
close(sk);
return -1; return -1;
} }
...@@ -288,16 +286,20 @@ int cr_service(bool daemon_mode) ...@@ -288,16 +286,20 @@ int cr_service(bool daemon_mode)
} }
pr_info("Connected.\n"); pr_info("Connected.\n");
child_pid = fork();
if (child_pid == 0) {
int ret;
switch (child_pid = fork()) { close(server_fd);
case 0: ret = cr_service_work(sk);
exit(cr_service_work(sk));
case -1:
pr_perror("Can't fork a child.");
/* fall through */
default:
close(sk); close(sk);
exit(ret);
} }
if (child_pid < 0)
pr_perror("Can't fork a child");
close(sk);
} }
err: err:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment