[PROTO] send MSG_STOP_ACK before everything stops
authorNikita Kalyazin <n.kalyazin@samsung.com>
Thu, 3 Oct 2013 06:19:47 +0000 (10:19 +0400)
committerNikita Kalyazin <n.kalyazin@samsung.com>
Thu, 3 Oct 2013 06:19:47 +0000 (10:19 +0400)
MSG_STOP_ACK is sent right after MSG_STOP received.
If an error occurs during stop it is reported via MSG_ERROR.

Change-Id: Ia012b4c27bd77a80ea0e939e6c4979ab4c186e81
Signed-off-by: Nikita Kalyazin <n.kalyazin@samsung.com>
daemon/da_protocol.c

index f6f88ef..2b7783f 100644 (file)
@@ -910,6 +910,13 @@ static int send_reply(struct msg_t *msg)
        return 0;
 }
 
+static void write_msg_error(const char *err_str)
+{
+       struct msg_data_t *err_msg = gen_message_error(err_str);
+       write_to_buf(err_msg);
+       free_msg_data(err_msg);
+}
+
 int sendACKToHost(enum HostMessageT resp, enum ErrorCode err_code,
                        char *payload, int payload_size)
 {
@@ -1068,9 +1075,9 @@ int host_message_handler(struct msg_t *msg)
                sendACKToHost(msg->id, ERR_NO, 0, 0);
                break;
        case NMSG_STOP:
-               error_code = stop_all();
-               //send ack to host
-               sendACKToHost(msg->id, error_code, 0, 0);
+               sendACKToHost(msg->id, ERR_NO, 0, 0);
+               if (stop_all() != ERR_NO)
+                       write_msg_error("Stop failed");
                break;
        case NMSG_CONFIG:
                error_code=ERR_NO;