]> git.cworth.org Git - ttt/blobdiff - src/x.c
2005-11-29 Carl Worth <cworth@cworth.org>
[ttt] / src / x.c
diff --git a/src/x.c b/src/x.c
index dc5c1dd38e807ee300f9a1d77cc1ef187ef79f7d..a95fedfbc5e8a142606698cf4ab629368e1e2e8d 100644 (file)
--- a/src/x.c
+++ b/src/x.c
@@ -205,6 +205,29 @@ xbind (int sockfd, const struct sockaddr *my_addr, socklen_t addrlen)
     }
 }
 
+ttt_status_t
+xconnect (int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen)
+{
+    int ret;
+
+    ret = connect (sockfd, serv_addr, addrlen);
+    if (ret == -1) {
+       switch (errno) {
+       case ECONNREFUSED:
+           return TTT_STATUS_CONNECTION_REFUSED;
+       case EHOSTUNREACH:
+       case ENETUNREACH:
+           return TTT_STATUS_NETWORK_UNREACHABLE;
+       default:
+       fprintf (stderr, "Error: connect failed (errno = %d): %s. Aborting.\n",
+                errno, strerror (errno));
+       exit (1);
+       }
+    }
+
+    return TTT_STATUS_SUCCESS;
+}
+
 void
 xlisten (int s, int backlog)
 {