# HG changeset patch # User Daniel Atallah # Date 1136529226 0 # Node ID 4f7dab030b1a3c71a920fecfe4317d78dcab7719 # Parent e788741f4840977039bc374bf02e75d48322779f [gaim-migrate @ 15093] abstract to a function and robustify the rest of the attribute parsing committer: Tailor Script diff -r e788741f4840 -r 4f7dab030b1a src/protocols/simple/simple.c --- a/src/protocols/simple/simple.c Fri Jan 06 06:00:51 2006 +0000 +++ b/src/protocols/simple/simple.c Fri Jan 06 06:33:46 2006 +0000 @@ -299,10 +299,23 @@ return ret; } +static char * parse_attribute(const char *attrname, char *source) { + char *tmp, *tmp2, *retval = NULL; + int len = strlen(attrname); + + if(!strncmp(source, attrname, len)) { + tmp = source + len; + tmp2 = g_strstr_len(tmp, strlen(tmp), "\""); + if(tmp2) + retval = g_strndup(tmp, tmp2 - tmp); + } + + return retval; +} + static void fill_auth(struct simple_account_data *sip, gchar *hdr, struct sip_auth *auth) { int i=0; char *tmp; - char *tmp2; gchar **parts; if(!hdr) { gaim_debug_error("simple", "fill_auth: hdr==NULL\n"); @@ -315,16 +328,13 @@ if(!auth->nonce && !auth->nc) { parts = g_strsplit(hdr, " ", 0); while(parts[i]) { - if(!strncmp(parts[i],"targetname",10)) { - auth->target = g_strndup(parts[i]+12,strlen(parts[i]+12)-1); + if((tmp = parse_attribute("targetname=\"", + parts[i]))) { + auth->target = tmp; } - if(!strncmp(parts[i],"realm",5)) { - tmp = strstr(hdr, "realm="); - tmp += 7; - tmp2 = strchr(tmp, '"'); - *tmp2 = 0; - auth->realm = g_strdup(tmp); - *tmp2 = '"'; + else if((tmp = parse_attribute("realm=\"", + parts[i]))) { + auth->realm = tmp; } i++; } @@ -342,21 +352,11 @@ auth->type = 1; parts = g_strsplit(hdr, " ", 0); while(parts[i]) { - if(!strncmp(parts[i], "nonce", 5)) { - tmp = g_strstr_len(parts[i] + 7, - strlen(parts[i] + 7), "\""); - if (tmp) { - auth->nonce = g_strndup(parts[i] + 7, - tmp - (parts[i] + 7)); - } + if((tmp = parse_attribute("nonce=\"", parts[i]))) { + auth->nonce = tmp; } - else if(!strncmp(parts[i], "realm", 5)) { - tmp = g_strstr_len(parts[i] + 7, - strlen(parts[i] + 7), "\""); - if (tmp) { - auth->realm = g_strndup(parts[i] + 7, - tmp - (parts[i] + 7)); - } + else if((tmp = parse_attribute("realm=\"", parts[i]))) { + auth->realm = tmp; } i++; } @@ -1054,7 +1054,7 @@ } } if(!found) { - gaim_debug(GAIM_DEBUG_MISC, "simple", "received a unknown sip message with method %sand response %d\n",msg->method, msg->response); + gaim_debug(GAIM_DEBUG_MISC, "simple", "received a unknown sip message with method %s and response %d\n",msg->method, msg->response); } }