X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=src%2Fnetwork.c;h=5fae09d9937ee4173e1c72c8940803bff2b08449;hb=7a95b0cf1636ea70b946b41415f175018ef078ca;hp=c7425efb5f55c0c89894fdbf179f2a89d676347c;hpb=c8c162c2b1f82f32160bcaa4159ea8735a8582c5;p=my-code%2Fivac.git diff --git a/src/network.c b/src/network.c index c7425ef..5fae09d 100644 --- a/src/network.c +++ b/src/network.c @@ -53,6 +53,12 @@ int network_init(t_net *net) { int network_shutdown(t_net *net) { + int channel; + + for(channel=0;channelconnection[channel].status&C_SOCKET) + close(net->connection[channel].fd); + if(close(net->l_fd)==-1) { perror("[network] close call"); return N_ERROR; @@ -183,71 +189,3 @@ int network_receive(int fd,unsigned char *data,int datasize) { return count; } - -int send_info(int channel,t_net *net,char *name) { - - char data[SEND_N_MAX]; - int size; - - size=strlen(name); - - data[0]=SEND_N_NAME; - data[1]=size; - strncpy(data+2,name,size); - size+=2; - - data[size]=SEND_N_G_CAP; - data[size+1]=sizeof(unsigned char); - data[size+1+sizeof(unsigned char)]=net->cap; - size+=(sizeof(unsigned char)+2); - - data[size]=SEND_N_AV_CAP; - data[size+1]=sizeof(unsigned short); - data[size+1+sizeof(unsigned short)]=net->avcap; - size+=(sizeof(unsigned short)+2); - - if(network_send(net->connection[channel].fd,data,size)==N_ERROR) { - puts("[network] send_info failed"); - return N_ERROR; - } - - return N_SUCCESS; -} - -int receive_info(int channel,t_net *net) { - - char data[CHAR_N_UNAME+2]; - int count,length; - - count=0; - - if((length=network_receive(net->connection[channel].fd, - data,SEND_N_MAX))==N_ERROR) { - puts("[network] receive_info failed"); - return N_ERROR; - } - - while(length-count) { - switch(data[count]) { - case SEND_N_NAME: - strncpy(net->connection[channel].name,&data[count+2],data[count+1]); - net->connection[channel].name[(int)data[count+2]]='\0'; - count+=(data[count+2]+2); - break; - case SEND_N_G_CAP: - net->connection[channel].cap=data[count+4]; - count+=(sizeof(unsigned char)+2); - break; - case SEND_N_AV_CAP: - net->connection[channel].avcap=data[count+3]<<8; - net->connection[channel].avcap|=data[count+4]; - count+=(sizeof(unsigned short)+2); - break; - default: - puts("[network] receive_info, unknown character"); - return N_ERROR; - } - } - - return N_SUCCESS; -}