projects
/
my-code
/
ivac.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed udp "addtess already used" thing + introduced nic device string (used later)
[my-code/ivac.git]
/
src
/
network.c
diff --git
a/src/network.c
b/src/network.c
index
3cc7c83
..
053e309
100644
(file)
--- a/
src/network.c
+++ b/
src/network.c
@@
-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 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)");
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) {
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);
}
printf("[network] listening on port %d (udp)\n",net->l_udp_port);