[OpenSIPS-Users] OpenSIPS+asterisk: cannot place call
Stefano Sasso
stesasso at gmail.com
Mon Sep 27 11:01:43 CEST 2010
Hello,
I started testing OpenSIPS with my asterisk cluster.
For this testing configuration I'm using only one asterisk server of
the pool. (the registration is done on asterisk server)
The OpenSIPS configuration routing part is:
route{
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
exit;
}
xlog("SIP route info: [$fu/$tu/$ru/$ci]");
xlog("SIP method: $rm");
if (!has_totag()) {
# initial request
record_route();
}
else {
# sequential request - obey the indicated route
loose_route();
t_relay();
exit;
}
# CANCEL processing
if (is_method("CANCEL"))
{
if (t_check_trans())
t_relay();
exit;
}
if (is_method("OPTIONS")) {
t_relay();
xlog("OPTIONS for: [$fu/$tu/$ru/$ci]");
exit;
}
# from now on we have only the initial request
# select the node that'll handle the call
# different method is used for INVITE/REGISTER requests
# unknown methods are rejected here
xlog("First route:
[USER:$au/CALL-ID:$ci/FROM-TAG:$ft/FROM-URI:$fu/FROM-URI-USER:$fU/METHOD:$rm]");
if (is_method("INVITE")) {
if (!ds_select_dst("1", "5")) {
xlog("Service unavailable for ds_select_dst[INVITE]");
send_reply("503","Service Unavailable");
exit;
}
}
else if (is_method("REGISTER")) {
if (!ds_select_dst("1", "5")) {
xlog("Service unavailable for ds_select_dst[REGISTER]");
send_reply("503","Service Unavailable");
exit;
}
}
else {
send_reply("405","Method Not Allowed");
exit;
}
# route the request
if (!t_relay()) {
sl_reply_error();
}
}
the dispatcher.list is simple:
1 sip:192.168.6.131:5060
the registration part, on asterisk seems OK (I think), but for every
SIP phone in 'sip show peers' I saw only the openSIPS IP address:
Name/username Host Dyn Nat ACL Port Status
2001/2001 192.168.6.130 D N 5060 OK (1342 ms)
2002/2002 192.168.6.130 D N 5060 OK (1403 ms)
My asterisk dialplan is simple:
exten => 101,1,Answer()
exten => 101,n,Playback(demo-congrats)
exten => 101,n,Hangup()
exten => _XXXX,2,NoOp(internal context called on Server A to ${EXTEN},
CALLERID_num ${CALLERID(num)}, CALLERID_num_f2 ${CALLERID(num):0:2})
exten => _XXXX,3,Dial(SIP/${EXTEN},15)
when, from phone 2001 or 2002 I place a call to 101 everything works
fine, but when I call 2001 from 2002 (and vice-versa) I can't place
the call, and in asterisk log I found:
-- Executing [2002 at internal:1] NoOp("SIP/2001-0000000f", "2002")
in new stack
-- Executing [2002 at internal:2] NoOp("SIP/2001-0000000f", "internal
context called on Server A to 2002, CALLERID_num 2001, CALLERID_num_f2
20") in new stack
-- Executing [2002 at internal:3] Dial("SIP/2001-0000000f",
"SIP/2002,15") in new stack
== Using SIP RTP CoS mark 5
-- Called 2002
-- Got SIP response 482 "Loop Detected" back from 192.168.6.130
-- Now forwarding SIP/2001-0000000f to 'Local/2002 at internal'
(thanks to SIP/2002-00000010)
-- Executing [2002 at internal:1] NoOp("Local/2002 at internal-187c;2",
"2002") in new stack
-- Executing [2002 at internal:2] NoOp("Local/2002 at internal-187c;2",
"internal context called on Server A to 2002, CALLERID_num 2001,
CALLERID_num_f2 20") in new stack
-- Executing [2002 at internal:3] Dial("Local/2002 at internal-187c;2",
"SIP/2002,15") in new stack
== Spawn extension (internal, 2002, 3) exited non-zero on
'Local/2002 at internal-187c;2'
== Everyone is busy/congested at this time (1:0/0/1)
-- Executing [2002 at internal:4] Hangup("SIP/2001-0000000f", "") in new stack
== Spawn extension (internal, 2002, 4) exited non-zero on 'SIP/2001-0000000f'
Could you please give me some hints on where I am wrong?
registering directly on asterisk box, bypassing OpenSIPS, the call
works correctly.
thanks so much
--
Stefano Sasso
http://stefano.dscnet.org/
More information about the Users
mailing list