[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