[sr-dev] git:master: tcp: fix connection alias replacing
Andrei Pelinescu-Onciul
andrei at iptel.org
Wed Oct 10 10:18:48 CEST 2012
Module: sip-router
Branch: master
Commit: e71435b0276c89ef756fecf1bbd5e339b80e804c
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=e71435b0276c89ef756fecf1bbd5e339b80e804c
Author: Andrei Pelinescu-Onciul <andrei at iptel.org>
Committer: Andrei Pelinescu-Onciul <andrei at iptel.org>
Date: Wed Oct 10 10:02:00 2012 +0200
tcp: fix connection alias replacing
When the TCP_ALIAS_REPLACE is set and an alias has to be added to
a connection that had 0 aliases (it can happen due to
TCP_ALIAS_REPLACE flag), the connection aliases count was wrongly
forced to 1.
For more details see:
http://lists.sip-router.org/pipermail/sr-users/2012-October/074932.html
Patch-by Jijo
---
tcp_main.c | 11 +++++++----
1 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/tcp_main.c b/tcp_main.c
index 2c4bf82..9d3359e 100644
--- a/tcp_main.c
+++ b/tcp_main.c
@@ -1339,11 +1339,14 @@ int tcpconn_finish_connect( struct tcp_connection* c,
/* remove all the aliases except the first one and re-add them
* (there shouldn't be more then the 3 default aliases at this
* stage) */
- for (r=1; r<c->aliases; r++){
- a=&c->con_aliases[r];
- tcpconn_listrm(tcpconn_aliases_hash[a->hash], a, next, prev);
+ if (c->aliases > 1) {
+ for (r=1; r<c->aliases; r++){
+ a=&c->con_aliases[r];
+ tcpconn_listrm(tcpconn_aliases_hash[a->hash],
+ a, next, prev);
+ }
+ c->aliases=1;
}
- c->aliases=1;
/* add the local_ip:0 and local_ip:local_port aliases */
_tcpconn_add_alias_unsafe(c, c->rcv.src_port, &c->rcv.dst_ip,
0, new_conn_alias_flags);
More information about the sr-dev
mailing list