Merge "Fix for unlimited attepmts to write to socket" into tizen
authorPyun DoHyun <dh79.pyun@samsung.com>
Thu, 7 Feb 2019 23:33:52 +0000 (23:33 +0000)
committerGerrit Code Review <gerrit@review.ap-northeast-2.compute.internal>
Thu, 7 Feb 2019 23:33:52 +0000 (23:33 +0000)
bt-api/bt-rfcomm-client.c

index 4c0b4c9..888f562 100644 (file)
@@ -1287,7 +1287,7 @@ BT_EXPORT_API int bluetooth_rfcomm_disconnect(int socket_fd)
 #else
 static int __write_all(int fd, const char *buf, int len)
 {
-       int sent = 0;
+       int sent = 0, try = 0;
 
        BT_DBG("+");
        while (len > 0) {
@@ -1296,8 +1296,11 @@ static int __write_all(int fd, const char *buf, int len)
                written = write(fd, buf, len);
                BT_DBG("written: %d", written);
                if (written < 0) {
-                       if (errno == EINTR || errno == EAGAIN)
-                               continue;
+                       if (errno == EINTR || errno == EAGAIN) {
+                               try++;
+                               if (try <= 49)
+                                       continue;
+                       }
                        return -1;
                }
 
@@ -1307,6 +1310,7 @@ static int __write_all(int fd, const char *buf, int len)
                len -= written;
                buf += written;
                sent += written;
+               try = 0;
        }
 
        BT_DBG("-");