Remove check EACCESS and Fix log position to avoid errno change. (errno can be change... 45/211945/7
authorhj kim <backto.kim@samsung.com>
Mon, 12 Aug 2019 10:32:53 +0000 (19:32 +0900)
committerhj kim <backto.kim@samsung.com>
Tue, 13 Aug 2019 06:11:36 +0000 (15:11 +0900)
The media-controller daemon can return EACCESS to the client when the daemon creates a commication socket temporarily.
For this reason, if client get EACCESSn, client must retry the connection.

Change-Id: If7753f8a2590365f4edba2ba6d4183207d0ddf0e

src/media_controller_ipc.c

index b00b992..7c2192b 100644 (file)
@@ -354,7 +354,7 @@ int mc_ipc_send_message_to_server(mc_msg_type_e msg_type, mc_priv_type_e priv_ty
        int request_msg_size = 0;
        int sockfd = -1;
        struct sockaddr_un serv_addr;
-       int retry_count = 0;
+       unsigned int retry_count = 0;
 
        mc_retvm_if(!MC_STRING_VALID(request_msg), MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid query");
 
@@ -384,11 +384,7 @@ int mc_ipc_send_message_to_server(mc_msg_type_e msg_type, mc_priv_type_e priv_ty
        if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
                mc_stderror("connect error");
                close(sockfd);
-
-               if (errno == EACCES)
-                       return MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED;
-               else
-                       return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
+               return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
        }
 
        size_t full_msg_size = 0;
@@ -437,33 +433,27 @@ int mc_ipc_send_message_to_server(mc_msg_type_e msg_type, mc_priv_type_e priv_ty
        /* Receive Response */
        int recv_msg_size = -1;
        int recv_msg = -1;
-RETRY:
-       if ((recv_msg_size = recv(sockfd, &recv_msg, sizeof(recv_msg), 0)) < 0) {
-               mc_error("recv failed : [%d]", sockfd);
-               mc_stderror("recv failed");
+
+       while ((recv_msg_size = recv(sockfd, &recv_msg, sizeof(recv_msg), 0)) < 0) {
 
                if (errno == EINTR) {
                        mc_stderror("catch interrupt");
-                       goto RETRY;
-               }
+                       continue;
 
-               if (errno == EWOULDBLOCK) {
-                       if (retry_count < MAX_RETRY_COUNT) {
-                               mc_error("TIME OUT[%d]", retry_count);
-                               retry_count++;
-                               goto RETRY;
+               } else if (errno == EWOULDBLOCK) {
+                       if (retry_count++ < MAX_RETRY_COUNT) {
+                               mc_error("[No-Error] Time Out. retry_count [%d]", retry_count);
+                               continue;
                        }
 
-                       close(sockfd);
-
                        mc_error("Timeout. Can't try any more");
-                       return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
+
                } else {
                        mc_stderror("recv failed");
-                       close(sockfd);
-
-                       return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
                }
+
+               close(sockfd);
+               return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
        }
 
        mc_debug("RECEIVE OK [%d]", recv_msg);
@@ -479,7 +469,7 @@ int mc_ipc_service_connect(mc_priv_type_e priv_type)
 #ifdef _ON_DEMAND_SOCKET_ACTIVATION
        int sockfd = -1;
        struct sockaddr_un serv_addr;
-       unsigned int retrycount = 0;
+       unsigned int retry_count = 0;
 #endif
 
        ret = __make_service_connection(priv_type);
@@ -502,11 +492,7 @@ int mc_ipc_service_connect(mc_priv_type_e priv_type)
        if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
                mc_stderror("connect error");
                close(sockfd);
-
-               if (errno == EACCES)
-                       return MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED;
-               else
-                       return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
+               return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
        }
 
        close(sockfd);
@@ -515,9 +501,9 @@ int mc_ipc_service_connect(mc_priv_type_e priv_type)
        mc_retvm_if(ret == MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED, ret, "Permission deny!");
 
        /* Try to make connection untill starting daemon is completed */
-       while ((ret != MEDIA_CONTROLLER_ERROR_NONE) && (retrycount++ < MAX_WAIT_COUNT)) {
+       while ((ret != MEDIA_CONTROLLER_ERROR_NONE) && (retry_count++ < MAX_WAIT_COUNT)) {
                MC_MILLISEC_SLEEP(200);
-               mc_error("[No-Error] retry count [%d]", retrycount);
+               mc_error("[No-Error] retry_count [%d]", retry_count);
                ret = __make_service_connection(priv_type);
                mc_retvm_if(ret == MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED, ret, "Permission deny!");
        }