X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=src%2Fnetwork.c;h=66314f907e7f9b159f271d6e847e7a17355ad576;hb=5cefb7a043dc08801cb98524f129b8fc4df6ed6c;hp=5fae09d9937ee4173e1c72c8940803bff2b08449;hpb=7a95b0cf1636ea70b946b41415f175018ef078ca;p=my-code%2Fivac.git diff --git a/src/network.c b/src/network.c index 5fae09d..66314f9 100644 --- a/src/network.c +++ b/src/network.c @@ -96,14 +96,16 @@ int network_manage_connection(t_net *net) { if(net->connection[i].status&C_INFO_A) { - if(!net->connection[i].status&C_SOCKET) { + if(!(net->connection[i].status&C_SOCKET)) { if((net->connection[i].fd=socket(AF_INET,SOCK_STREAM,0))==-1) { perror("[network] socket call"); return N_ERROR; } + net->connection[i].status|=C_SOCKET; } - if(!net->connection[i].status&C_ESTABL) { + if((!(net->connection[i].status&C_ESTABL))&& + (net->connection[i].status&C_SOCKET)) { memset(&addr,0,sizeof(struct sockaddr)); addr.sin_family=AF_INET; @@ -121,6 +123,7 @@ int network_manage_connection(t_net *net) { printf("[network] established connection to %s port %d on channel %d\n", net->connection[i].ip,net->connection[i].port,i); + net->connection[i].status|=C_ESTABL; } @@ -140,7 +143,7 @@ int network_manage_incoming(t_net *net) { int len; for(channel=0;channelconnection[channel].status&C_IN_USE) { + if(!(net->connection[channel].status&C_IN_USE)) { if((net->connection[channel].fd=accept(net->l_fd, (struct sockaddr *)&addr, &len))==-1) {