Commit bd90e988 authored by Pavel Emelyanov's avatar Pavel Emelyanov

service: move worker's code in a separate function

Original-patch-by: 's avatarAndrey Vagin <avagin@openvz.org>
Original-patch-by: 's avatarRuslan Kuprieiev <kupruser@gmail.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent c90b58d8
......@@ -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);
}
......
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