chiark / gitweb /
udp: Break out udp_destroy_socket
[secnet.git] / udp.c
diff --git a/udp.c b/udp.c
index 5a363e0f4c5d22fc6c4eca25cfa581813094127b..85de96116bbee3cf218e9c9d2afd12a820c1a917 100644 (file)
--- a/udp.c
+++ b/udp.c
@@ -174,11 +174,20 @@ static bool_t udp_sendmsg(void *commst, struct buffer_if *buf,
     return True;
 }
 
+void udp_destroy_socket(struct udpcommon *uc, struct udpsock *us)
+{
+    if (us->fd>=0) {
+       close(us->fd);
+       us->fd=-1;
+    }
+}
+
 bool_t udp_make_socket(struct udpcommon *uc, struct udpsock *us,
                       int failmsgclass)
 {
     const union iaddr *addr=&us->addr;
     struct commcommon *cc=&uc->cc;
+    us->fd=-1;
 
 #define FAIL_LG 0, cc->cl.description, &cc->loc, failmsgclass
 #define FAIL(...) do{                                          \
@@ -259,10 +268,7 @@ bool_t udp_make_socket(struct udpcommon *uc, struct udpsock *us,
     return True;
 
 failed:
-    if (us->fd>=0) {
-       close(us->fd);
-       us->fd=-1;
-    }
+    udp_destroy_socket(uc,us);
     return False;
 
 #undef FAIL