From 3a3791bcf5b4252ff1080e4cc3bc6d5b81c4f9cc Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Tue, 17 Jun 2008 08:44:20 +0000 Subject: [PATCH] - fixed bugs related to non 200 ACK retransmission. git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@1019 8eb893ce-cfd4-0310-b710-fb5ebe64c474 --- core/plug-in/sipctrl/trans_layer.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/core/plug-in/sipctrl/trans_layer.cpp b/core/plug-in/sipctrl/trans_layer.cpp index 7dc3dd00..73d29e51 100644 --- a/core/plug-in/sipctrl/trans_layer.cpp +++ b/core/plug-in/sipctrl/trans_layer.cpp @@ -1137,7 +1137,6 @@ void trans_layer::send_non_200_ack(sip_msg* reply, sip_trans* t) *c++ = LF; DBG("About to send ACK\n"); -// DBG("About to send ACK: \n<%.*s>\n",ack_len,ack_buf); assert(transport); int send_err = transport->send(&inv->remote_ip,ack_buf,ack_len); @@ -1145,12 +1144,12 @@ void trans_layer::send_non_200_ack(sip_msg* reply, sip_trans* t) ERROR("Error from transport layer\n"); delete ack_buf; } - - if (t->retr_buf) - delete [] t->retr_buf; - - t->retr_buf = ack_buf; - t->retr_len = ack_len; + else { + delete [] t->retr_buf; + t->retr_buf = ack_buf; + t->retr_len = ack_len; + memcpy(&t->retr_addr,&inv->remote_ip,sizeof(sockaddr_storage)); + } } void trans_layer::send_200_ack(sip_msg* reply, sip_trans* t)