[reSIProcate] [reSIProcate-users] TCP/TLS question/problem
Scott Godin
slgodin at icescape.com
Tue Oct 16 15:31:49 CDT 2007
Thanks Dan. This looks good to me - just forwarding to the list for
more opinions.
Scott
From: Dan Tifrea [mailto:dan.tifrea at gmail.com]
Sent: Tuesday, October 16, 2007 4:10 PM
To: Byron Campen
Cc: Scott Godin
Subject: Re: [reSIProcate-users] TCP/TLS question/problem
Byron, Scott
Thanks for your support. I took a look at what might be causing the
above mentioned problem. I found out that the
TcpBaseConnection::processAllWriteRequests(...) method doesn't do a
bind() when it creates a new connection. As such, the OS chooses the
source address from one of the physical interfaces available on the
system. Adding the following code in the above method seems to fix my
problem. Please feel free to use it if you'd like to fix this issue.
Best regards,
Dan Tifrea
assert(sock != INVALID_SOCKET);
----begin code ----
int port = mTuple.getPort(); // save current port
mTuple.setPort(0);
DebugLog (<< "Binding to " << Tuple::inet_ntop(mTuple) << ":"
<< mTuple.getPort());
if ( ::bind( sock, &mTuple.getMutableSockaddr(),
mTuple.length()) == SOCKET_ERROR )
{
int e = getErrno();
if ( e == EADDRINUSE )
{
error(e);
ErrLog (<< mTuple << " already in use ");
}
else
{
error(e);
ErrLog (<< "Could not bind to " << mTuple);
}
}
mTuple.setPort(port); // restore port
makeSocketNonBlocking(sock);
DebugLog (<<"Opening new connection to " << data->destination);
const sockaddr& servaddr = data->destination.getSockaddr();
----end code ----
int e = connect( sock, &servaddr, data->destination.length() );
On 10/15/07, Byron Campen <bcampen at estacado.net> wrote:
Keep in mind that resip uses the linux socket API to send
stuff; it has no control over what is placed in the IP header.
Best regards,
Byron Campen
The platform is RedHat Linux ES release 4. A simple TCP test program
showed no problems binding to a virtual IP address.
The issue that the end user has is related to internal network
provisioning (firewall, public/private IP address management).
Best regards,
Dan Tifrea
On 10/12/07, Byron Campen <bcampen at estacado.net> wrote:
Sounds like a platform issue to me. Why is this hurting you?
Best regards,
Byron Campen
Hi all,
I have noticed the following TCP/TLS behavior. I have a physical
interface (eth0, ip address 192.168.17.144 <http://192.168.17.144/> ). I
create a virtual ip address (eth0:1, ip address 192.168.17.155
<http://192.168.17.155/> ). I start the resiprocate app and add a TCP
transport for the virtual 192.168.17.155 <http://192.168.17.155/>
interface. I send an INVITE to a remote destination. The problem is
that the INVITE message received on the remote has the IP frame src
address 192.168.17.144 <http://192.168.17.144/> (and not 192.168.17.155
<http://192.168.17.155/> ). Note that all the resiprocate log messages
as well as the Via header indicate the correct ip address 192.168.17.155
<http://192.168.17.155/> . Any thoughts?
I may provide logs and/or wireshark capture if needed.
Best regards,
Dan Tifrea
_______________________________________________
resiprocate-users mailing list
resiprocate-users at resiprocate.org
List Archive: http://resiprocate.org/archive/resiprocate-users/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20071016/1d1d2b6f/attachment.htm>
More information about the resiprocate-devel
mailing list