--- chan_sip.c.orig 2009-05-14 17:45:42.000000000 +0200 +++ chan_sip.c 2009-05-14 17:25:27.000000000 +0200 @@ -6968,19 +6968,20 @@ 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))