Mercurial > pidgin
changeset 25466:ede59a571c0a
This is a combination of patches from darkrain42 and Marcus Sundberg to fix
some string handling issues in the SIMPLE prpl. It also fixes some buddy name
handling issues. Fixes #8128.
author | John Bailey <rekkanoryo@rekkanoryo.org> |
---|---|
date | Sun, 15 Feb 2009 21:03:40 +0000 |
parents | 3c96a644c665 |
children | b90c26f391b0 |
files | COPYRIGHT ChangeLog libpurple/protocols/simple/simple.c |
diffstat | 3 files changed, 13 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/COPYRIGHT Sun Feb 15 20:29:55 2009 +0000 +++ b/COPYRIGHT Sun Feb 15 21:03:40 2009 +0000 @@ -421,6 +421,7 @@ Andreas Stührk Oleg Sukhodolsky Sun Microsystems +Marcus Sundberg Mårten Svantesson (fursten) Amir Szekely (kichik) Robert T.
--- a/ChangeLog Sun Feb 15 20:29:55 2009 +0000 +++ b/ChangeLog Sun Feb 15 21:03:40 2009 +0000 @@ -10,6 +10,8 @@ * XMPP resources using __HOSTNAME__ substitution will now grab only the short hostname instead of the FQDN on systems which put the FQDN in the hostname (Matěj Cepl) + * Fix some string handling in the SIMPLE prpl, which fixes some buddy name + handling and other issues. (Paul Aurich, Marcus Sundberg) ICQ: * Fix retrieval of status messages from users of ICQ 6.x, Miranda, and
--- a/libpurple/protocols/simple/simple.c Sun Feb 15 20:29:55 2009 +0000 +++ b/libpurple/protocols/simple/simple.c Sun Feb 15 21:03:40 2009 +0000 @@ -196,7 +196,7 @@ { struct simple_account_data *sip = (struct simple_account_data *)gc->proto_data; struct simple_buddy *b; - if(strcmp("sip:", buddy->name)) { + if(strncmp(buddy->name, "sip:", 4)) { gchar *buf = g_strdup_printf("sip:%s", buddy->name); purple_blist_rename_buddy(buddy, buf); g_free(buf); @@ -834,10 +834,10 @@ "Event: presence\r\n", expiration); - if(strstr(buddy->name, "sip:")) + if(strncmp(buddy->name, "sip:", 4)) + to = g_strdup_printf("sip:%s", buddy->name); + else to = g_strdup(buddy->name); - else - to = g_strdup_printf("sip:%s", buddy->name); tmp = get_contact(sip); contact = g_strdup_printf("%sContact: %s\r\n", tmp2, tmp); @@ -881,7 +881,7 @@ tmp = sipmsg_find_header(msg, "Event"); - if(tmp && !strcmp(tmp, "vnd-microsoft-roaming-contacts")){ + if(tmp && !strncmp(tmp, "vnd-microsoft-roaming-contacts", 30)){ purple_debug_info("simple", "simple_add_lcs_contacts->%s-%d\n", msg->body, len); /*Convert the contact from XML to Purple Buddies*/ @@ -1013,11 +1013,11 @@ static void simple_send_message(struct simple_account_data *sip, const char *to, const char *msg, const char *type) { gchar *hdr; gchar *fullto; - if(strcmp("sip:", to)) { + if(strncmp(to, "sip:", 4)) fullto = g_strdup_printf("sip:%s", to); - } else { + else fullto = g_strdup(to); - } + if(type) { hdr = g_strdup_printf("Content-Type: %s\r\n", type); } else { @@ -1050,12 +1050,12 @@ purple_debug(PURPLE_DEBUG_MISC, "simple", "got message from %s: %s\n", from, msg->body); contenttype = sipmsg_find_header(msg, "Content-Type"); - if(!contenttype || !strcmp(contenttype, "text/plain") || !strcmp(contenttype, "text/html")) { + if(!contenttype || !strncmp(contenttype, "text/plain", 10) || !strncmp(contenttype, "text/html", 9)) { serv_got_im(sip->gc, from, msg->body, 0, time(NULL)); send_sip_response(sip->gc, msg, 200, "OK", NULL); found = TRUE; } - else if(!strcmp(contenttype, "application/im-iscomposing+xml")) { + else if(!strncmp(contenttype, "application/im-iscomposing+xml", 30)) { xmlnode *isc = xmlnode_from_str(msg->body, msg->bodylen); xmlnode *state; gchar *statedata;