Merged from silc_1_0_branch (second merge).
[silc.git] / lib / silcutil / unix / silcunixsockconn.c
index 285d9418fe84fdd77e5bd5c7f8e39b0b1fc01803..26d9dd73a15e362f138f25281288c11f059ae815 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;
 
@@ -72,8 +74,9 @@ SILC_TASK_CALLBACK(silc_socket_read_qos)
 {
   SilcSocketConnection sock = context;
   sock->qos->applied = TRUE;
-  silc_schedule_set_listen_fd(sock->qos->schedule, sock->sock,
-                             (SILC_TASK_READ | SILC_TASK_WRITE), TRUE);
+  if (sock->users > 1)
+    silc_schedule_set_listen_fd(sock->qos->schedule, sock->sock,
+                               (SILC_TASK_READ | SILC_TASK_WRITE), TRUE);
   sock->qos->applied = FALSE;
   silc_socket_free(sock);
 }