Module: sip-router Branch: master Commit: 66cda7bc5f642ce892124cfb35f1e5effd78e9d6 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=66cda7bc...
Author: Andrei Pelinescu-Onciul andrei@iptel.org Committer: Andrei Pelinescu-Onciul andrei@iptel.org Date: Wed Aug 18 18:36:14 2010 +0200
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.
---
tcp_main.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-)
diff --git a/tcp_main.c b/tcp_main.c index a1761f6..31fc0fa 100644 --- a/tcp_main.c +++ b/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)){