mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-07-22 09:39:13 +00:00
service: move worker's code in a separate function
Original-patch-by: Andrey Vagin <avagin@openvz.org> Original-patch-by: Ruslan Kuprieiev <kupruser@gmail.com> Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
parent
c90b58d855
commit
bd90e9887c
1 changed files with 29 additions and 25 deletions
54
cr-service.c
54
cr-service.c
|
|
@ -176,6 +176,34 @@ exit:
|
|||
return success ? 0 : 1;
|
||||
}
|
||||
|
||||
static int cr_service_work(void)
|
||||
{
|
||||
CriuReq *msg = 0;
|
||||
|
||||
if (recv_criu_msg(cr_service_client->sk_fd,
|
||||
&msg) == -1) {
|
||||
pr_perror("Can't recv request");
|
||||
goto err;
|
||||
}
|
||||
|
||||
switch (msg->type) {
|
||||
case CRIU_REQ_TYPE__DUMP:
|
||||
return dump_using_req(msg->dump);
|
||||
|
||||
default:
|
||||
pr_perror("Invalid request");
|
||||
goto err;
|
||||
}
|
||||
|
||||
err:
|
||||
/*
|
||||
* FIXME -- add generic error report
|
||||
*/
|
||||
|
||||
close(cr_service_client->sk_fd);
|
||||
return -1;
|
||||
}
|
||||
|
||||
int cr_service(bool daemon_mode)
|
||||
{
|
||||
int server_fd;
|
||||
|
|
@ -187,8 +215,6 @@ int cr_service(bool daemon_mode)
|
|||
socklen_t server_addr_len;
|
||||
socklen_t client_addr_len;
|
||||
|
||||
CriuReq *msg = 0;
|
||||
|
||||
cr_service_client = malloc(sizeof(struct _cr_service_client));
|
||||
|
||||
server_fd = socket(AF_LOCAL, SOCK_SEQPACKET, 0);
|
||||
|
|
@ -267,29 +293,7 @@ int cr_service(bool daemon_mode)
|
|||
continue;
|
||||
|
||||
case 0:
|
||||
if (recv_criu_msg(cr_service_client->sk_fd,
|
||||
&msg) == -1) {
|
||||
pr_perror("Can't recv request");
|
||||
goto err;
|
||||
}
|
||||
|
||||
switch (msg->type) {
|
||||
case CRIU_REQ_TYPE__DUMP:
|
||||
exit(dump_using_req(msg->dump));
|
||||
|
||||
default:
|
||||
pr_perror("Invalid request");
|
||||
goto err;
|
||||
}
|
||||
|
||||
err:
|
||||
/*
|
||||
* FIXME -- add generic error report
|
||||
*/
|
||||
|
||||
close(cr_service_client->sk_fd);
|
||||
exit(-1);
|
||||
|
||||
exit(cr_service_work());
|
||||
default:
|
||||
close(cr_service_client->sk_fd);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue