소스 검색

tcp: fix double increment for the established stats

The counter/stats for established TCP connections were incremented
twice in the case of accept()-ed connections: once immediately
after the accept() and another time after the first packet
received or sent on the connection.
Now they are incremented only after the first successful send or
receive.
Andrei Pelinescu-Onciul 15 년 전
부모
커밋
66cda7bc5f
1개의 변경된 파일9개의 추가작업 그리고 1개의 파일을 삭제
  1. 9 1
      tcp_main.c

+ 9 - 1
tcp_main.c

@@ -3973,7 +3973,15 @@ static inline int handle_new_connect(struct socket_info* si)
 		return 1; /* success, because the accept was succesfull */
 	}
 	(*tcp_connections_no)++;
-	TCP_STATS_ESTABLISHED(S_CONN_ACCEPT);
+	/* stats for established connections are incremented after
+	   the first received or sent packet.
+	   Alternatively they could be incremented here for accepted
+	   connections, but then the connection state must be changed to
+	  S_CONN_OK:
+	  TCP_STATS_ESTABLISHED(S_CONN_ACCEPT);
+	  ...
+	  tcpconn=tcpconn_new(new_sock, &su, dst_su, si, si->proto, S_CONN_OK);
+	*/
 	
 	dst_su=&si->su;
 	if (unlikely(si->flags & SI_IS_ANY)){