[xiph-commits] r13582 - icecast/trunk/net

karl at svn.xiph.org karl at svn.xiph.org
Tue Aug 21 15:17:13 PDT 2007


Author: karl
Date: 2007-08-21 15:17:13 -0700 (Tue, 21 Aug 2007)
New Revision: 13582

Modified:
   icecast/trunk/net/sock.c
   icecast/trunk/net/sock.h
Log:
added function to check whether the socket is still alive


Modified: icecast/trunk/net/sock.c
===================================================================
--- icecast/trunk/net/sock.c	2007-08-21 15:39:05 UTC (rev 13581)
+++ icecast/trunk/net/sock.c	2007-08-21 22:17:13 UTC (rev 13582)
@@ -204,6 +204,21 @@
     return (ret == 0);
 }
 
+
+/* determines if the passed socket is still connected */
+int sock_active (sock_t sock)
+{
+    char c;
+    int l;
+
+    l = recv (sock, &c, 1, MSG_PEEK);
+    if (l == 0)
+        return 0;
+    if (l < 0 && sock_recoverable (sock_error()))
+        return 1;
+    return 0;
+}
+
 /* inet_aton
 **
 ** turns an ascii ip address into a binary representation

Modified: icecast/trunk/net/sock.h
===================================================================
--- icecast/trunk/net/sock.h	2007-08-21 15:39:05 UTC (rev 13581)
+++ icecast/trunk/net/sock.h	2007-08-21 22:17:13 UTC (rev 13582)
@@ -105,6 +105,7 @@
 int sock_recoverable(int error);
 int sock_stalled(int error);
 int sock_valid_socket(sock_t sock);
+int sock_active (sock_t sock);
 int sock_set_blocking(sock_t sock, const int block);
 int sock_set_nolinger(sock_t sock);
 int sock_set_keepalive(sock_t sock);



More information about the commits mailing list