Merged from silc_1_0_branch.
[silc.git] / lib / silcutil / unix / silcunixsockconn.c
index 543fc833dc32a0b704ae2c518fbe2bf968c27a42..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;
       }
@@ -66,7 +68,7 @@ int silc_socket_write(SilcSocketConnection sock)
 }
 
 /* QoS read handler, this will call the read and write events to indicate
-   that data is available again after a timeout */
+   that data is available again after a timeout. */
 
 SILC_TASK_CALLBACK(silc_socket_read_qos)
 {