[Bugfix][API-835][At-extension]client connection failed.

Change-Id: I54fcffdc2a52a8c9e2f1fc2127209c15e39f39c2
diff --git a/src/lynq/lib/liblynq-at-extension/lynq_at.cpp b/src/lynq/lib/liblynq-at-extension/lynq_at.cpp
index 28d9a4a..80c6588 100755
--- a/src/lynq/lib/liblynq-at-extension/lynq_at.cpp
+++ b/src/lynq/lib/liblynq-at-extension/lynq_at.cpp
@@ -95,7 +95,7 @@
     if (connect(sockfd, (struct sockaddr *) &addr_server, sizeof(struct sockaddr_un)) < 0)
     {
         close(sockfd);
-        LYDBGLOG("Can't connect to server side, path: %s, errno:%d", name, errno);
+        LYDBGLOG("Can't connect to server side, path: %s, %s", name, strerror(errno));
         return -1;
     }
     LYINFLOG("[%d][%s] connect %s success",LINE,FUNC,name);
diff --git a/src/telephonyware/3.0/atcid/atci/src/lynq-private/lynq_atsvc_controller.c b/src/telephonyware/3.0/atcid/atci/src/lynq-private/lynq_atsvc_controller.c
index 3b3b249..5952c5a 100755
--- a/src/telephonyware/3.0/atcid/atci/src/lynq-private/lynq_atsvc_controller.c
+++ b/src/telephonyware/3.0/atcid/atci/src/lynq-private/lynq_atsvc_controller.c
@@ -1,4 +1,5 @@
 #include <stdio.h>
+#include <unistd.h>
 #include <sys/socket.h>
 #include <sys/un.h>
 #include <sys/types.h>
@@ -30,6 +31,8 @@
 struct sockaddr_un g_remote_addr = {0};
 struct sockaddr_un g_local_addr = {0};
 
+int g_create_socket = 0;
+
 typedef enum
 {
     INIT_SUCCESS=0,
@@ -101,7 +104,7 @@
             }
             if (remove(socket_name) == -1 && errno != ENOENT)
             { 
-                ALOGD("remove-%s fail and errno:%d", socket_name,errno); 
+                ALOGD("remove-%s fail and errno:%d", socket_name,errno);
             }
             while(access(socket_name, R_OK)==0)
             {
@@ -111,9 +114,17 @@
             ALOGD("remove %s", socket_name);
             local_addr->sun_family = AF_UNIX;
             sprintf(local_addr->sun_path, socket_name);
-            if(bind(socket_fd, (struct sockaddr *)local_addr, sizeof(struct sockaddr_un)) == -1)
+            // local_addr->sun_family = AF_UNIX;
+            // memset(local_addr->sun_path,'\0',sizeof(local_addr->sun_path));
+            // strncpy(local_addr->sun_path, socket_name, sizeof(local_addr->sun_path) - 1);
+            // unlink(socket_name);
+            //sprintf(local_addr->sun_path, socket_name);
+            //strncpy(local_addr.sun_path, socket_name)
+            if(bind(socket_fd, (struct sockaddr *)local_addr, sizeof(struct sockaddr_un)) < 0)
             {
-                ALOGD("[%d][%s]bind fail and errno: %d",LINE,FUNC,errno);
+                ALOGD("bind failed name=[%s] reason=[%s]\n", socket_name, strerror(errno));
+                //ALOGD("[%d][%s]bind fail and errno: %d",LINE,FUNC,errno);
+                close(g_atsvc_socket_fd);
                 return -1;
             }
             if(type == SOCK_STREAM)
@@ -121,6 +132,7 @@
                 if(listen(socket_fd,backlog) == -1)
                 {
                     ALOGD("[%d]listen fd: %dfail",LINE);
+                    close(g_atsvc_socket_fd);
                     return -1;
                 }
             }
@@ -395,14 +407,27 @@
     socklen_t client_len;
     int ret;
     char parser_buf[SOCKET_BUF_SIZE];
+    TryNewSocket:
     g_atsvc_socket_fd = create_socket(AF_UNIX, SOCK_STREAM,0, 0, NULL,RIL_SOCKET_NAME, (void *)&g_local_addr, 2);
     if(0 > g_atsvc_socket_fd)
     {
         ALOGD("init socket fail and fd:%d",g_atsvc_socket_fd);
-        return NULL;
+        g_create_socket++;
+        if(g_create_socket == 10)
+        {
+            ALOGD("create_socket max try count is %d\n", g_create_socket);
+            return NULL;
+        }
+        else
+        {
+            ALOGD("create_socket try again %d\n", g_create_socket);
+            usleep(500*1000);
+            goto TryNewSocket;
+        }
     }
+    g_create_socket = 0;
     TryNewLink:
-    ALOGE("[%d][%s] TryNewLink!");
+    ALOGE("[%d][%s] TryNewLink!", LINE,FUNC);
     client_len = sizeof(g_local_addr);
     int conn = accept(g_atsvc_socket_fd,(struct sockaddr *) &g_local_addr, &client_len);
     if (conn <= 0)