From: David Vossel Date: Thu, 18 Jun 2009 15:16:05 +0000 (+0000) Subject: parsing extension correctly from sip register lines X-Git-Tag: 11.0.0-beta1~4657 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a11ac5ae2f1961cab2806dc9618dcdc7247b252f;p=thirdparty%2Fasterisk.git parsing extension correctly from sip register lines If a transport type was specified, but no extension, parsing of the extension would return whatever was after the transport rather than defaulting to 's'. (closes issue #15111) Reported by: ffs Patches: chan_sip.c_register-parser.patch uploaded by ffs (license 730) Tested by: ffs, dvossel git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@201570 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 8caaebfd71..ec3616a227 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -7294,19 +7294,20 @@ static int sip_register(const char *value, int lineno) enum sip_transport transport = SIP_TRANSPORT_UDP; char buf[256] = ""; char *username = NULL; - char *hostname=NULL, *secret=NULL, *authuser=NULL, *expire=NULL; + char *hostname=NULL, *secret=NULL, *authuser=NULL, *expire=NULL, *buf2=NULL; char *callback=NULL; if (!value) return -1; ast_copy_string(buf, value, sizeof(buf)); + buf2 = strrchr(buf, '@'); - /* split [/contact][~expiry] */ - expire = strchr(buf, '~'); + /* split [/extension][~expiry] */ + expire = strchr(buf2, '~'); if (expire) *expire++ = '\0'; - callback = strrchr(buf, '/'); + callback = strrchr(buf2, '/'); if (callback) *callback++ = '\0'; if (ast_strlen_zero(callback))