[asterisk-dev] [Code Review] unbreaking <sip:username> from-uri support for REGISTER

wdoekes reviewboard at asterisk.org
Sun Nov 13 15:49:18 CST 2011


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1533/
-----------------------------------------------------------

(Updated Nov. 13, 2011, 3:49 p.m.)


Review request for Asterisk Developers and Terry Wilson.


Changes
-------

Ok.. this new version does what Terry suggests:

if no username is supplied, we use the domain as the username: <sip:host:port>
effectively becomes <sip:host at host:port>

It is now against 1.8 because it's now a bugfix to fix that "sip:username" works
again.

(My personal preference would be having sip:hostport be rejected for both
register and invites. Especially since sip:username registration had been broken
for quite some time. But there seems to be Digium consensus to keep it. It
was not broken for invites, so here is the re-addition for registers.)


The details of the changeset:
-----------------------------

(A) When registering/inviting, we now disallow an empty domain after the '@'

   from-uri                 BEFORE      AFTER
 - sip:username at domain       OK          OK
 - sip:username              fail        OK
 - sip:username@             OK          fail
 - sip:@username             fail        OK <-- side-effect of parse_uri
 
(B) When registering, we now check domain ACLs when in place, even when no
    domain is supplied:

   from-uri                     BEFORE      AFTER      
 - sip:validuser at validdomain     OK          OK
 - sip:validuser                 fail        fail
 - sip:validuser@                OK          fail
 - sip:validboth                 OK          OK
 - sip:validboth@                OK          fail
 - sip:@validboth                fail        OK <-- side-effect of parse_uri

(C) When refusing a register with an invalid domain, we send the fake auth
    rejection.

(D) The domain is checked for empty in check_user_full() for consistency with
    register_verify().

(E) I renamed 'of' to 'name' in check_user_full() for clarity and similarity
    with register_verify().

(F) I removed some unneeded 'dummy' variables and added some braces.


Regards,
Walter


Summary (updated)
-------

See the bug report: there were some XXX'es in the code about code that should be removed.

The patch does this:

(1) register_verify won't accept a To: without user-part anymore (illegal according to rfc3261, 10.2)

(2) check_user_full still doesn't require a user-part, but it won't match usernames by domain anymore. (i.e. it doesn't treat sip:domain as sip:domain at domain anymore)

(3) there was some freaky logic going on in get_msg_text, I had to rewrite it to make it make sense.

(4) in the reqresp parser there were lots of if (params) inside a big if (params) block. I scrapped the useless if's.


This addresses bug ASTERISK-18389.
    https://issues.asterisk.org/jira/browse/ASTERISK-18389


Diffs (updated)
-----

  /branches/1.8/channels/chan_sip.c 345022 

Diff: https://reviewboard.asterisk.org/r/1533/diff


Testing
-------

It compiles.


Thanks,

wdoekes

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20111113/5ee73363/attachment-0001.htm>


More information about the asterisk-dev mailing list