浏览代码

--fix-gro update

wangyu 6 年之前
父节点
当前提交
7e55b1e132
共有 5 个文件被更改,包括 17 次插入12 次删除
  1. 2 1
      client.cpp
  2. 8 6
      connection.cpp
  3. 2 1
      misc.cpp
  4. 3 3
      network.cpp
  5. 2 1
      server.cpp

+ 2 - 1
client.cpp

@@ -500,7 +500,8 @@ int client_on_raw_recv(conn_info_t &conn_info) //called when raw fd received a p
 	{
 	{
 		vector<char> type_vec;
 		vector<char> type_vec;
 		vector<string> data_vec;
 		vector<string> data_vec;
-		if(recv_safer_multi(conn_info,type_vec,data_vec)!=0)
+        recv_safer_multi(conn_info,type_vec,data_vec);
+		if(data_vec.empty())
 		{
 		{
 			mylog(log_debug,"recv_safer failed!\n");
 			mylog(log_debug,"recv_safer failed!\n");
 			return -1;
 			return -1;

+ 8 - 6
connection.cpp

@@ -497,8 +497,8 @@ int send_safer(conn_info_t &conn_info,char type,const char* data,int len)  //saf
             return -1;
             return -1;
         }
         }
         write_u16(send_data_buf2,new_len);
         write_u16(send_data_buf2,new_len);
-        send_data_buf2[0]^=gro_xor[0];
-        send_data_buf2[1]^=gro_xor[1];
+        //send_data_buf2[0]^=gro_xor[0];
+        //send_data_buf2[1]^=gro_xor[1];
         new_len+=2;
         new_len+=2;
     }
     }
 
 
@@ -649,15 +649,17 @@ int recv_safer_multi(conn_info_t &conn_info,vector<char> &type_arr,vector<string
             data_arr.emplace_back(data,data+len);
             data_arr.emplace_back(data,data+len);
             //std::copy(data,data+len,data_arr[0]);
             //std::copy(data,data+len,data_arr[0]);
         }
         }
-        return ret;
+        return 0;
     } else
     } else
     {
     {
+        char *ori_recv_data=recv_data;
+        mylog(log_debug,"recv_len:%d\n",recv_len);
         while(recv_len>2)
         while(recv_len>2)
         {
         {
             recv_len-=2;
             recv_len-=2;
             int single_len;
             int single_len;
-            recv_data[0]^=gro_xor[0];
-            recv_data[1]^=gro_xor[1];
+            //recv_data[0]^=gro_xor[0];
+            //recv_data[1]^=gro_xor[1];
             single_len=read_u16(recv_data);
             single_len=read_u16(recv_data);
             recv_data+=2;
             recv_data+=2;
             if(single_len > recv_len)
             if(single_len > recv_len)
@@ -674,7 +676,7 @@ int recv_safer_multi(conn_info_t &conn_info,vector<char> &type_arr,vector<string
 
 
             if(ret!=0)
             if(ret!=0)
             {
             {
-                mylog(log_debug,"illegal single_len %d, recv_len %d left,dropped\n",single_len,recv_len);
+                mylog(log_debug,"parse failed, offset= %d,single_len=%d\n",ori_recv_data-recv_data,single_len);
             } else{
             } else{
                 type_arr.push_back(type);
                 type_arr.push_back(type);
                 data_arr.emplace_back(data,data+len);
                 data_arr.emplace_back(data,data+len);

+ 2 - 1
misc.cpp

@@ -741,7 +741,8 @@ void process_arg(int argc, char *argv[])  //process all options
 			}
 			}
             else if(strcmp(long_options[option_index].name,"fix-gro")==0)
             else if(strcmp(long_options[option_index].name,"fix-gro")==0)
             {
             {
-                g_fix_gro=0;
+                mylog(log_info,"--fix-gro enabled\n");
+                g_fix_gro=1;
             }
             }
 			else
 			else
 			{
 			{

+ 3 - 3
network.cpp

@@ -9,7 +9,7 @@
 #include "log.h"
 #include "log.h"
 #include "misc.h"
 #include "misc.h"
 
 
-int g_fix_gro=1;
+int g_fix_gro=0;
 
 
 int raw_recv_fd=-1;
 int raw_recv_fd=-1;
 int raw_send_fd=-1;
 int raw_send_fd=-1;
@@ -855,9 +855,9 @@ int pre_recv_raw_packet()
         }
         }
         else
         else
         {
         {
-            mylog(log_debug, "huge packet, data_len %d > %d(single_max_data_len) dropped\n", g_packet_buf_len,
+            mylog(log_debug, "huge packet, data_len %d > %d(single_max_data_len) not dropped\n", g_packet_buf_len,
                   single_max_data_len);
                   single_max_data_len);
-            return -1;
+            //return -1;
         }
         }
 
 
     }
     }

+ 2 - 1
server.cpp

@@ -595,7 +595,8 @@ int server_on_raw_recv_multi() //called when server received an raw packet
 	{
 	{
         vector<char> type_vec;
         vector<char> type_vec;
         vector<string> data_vec;
         vector<string> data_vec;
-        if(recv_safer_multi(conn_info,type_vec,data_vec)!=0)
+        recv_safer_multi(conn_info,type_vec,data_vec);
+        if(data_vec.empty())
         {
         {
             mylog(log_debug,"recv_safer failed!\n");
             mylog(log_debug,"recv_safer failed!\n");
             return -1;
             return -1;