X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=lib%2Fsilcutil%2Funix%2Fsilcunixsockconn.c;h=a4c6c684cc0fca31d79d1948ef29e77dadffe846;hp=3120e8ef3e499cc424897e04f2f172654e44e514;hb=de7a4916e9e7786bd4bf95b9d6722dd0701993fd;hpb=0bd01c4f268d0869c5c576afd91ba24a2d10d42c diff --git a/lib/silcutil/unix/silcunixsockconn.c b/lib/silcutil/unix/silcunixsockconn.c index 3120e8ef..a4c6c684 100644 --- a/lib/silcutil/unix/silcunixsockconn.c +++ b/lib/silcutil/unix/silcunixsockconn.c @@ -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)); +}