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
This commit is contained in:
David Vossel
2009-06-18 15:16:05 +00:00
parent 68ba81dfe6
commit a11ac5ae2f
+5 -4
View File
@@ -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))