fixed tcp mode syn ack flag error

This commit is contained in:
wangyu 2017-08-02 19:10:38 +08:00 committed by wangyu
parent cf47d0a7a8
commit 649b69cd85
2 changed files with 13 additions and 20 deletions

@ -528,7 +528,7 @@ int TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
int server_on_raw_pre_ready(conn_info_t &conn_info,uint32_t tmp_oppsite_const_id);
int server_on_raw_ready(conn_info_t &conn_info);
int server_on_raw_recv_ready(conn_info_t &conn_info);
int DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD;
////////////////=======================declear divider=============================
/*
@ -701,11 +701,7 @@ int send_bare(raw_info_t &raw_info,const char* data,int len)
char send_data_buf[buf_len]; //buf for send data and send hb
char send_data_buf2[buf_len];
if(len==0) //dont encrpyt zero length packet;
{
send_raw(raw_info,data,len);
return 0;
}
//static send_bare[buf_len];
iv_t iv=get_true_random_number_64();
padding_t padding=get_true_random_number_64();
@ -727,10 +723,6 @@ int send_bare(raw_info_t &raw_info,const char* data,int len)
int parse_bare(const char *input,int input_len,char* & data,int & len) //allow overlap
{
static char recv_data_buf[buf_len];
if(len==0) //dont decrpyt zero length packet;
{
return 0;
}
if(my_decrypt(input,recv_data_buf,input_len,key)!=0)
{
@ -757,6 +749,11 @@ int recv_bare(raw_info_t &raw_info,char* & data,int & len)
//printf("recv_raw_fail in recv bare\n");
return -1;
}
if ((raw_mode == mode_faketcp && (recv_info.syn == 1 || recv_info.ack != 1)))
{
mylog(log_debug,"unexpect packet type recv_info.syn=%d recv_info.ack=%d \n",recv_info.syn,recv_info.ack);
return -1;
}
parse_bare(data,len,data,len);
return 0;
}
@ -1483,14 +1480,12 @@ int server_on_raw_recv_multi()
id_t tmp_oppsite_id= ntohl(* ((uint32_t *)&data[0]));
mylog(log_info,"handshake received %x\n",conn_info.oppsite_id);
conn_info.my_id=get_true_random_number_nz();
send_handshake(raw_info,conn_info.my_id,tmp_oppsite_id,const_id); //////////////send
mylog(log_info,"[%s]changed state to server_handshake1,my_id is %x\n",ip_port,conn_info.my_id);
conn_info.state.server_current_state = server_handshake1;
conn_info.last_state_time = get_current_time();
return 0;
@ -1535,13 +1530,13 @@ int server_on_raw_recv_multi()
}
if(conn_info.state.server_current_state==server_ready)
{
return server_on_raw_ready(conn_info);
return server_on_raw_recv_ready(conn_info);
}
return 0;
}
int server_on_raw_ready(conn_info_t &conn_info)
int server_on_raw_recv_ready(conn_info_t &conn_info)
{
int data_len; char *data;
@ -1555,11 +1550,7 @@ int server_on_raw_ready(conn_info_t &conn_info)
return -1;
}
if ((raw_mode == mode_faketcp && (recv_info.syn == 1 || recv_info.ack != 1))|| data_len == 0)
{
//recv(raw_recv_fd, 0,0, 0 );//
return 0;
}
if (recv_info.src_ip != send_info.dst_ip
|| recv_info.src_port != send_info.dst_port) {

@ -134,6 +134,8 @@ packet_info_t::packet_info_t()
ack_seq = get_true_random_number();
seq = get_true_random_number();
has_ts=0;
syn=0;
ack=1;
}
else if (raw_mode == mode_udp)
{