Merged from silc_1_0_branch.
[silc.git] / lib / silcutil / unix / silcunixsockconn.c
index b65ad21dc1d90c2ab5e93de5989d02fb7a2212ed..4d14ac5fc323626aa037aeff5eabedeca60441da 100644 (file)
@@ -33,6 +33,8 @@ int silc_socket_write(SilcSocketConnection sock)
   int fd = sock->sock;
   SilcBuffer src = sock->outbuf;
 
+  if (!src)
+    return -2;
   if (SILC_IS_DISABLED(sock))
     return -1;
 
@@ -41,7 +43,7 @@ int silc_socket_write(SilcSocketConnection sock)
   if (src->len > 0) {
     ret = write(fd, src->data, src->len);
     if (ret < 0) {
-      if (errno == EAGAIN) {
+      if (errno == EAGAIN || errno == EINTR) {
        SILC_LOG_DEBUG(("Could not write immediately, will do it later"));
        return -2;
       }