$ git clone https://socialnetwork.ion.nu/socialnetwork.git
commit 9e11beb56de1c867b1339fef577c97c2ac619d59
Author: Alicia <...>
Date:   Sat May 27 21:20:59 2017 +0200

    Export udpstream_find() in the API.

diff --git a/udpstream.c b/udpstream.c
index 2f48f5a..ba57da5 100644
--- a/udpstream.c
+++ b/udpstream.c
@@ -89,7 +89,7 @@ static struct udpstream* stream_new(int sock, struct sockaddr* addr, socklen_t a
   return stream;
 }
 
-static struct udpstream* stream_find(struct sockaddr* addr, socklen_t addrlen)
+struct udpstream* udpstream_find(struct sockaddr* addr, socklen_t addrlen)
 {
   unsigned int i;
   for(i=0; i<streamcount; ++i)
@@ -178,7 +178,7 @@ void udpstream_readsocket(int sock)
   struct sockaddr addr;
   socklen_t addrlen=sizeof(addr);
   ssize_t len=recvfrom(sock, buf, 1024, 0, &addr, &addrlen);
-  struct udpstream* stream=stream_find(&addr, addrlen);
+  struct udpstream* stream=udpstream_find(&addr, addrlen);
   if(!stream){stream=stream_new(sock, &addr, addrlen);}
   stream->buflen+=len;
   stream->buf=realloc(stream->buf, stream->buflen);
diff --git a/udpstream.h b/udpstream.h
index 87ee173..ccb2184 100644
--- a/udpstream.h
+++ b/udpstream.h
@@ -23,6 +23,8 @@ struct udpstream;
 // Create a new stream on the given socket that sends and receives to/from the given address
 extern struct udpstream* udpstream_new(int sock, struct sockaddr* addr, socklen_t addrlen);
 
+extern struct udpstream* udpstream_find(struct sockaddr* addr, socklen_t addrlen);
+
 extern void udpstream_readsocket(int sock);
 
 // Check which (if any) streams have packets available to read