[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