mirror of
https://github.com/wangyu-/udp2raw.git
synced 2025-09-17 04:34:27 +08:00
fix a dead loop, moved some code blocks
This commit is contained in:
18
network.cpp
18
network.cpp
@@ -1388,11 +1388,19 @@ int parse_tcp_option(char * option_begin,char * option_end,packet_info_t &recv_i
|
||||
}
|
||||
else
|
||||
{
|
||||
int len=(unsigned char)*(ptr+1);
|
||||
if(len<=1)
|
||||
{
|
||||
mylog(log_debug,"invaild option len %d\n",len);
|
||||
return -1;
|
||||
}
|
||||
//omit check
|
||||
ptr+=*(ptr+1);
|
||||
ptr+=len;
|
||||
}
|
||||
}
|
||||
//printf("!");
|
||||
}
|
||||
//printf("\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1429,6 +1437,11 @@ int recv_raw_tcp(raw_info_t &raw_info,char * &payload,int &payloadlen)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (tcphdrlen >ip_payloadlen) {
|
||||
mylog(log_debug,"error,tcphdrlen >ip_payloadlen\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
if(tcph->dest!=ntohs(uint16_t(filter_port)))
|
||||
{
|
||||
@@ -1467,6 +1480,7 @@ int recv_raw_tcp(raw_info_t &raw_info,char * &payload,int &payloadlen)
|
||||
char *tcp_begin=ip_payload; //ip packet's data part
|
||||
|
||||
char *tcp_option=ip_payload+sizeof(tcphdr);
|
||||
char *option_end=ip_payload+tcphdrlen;
|
||||
|
||||
/*
|
||||
//old ts parse code
|
||||
@@ -1516,7 +1530,7 @@ int recv_raw_tcp(raw_info_t &raw_info,char * &payload,int &payloadlen)
|
||||
}
|
||||
printf("<%d %d>\n",recv_info.ts,recv_info.ts_ack);
|
||||
*/
|
||||
parse_tcp_option(tcp_option,tcp_begin+tcph->doff*4,recv_info);
|
||||
parse_tcp_option(tcp_option,option_end,recv_info);
|
||||
|
||||
recv_info.ack=tcph->ack;
|
||||
recv_info.syn=tcph->syn;
|
||||
|
Reference in New Issue
Block a user