[OpenSIPS-Users] Please explain what's wrong with is_method function in this code

Tyler Merritt tyler at fonality.com
Thu Feb 10 04:33:11 CET 2011


All,

A very special issue I'm facing now.  I'm using "is_method" from the reply
block (starting with a "has_totag" which matches and then goes inside that
block to check stuff out).

Here is the code:

xlog ("L_INFO", "Right before the reINVITE check!\n");
                        if ( is_method("INVITE") ) {
                                append_hf("GW: REINVITE\r\n");
                                if ( t_check_trans() ) {
                                        t_relay();
                                        exit;
                                }
                        }
                        xlog ("L_INFO", "Right after the reINVITE
check!\n");
                        sl_send_reply("404","Not here");


Here is the packet:


12:18:24.725518 IP 192.168.1.134.5060 > 192.168.0.2.5060: SIP, length: 720
E..... at ...v(................INVITE sip:XXXXXXXXXX at DOMAIN SIP/2.0

CSeq: 443638 INVITE


Here is the definition from the documentation:


is_method(name)

Check if the method of the message matches the name. If name is a known
method (invite, cancel, ack, bye, options, info, update, register, message,
subscribe, notify, refer, prack), the function performs method ID testing
(integer comparison) instead of ignore case string comparison.

The 'name' can be a list of methods in the form of 'method1|method2|...'. In
this case, the function returns true if the SIP message's method is one from
the list. IMPORTANT NOTE: in the list must be only methods defined in
OpenSIPS with ID (invite, cancel, ack, bye, options, info, update, register,
message, subscribe, notify, refer, prack, publish; for more see:
http://www.iana.org/assignments/sip-parameters).

If used for replies, the function tests the value of method field from CSeq
header.



If used for replies, the function tests the value of method field from *CSeq
header.*

*
*

The CSeq header above sure enough has "INVITE" inside it.  And the is_method
filed is being used from a reply (it shouldn't really matter though right?
 It should match regardless).


Please point out what I'm doing wrong - the daemon.log file shows:


Feb 10 12:18:25 sip-proxy1 /usr/sbin/opensips[22658]: DBG:rr:loose_route:
There is no Route HF

Feb 10 12:18:25 sip-proxy1 /usr/sbin/opensips[22658]: Right before the
reINVITE check!

Feb 10 12:18:25 sip-proxy1 /usr/sbin/opensips[22658]: Right after the
reINVITE check!


It *should* pass loose_route as it does, and then between the two log
messages stuff should happen - in this case, a match of the INVITE header.


I don't see what I'm doing wrong.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20110210/0c4968a0/attachment.htm>


More information about the Users mailing list