socket.c
changeset 39 0e21a65074a6
parent 27 1e79b4cc8f1b
child 48 1c67f512779b
--- 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