chiark / gitweb /
comm: Provide udp_socks_deregister
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 24 Sep 2014 00:28:23 +0000 (01:28 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 29 Sep 2014 15:20:01 +0000 (16:20 +0100)
polypath is going to want this.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
comm-common.h
udp.c

index 8cf6f7bea058a187a21ddd4a55f6a9970d82be34..97488556d6bd1ccc2b658c1bd2ddc256725e6e6b 100644 (file)
@@ -63,6 +63,7 @@ struct udpsocks {
     struct udpsock socks[UDP_MAX_SOCKETS];
     /* private for udp_socks_* */
     struct udpcommon *uc; /* link to parent, for cfg, notify list, etc. */
+    struct poll_interest *interest;
 };
 
 struct udpcommon {
@@ -78,6 +79,7 @@ bool_t udp_make_socket(struct udpcommon *uc, struct udpsock *us,
   /* Fills in us->fd.  Logs any errors with lg_[v]perror. */
 
 void udp_socks_register(struct udpcommon *uc, struct udpsocks *socks);
+void udp_socks_deregister(struct udpcommon *uc, struct udpsocks *socks);
 
 #define UDP_APPLY_STANDARD(st,uc,desc)                                 \
     (uc)->use_proxy=False;                                             \
diff --git a/udp.c b/udp.c
index 4ffd1c1dd4300469ef732b7c1a9ac5e6aed48868..6ac8e0f0c90087acdc594c18c02924fb4bbccbff 100644 (file)
--- a/udp.c
+++ b/udp.c
@@ -278,7 +278,14 @@ failed:
 void udp_socks_register(struct udpcommon *uc, struct udpsocks *socks)
 {
     socks->uc=uc;
-    register_for_poll(socks,udp_socks_beforepoll,udp_socks_afterpoll,"udp");
+    socks->interest=
+       register_for_poll(socks,udp_socks_beforepoll,udp_socks_afterpoll,"udp");
+}
+
+void udp_socks_deregister(struct udpcommon *uc, struct udpsocks *socks)
+{
+    socks->uc=uc;
+    deregister_for_poll(socks->interest);
 }
 
 static void udp_phase_hook(void *sst, uint32_t new_phase)