$ git clone https://socialnetwork.ion.nu/socialnetwork.git
commit 0eb942889f61c2bccb9d8f617907042509348f8c
Author: Alicia <...>
Date:   Wed Jan 4 23:48:45 2017 +0100

    Removed the redundant udpstream_listen(), added udpstream_getsocket()

diff --git a/udpstream.c b/udpstream.c
index 8b3c6c8..2ec291e 100644
--- a/udpstream.c
+++ b/udpstream.c
@@ -250,13 +250,10 @@ ssize_t udpstream_write(struct udpstream* stream, void* buf, size_t size)
   return size;
 }
 
-void udpstream_listen(int sock, struct sockaddr* addr, socklen_t addrlen)
-{
-  bind(sock, addr, addrlen);
-}
-
 void udpstream_getaddr(struct udpstream* stream, struct sockaddr* addr, socklen_t* addrlen)
 {
   if(*addrlen>stream->addrlen){*addrlen=stream->addrlen;}
   memcpy(addr, &stream->addr, *addrlen);
 }
+
+int udpstream_getsocket(struct udpstream* stream){return stream->sock;}
diff --git a/udpstream.h b/udpstream.h
index f5a2744..bf18385 100644
--- a/udpstream.h
+++ b/udpstream.h
@@ -14,6 +14,10 @@
     You should have received a copy of the GNU Affero General Public License
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
+#ifndef UDPSTREAM_H
+#define UDPSTREAM_H
+#include <sys/socket.h>
+
 struct udpstream;
 
 // Create a new stream on the given socket that sends and receives to/from the given address
@@ -28,7 +32,8 @@ extern ssize_t udpstream_read(struct udpstream* stream, void* buf, size_t size);
 
 extern ssize_t udpstream_write(struct udpstream* stream, void* buf, size_t size);
 
-extern void udpstream_listen(int sock, struct sockaddr* addr, socklen_t addrlen);
-
 // Get the network address of a stream's peer (useful for UDP-punchthrough)
 extern void udpstream_getaddr(struct udpstream* stream, struct sockaddr* addr, socklen_t* addrlen);
+
+extern int udpstream_getsocket(struct udpstream* stream);
+#endif
diff --git a/udptest.c b/udptest.c
index 56a3c9f..1378b8a 100644
--- a/udptest.c
+++ b/udptest.c
@@ -38,7 +38,7 @@ int main(int argc, char** argv)
   {
     struct addrinfo* ai;
     getaddrinfo("0.0.0.0", argv[1], 0, &ai);
-    udpstream_listen(sock, ai->ai_addr, ai->ai_addrlen);
+    bind(sock, ai->ai_addr, ai->ai_addrlen);
     freeaddrinfo(ai);
   }
   struct pollfd pfd[]={{.fd=0, .events=POLLIN, .revents=0}, {.fd=sock, .events=POLLIN, .revents=0}};