chiark / gitweb /
Static buffers: ipaddr_getbuf: Rename some variables
[secnet.git] / udp.c
diff --git a/udp.c b/udp.c
index c5267652edbf64b2ca086b8bc3cbc226919d9068..dde73efb53eb4fe8d0af4555ff30f492bfbab82d 100644 (file)
--- a/udp.c
+++ b/udp.c
@@ -397,8 +397,14 @@ static void udp_phase_hook(void *sst, uint32_t new_phase)
     struct udpsocks *socks=&st->socks;
     struct udpcommon *uc=&st->uc;
     int i;
-    for (i=0; i<socks->n_socks; i++)
-       udp_make_socket(uc,&socks->socks[i],M_FATAL);
+    bool_t anydone=0;
+
+    for (i=0; i<socks->n_socks; i++) {
+       bool_t required=st->addr_configured
+           || (!anydone && i==socks->n_socks-1);
+       anydone += udp_make_socket(uc,&socks->socks[i],
+                                  required ? M_FATAL : M_WARNING);
+    }
 
     udp_socks_register(uc,socks, uc->use_proxy ? "proxy" : "socket");