--- a/socket.c Tue Aug 26 01:30:53 2008 +0300
+++ b/socket.c Wed Aug 27 10:11:44 2008 +0300
@@ -77,6 +77,23 @@
return sock;
}
+/*
+ * Check if the given socket has an error condition set, mostly intended for use with socket_connect_async.
+ *
+ * Returns 0 and sets *error on success (zero = no error, nonzero = error), -1 on failure (invalid socket).
+ */
+int socket_check_error (int sock, int *error) {
+ socklen_t optlen = sizeof(*error);
+
+ if (getsockopt(sock, SOL_SOCKET, SO_ERROR, error, &optlen))
+ PERROR("getsockopt");
+
+ return 0;
+
+error:
+ return -1;
+}
+
/*
* Do something to apply an endpoint to a socket