fixed udp "addtess already used" thing + introduced nic device string (used later)
[my-code/ivac.git] / src / network.c
index 3cc7c83..053e309 100644 (file)
@@ -269,6 +269,7 @@ int network_receive(int fd,unsigned char *data,int datasize) {
 int network_udp_listen_init(t_net *net) {
 
   struct sockaddr_in addr;
+  int true;
 
   if((net->l_udp_fd=socket(AF_INET,SOCK_DGRAM,0))==-1) {
     perror("[network] socket call (udp-receive)");
@@ -280,8 +281,14 @@ int network_udp_listen_init(t_net *net) {
   addr.sin_port=htons(net->l_udp_port);
   addr.sin_addr.s_addr=INADDR_ANY;
   if(bind(net->l_udp_fd,(struct sockaddr *)&addr,sizeof(struct sockaddr))==-1) {
-    perror("[network] bind call (udp)");
-    return N_ERROR;
+    /* try harder ... */
+    true=1;
+    if(setsockopt(net->l_udp_fd,SOL_SOCKET,SO_REUSEADDR,
+                  &true,sizeof(true))==-1) {
+      perror("[network] setsockopt call (udp)");
+      return N_ERROR;
+    }
+    puts("[network] reused address (udp)");
   }
 
   printf("[network] listening on port %d (udp)\n",net->l_udp_port);