[CRIU] [PATCH 1/5] service: move worker's code in a separate function
Andrey Vagin
avagin at openvz.org
Thu Sep 19 06:37:44 EDT 2013
I think it's more readable
Cc: Ruslan Kuprieiev <kupruser at gmail.com>
Signed-off-by: Andrey Vagin <avagin at openvz.org>
---
cr-service.c | 75 ++++++++++++++++++++++++++++++++----------------------------
1 file changed, 40 insertions(+), 35 deletions(-)
diff --git a/cr-service.c b/cr-service.c
index 79ba032..1d6f5a6 100644
--- a/cr-service.c
+++ b/cr-service.c
@@ -161,6 +161,45 @@ exit:
return resp.success ? 0 : 1;
}
+static int cr_service_work(CriuMsg *msg)
+{
+ CriuDumpResp resp = CRIU_DUMP_RESP__INIT;
+
+ if (recv_criu_msg(cr_service_client->sk_fd,
+ &msg) == -1) {
+ pr_perror("Can't recv request");
+ goto err;
+ }
+
+ switch (msg->type) {
+ case CRIU_MSG__TYPE__EMPTY:
+ pr_perror("Empty msg");
+ goto err;
+
+ case CRIU_MSG__TYPE__DUMPREQ:
+ exit(dump_using_req(msg->dump_req));
+
+ default:
+ pr_perror("Invalid request");
+ goto err;
+ }
+
+err:
+ /*
+ * FIXME We're using CriuDumpResp here for now,
+ * but, when more requests will be added,
+ * they might require some special response,
+ * so we will need to use here some atomic resp,
+ * and extend it where needed.
+ */
+ if (send_criu_dump_resp(cr_service_client->sk_fd,
+ &resp) == -1)
+ pr_perror("Can't send responce");
+
+ close(cr_service_client->sk_fd);
+ exit(-1);
+}
+
int cr_service(bool daemon_mode)
{
int server_fd;
@@ -173,7 +212,6 @@ int cr_service(bool daemon_mode)
socklen_t client_addr_len;
CriuMsg *msg = 0;
- CriuDumpResp resp = CRIU_DUMP_RESP__INIT;
cr_service_client = malloc(sizeof(struct _cr_service_client));
@@ -246,40 +284,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_MSG__TYPE__EMPTY:
- pr_perror("Empty msg");
- goto err;
-
- case CRIU_MSG__TYPE__DUMPREQ:
- exit(dump_using_req(msg->dump_req));
-
- default:
- pr_perror("Invalid request");
- goto err;
- }
-
-err:
- /*
- * FIXME We're using CriuDumpResp here for now,
- * but, when more requests will be added,
- * they might require some special response,
- * so we will need to use here some atomic resp,
- * and extend it where needed.
- */
- if (send_criu_dump_resp(cr_service_client->sk_fd,
- &resp) == -1)
- pr_perror("Can't send responce");
-
- close(cr_service_client->sk_fd);
- exit(-1);
-
+ exit(cr_service_work(msg));
default:
close(cr_service_client->sk_fd);
}
--
1.8.3.1
More information about the CRIU
mailing list