Re: [Opalvoip-user] multiple contacts when both tcp/udp/tcps andSIP registration problems
Brought to you by:
csoutheren,
rjongbloed
From: Robert J. <ro...@vo...> - 2011-12-12 01:00:20
|
From: Dmitry [mailto:gor...@mt...] Sent: Monday, 12 December 2011 6:04 AM ... I have changed the original code the following way: ... All seems overly complicated. I am not sure what you are trying to achieve here. See later ... .... I don't think that combinations like Register VIA UDP + Receive incoming calls to TCP: --sip-register username <mailto:use...@si...,> @sipserver.com, <mailto:use...@si...,> password SIPRegister::e_RegisterTCPContactOnly are correct. Moreover such combinations may work, may not work It is "correct" according to the standard. Just because not every registrar is fully compliant doesn't make it incorrect. Many registrars try to make assumptions about clients, due to lack of full compliance by those clients. It makes for an unholy mess of everyone trying to compensate for everyone else. ============= III. >>>Contact: <sip:51@192.168.11.2>;q=1, <sip:51@192.168.11.2:5065;transport=tcp>;q=0.667, <sips:51@192.168.11.2>;q=0.334 >>That contact list is precisely what SHOULD You wrote "SHOULD". I think it defies common sense. Now you are getting aggressive. Please don't. Look up what the q parameter means in the RFC. To what interface (we operate with a single Opal client..) server will be re-direct incoming call with such multi-contact? What will be useful, even if the server agrees with our multi-contact? Whichever the registrar deems appropriate. There are a lot of scenarios. A classic example would be INVITE comes in to routing proxy on UDP, proxy needs to add stuff to the packet so gets too big for UDP, so switches to TCP. Looks through the binding to find the TCP address/port to use for that AOR. It does not HAVE to be the same as the UDP port, so two explicit Contact entries are required. And that is not an unlikely scenario. I think that if I register VIA TCP, it means that I want to receive incoming calls to TCP interface. Or not? I use ;transport=tcp + I use SIPRegister::e_RegisterTCPContactOnly Correct me if I'm wrong. I believe you are wrong. There is no difference according to the RFC between a single REGISTER command with three entries in the Contact field and three completely separate REGISTER commands with one entry in the Contact field each. Also, there is very explicitly in SIP no linkage between a specific transport and a "session". That is it is perfectly acceptable for a REGISTER to go out on UDP and the reply to come back on TCP. This almost certainly never happens, but the specification allows for it! So, that is why I do not think your changes are warranted. Robert Jongbloed OPAL/OpenH323/PTLib Architect and Co-founder. |