X-Git-Url: https://hackdaworld.org/gitweb/?p=my-code%2Fivac.git;a=blobdiff_plain;f=src%2Fnetwork.c;h=053e309f4f750403c15bec1c723dcefd3099a4c1;hp=b9c68aa09316e0ba8613daa28998d05edf199c1a;hb=40031b2d692a7b83e437535045ece6c58f8bf31e;hpb=9fb0ced14058a258508a61f998059a0f9ab005de diff --git a/src/network.c b/src/network.c index b9c68aa..053e309 100644 --- a/src/network.c +++ b/src/network.c @@ -266,9 +266,10 @@ int network_receive(int fd,unsigned char *data,int datasize) { return count; } -int network_udp_listen_init(t_net *net,int port) { +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,int port) { 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); @@ -294,13 +301,6 @@ int network_udp_listen_init(t_net *net,int port) { return N_SUCCESS; } -int network_set_udp_ports(t_net *net,int port) { - - net->l_udp_port=port; - - return N_SUCCESS; -} - int network_udp_receive(t_net *net,int channel, unsigned char *data,int count) { struct sockaddr_in addr;