OK. I think I understand.
Since the SIP request is injected straight into SER via the t_uac_dlg()
FIFO command, I had presumed the request would get dumped into the
route[0] block like any other request coming into SER from a UDP port.
If this were the case I'd expect the normal "if(uri == myself)" type
checks to catch the request and do the appropriate thing. But if I
follow your reply, this isn't
the case.
If I understand what you say correctly, the t_uac_dlg() command works
just like some UAC out on the network, and needs to have the IP address
of its proxy either hard coded, or resolvable via some means (hosts
file, DNS). Once this resolved, it sends the request to SER via
networking calls and normal processing ensues. Is this correct ?
If this is all true, then it means that for the current SERweb CTD
functionality to work, you need a host file or DNS entry for all SIP
domains served by your SER server, since SERweb delivers the dummy
INVITE URI in the "sip:name@domain" form instead of "sip:name@ip"
form.
Is this all correct ?
Presuming the above is correct, one problem I can see with this
requirement is that in some instances, it may be impossible for someone
to add the DNS SRV entries (no access to DNS server, for instance), and
impractical to add /etc/hosts aliases for the SIP domain, since doing so
could possibly break other things in the system, such as email routing
on that host (I think sendmail, etc would assume that the machine was
the mail server for that domain if such an alias existed). In this sort
of situation, the user might want to hard code the IP address of the SIP
proxy to contact, much as you do when you configure SIP phones.
If you wanted to somehow "hard code" the SIP proxy called by changing
the PHP code in SERweb, could you do so "properly" ? I could see how
changing the URI from "sip:user@domain" to "sip:user@ip-of-SIP-proxy"
in
the PHP would work, but wouldn't that break a multi-domain situation,
since the domain of the user in question would be lost ? Perhaps if
just the INVITE URI were changed to "sip:user@ip-of-SIP-proxy" form, and
the "To: " header in the SIP request were left in "sip:user@domain"
form, things would still work ? Or perhaps other headers could be
changed/added in the SIP request that would allow t_uac_dlg() to figure
out which IP to contact for the request without needing to do a host
lookup ? Or maybe the best approach would be to add an optional
IP-address argument to the t_uac_dlg() command which specifies the SIP
server to call (for instance, ":t_dlg_uac:reply_fifo_name[:IP of SIP
server to call]") ?
TIA,
Jim
Jiri Kuthan wrote:
Jim,
CTD acts as a SIP client -- i.e., it takes
mydomain.com and tries
to resolve it via DNS. If the resolution fails, the transaction
fails. That's completely orthogonal to function of "alias" which
is used for proxy server's domain matching.
if
mydomain.com is served by the same server, CTD initiates a transaction,
sends it to itself, and in proxy mode it recognizes it as a request
for itself using alias.
-jiri
At 04:46 PM 10/30/2003, Jim Burwell wrote:
Hi,
I was trying to get click-to-dial working from SERweb and it was failing for unclear
reasons. I then experimented with the "ctd.sh" script, which does the same
thing as the SERweb PHP code. I found that it would fail during the 'dummy
invite' stage, returning an odd error if I used a URI which used a SIP domain/realm,
but would work fine if I used the IP address of the SIP proxy as the domain. i.e.:
./ctd.sh sip:joebob@mydomain.com sip:billybob@mydomain.com <- fails
./ctd.sh sip:joebob@1.2.3.4 sip:billybob@mydomain.com <- succeeds
The reply from SER would be "500 fifo_uac: no mem for hf block" . The log file
would have these errors:
ERROR: mk_proxy: could not resolve hostname: "mydomain.com"
ERROR: uri2proxy: bad host name in URI <sip:joebob@mydomain.com>
ERROR: uri2sock: Can't create a dst proxy
ERROR: get_hf_block: send_sock failed
ERROR: fifo_uac: no mem for hf block
So it appears that SER didn't understand that the URI's domain was itself, even
though there's a host alias line in the ser.cfg file listing "mydomain.com"
as an alias for this host. It's as if it thinks it needed to relay the transaction to
another SIP router, and look up an IP to do so. If "mydomain.com" were placed
in /etc/hosts as an alias for the system SER was running on, or if a DNS SRV entry for the
SIP domain were created pointing to the SER system, voila, the "sip:user@domain"
form would work just fine.
Is this a bug ? I think SER isn't checking SER host aliases against the SIP domain if
the SIP request comes in via the fifo t_uac_dlg() command.
I'm using the SER release 0.8.11-r1, aka the "stable CVS" release.
TIA,
Jim
--
+---------------------------------------------------------------------------+
| Jim Burwell - Sr. Systems/Network/Security Engineer, JSBC |
+---------------------------------------------------------------------------+
| "I never let my schooling get in the way of my education." - Mark Twain |
| "UNIX was never designed to keep people from doing stupid things, because |
| that policy would also keep them from doing clever things." - Doug Gwyn |
| "Cool is only three letters away from Fool" - Mike Muir, Suicyco |
| "..Government in its best state is but a necessary evil; in its worst |
| state an intolerable one.." - Thomas Paine, "Common Sense" (1776)
|
+---------------------------------------------------------------------------+
| Email: jimb(a)jsbc.cc ICQ UIN: 1695089 |
+---------------------------------------------------------------------------+
| Reply problems ? Turn off the "sign" function in email prog. Blame MS. |
+---------------------------------------------------------------------------+
_______________________________________________
Serusers mailing list
serusers(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers
--
Jiri Kuthan
http://iptel.org/~jiri/
--
+---------------------------------------------------------------------------+
| Jim Burwell - Sr. Systems/Network/Security Engineer, JSBC |
+---------------------------------------------------------------------------+
| "I never let my schooling get in the way of my education." - Mark Twain |
| "UNIX was never designed to keep people from doing stupid things, because |
| that policy would also keep them from doing clever things." - Doug Gwyn |
| "Cool is only three letters away from Fool" - Mike Muir, Suicyco |
| "..Government in its best state is but a necessary evil; in its worst |
| state an intolerable one.." - Thomas Paine, "Common Sense" (1776)
|
+---------------------------------------------------------------------------+
| Email: jimb(a)jsbc.cc ICQ UIN: 1695089 |
+---------------------------------------------------------------------------+
| Reply problems ? Turn off the "sign" function in email prog. Blame MS. |
+---------------------------------------------------------------------------+