mirror of
https://github.com/wangyu-/udp2raw.git
synced 2025-01-19 22:39:31 +08:00
fixed icmp handshake bug,when iptables rule is not set
This commit is contained in:
parent
db726b445a
commit
8ebfd38c7f
15
main.cpp
15
main.cpp
@ -408,6 +408,8 @@ struct conn_manager_t
|
|||||||
assert(erase_it->second->conv_manager==0);
|
assert(erase_it->second->conv_manager==0);
|
||||||
assert(erase_it->second->timer_fd ==0);
|
assert(erase_it->second->timer_fd ==0);
|
||||||
assert(erase_it->second->oppsite_const_id==0);
|
assert(erase_it->second->oppsite_const_id==0);
|
||||||
|
delete(erase_it->second);
|
||||||
|
mp.erase(erase_it->first);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -424,7 +426,11 @@ int clear_inactive()
|
|||||||
int size=mp.size();
|
int size=mp.size();
|
||||||
int num_to_clean=size/conn_clear_ratio+conn_clear_min; //clear 1/10 each time,to avoid latency glitch
|
int num_to_clean=size/conn_clear_ratio+conn_clear_min; //clear 1/10 each time,to avoid latency glitch
|
||||||
|
|
||||||
|
mylog(log_trace,"mp.size() %d\n",mp.size());
|
||||||
|
|
||||||
|
num_to_clean=min(num_to_clean,(int)mp.size());
|
||||||
uint64_t current_time=get_current_time();
|
uint64_t current_time=get_current_time();
|
||||||
|
|
||||||
for(;;)
|
for(;;)
|
||||||
{
|
{
|
||||||
if(cnt>=num_to_clean) break;
|
if(cnt>=num_to_clean) break;
|
||||||
@ -1301,6 +1307,11 @@ int client_on_raw_recv(conn_info_t &conn_info)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(data_len<int( 3*sizeof(id_t)))
|
||||||
|
{
|
||||||
|
mylog(log_debug,"too short to be a handshake\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
if(raw_mode==mode_faketcp&& (recv_info.syn==1||recv_info.ack!=1 ||data_len==0))
|
if(raw_mode==mode_faketcp&& (recv_info.syn==1||recv_info.ack!=1 ||data_len==0))
|
||||||
{
|
{
|
||||||
mylog(log_debug,"unexpected syn ack or other zero lenght packet\n");
|
mylog(log_debug,"unexpected syn ack or other zero lenght packet\n");
|
||||||
@ -1594,7 +1605,7 @@ int server_on_raw_pre_ready(conn_info_t &conn_info,char * data,int data_len)
|
|||||||
|
|
||||||
if(tmp_session_id!=conn_info.my_id)
|
if(tmp_session_id!=conn_info.my_id)
|
||||||
{
|
{
|
||||||
mylog(log_debug,"[%s]%x %x auth fail!!\n",tmp_session_id,conn_info.my_id,ip_port);
|
mylog(log_debug,"[%s] my_id mis match,my id is %x,received %d\n",ip_port,conn_info.my_id,tmp_session_id);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1803,7 +1814,7 @@ int server_on_raw_recv_multi()
|
|||||||
conn_info.my_id=get_true_random_number_nz();
|
conn_info.my_id=get_true_random_number_nz();
|
||||||
send_handshake(raw_info,conn_info.my_id,get_true_random_number_nz(),const_id); //////////////send
|
send_handshake(raw_info,conn_info.my_id,get_true_random_number_nz(),const_id); //////////////send
|
||||||
|
|
||||||
mylog(log_info,"[%s]changed state to server_heartbeat_sent_sent\n",ip_port);
|
mylog(log_info,"[%s]changed state to server_heartbeat_sent_sent,my_id is %x\n",ip_port,conn_info.my_id);
|
||||||
|
|
||||||
conn_info.state.server_current_state = server_handshake_sent;
|
conn_info.state.server_current_state = server_handshake_sent;
|
||||||
conn_info.last_state_time = get_current_time();
|
conn_info.last_state_time = get_current_time();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user