updates.
[silc.git] / lib / silcutil / unix / silcunixsockconn.c
index 3120e8ef3e499cc424897e04f2f172654e44e514..a4c6c684cc0fca31d79d1948ef29e77dadffe846 100644 (file)
@@ -46,6 +46,7 @@ int silc_socket_write(SilcSocketConnection sock)
        return -2;
       }
       SILC_LOG_DEBUG(("Cannot write to socket: %s", strerror(errno)));
+      sock->sock_error = errno;
       return -1;
     }
 
@@ -81,6 +82,7 @@ int silc_socket_read(SilcSocketConnection sock)
       return -2;
     }
     SILC_LOG_DEBUG(("Cannot read from socket: %d:%s", fd, strerror(errno)));
+    sock->sock_error = errno;
     return -1;
   }
 
@@ -103,3 +105,21 @@ int silc_socket_read(SilcSocketConnection sock)
 
   return len;
 }
+
+/* Returns human readable socket error message */
+
+bool silc_socket_get_error(SilcSocketConnection sock, char *error,
+                          uint32 error_len)
+{
+  char *err;
+
+  if (!sock->sock_error)
+    return FALSE;
+
+  err = strerror(sock->sock_error);
+  if (strlen(err) > error_len)
+    return FALSE;
+
+  memset(error, 0, error_len);
+  memcpy(error, err, strlen(err));
+}