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>
Wed, 8 Oct 2014 17:25:18 +0000 (18:25 +0100)
polypath is going to want this.

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

index 835d056..ed6a86b 100644 (file)
@@ -72,6 +72,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 {
@@ -87,6 +88,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 8f0bb8b..a58690e 100644 (file)
--- a/udp.c
+++ b/udp.c
@@ -288,7 +288,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)