comparison libpurple/protocols/msnp9/user.c @ 21674:4bc7d44f543a

Prevent exceeding the server limit on friendly name length when setting buddies friendly names on the server. This should fix at least some (if not all) of the new "Can't connect to MSN OMGWTFBBQ!" problems reported for 2.3.0
author Stu Tomlinson <stu@nosnilmot.com>
date Wed, 28 Nov 2007 01:31:36 +0000
parents af5de2b08fe0
children b08d0296ab88
comparison
equal deleted inserted replaced
21673:f9738214f308 21674:4bc7d44f543a
124 124
125 void 125 void
126 msn_user_set_friendly_name(MsnUser *user, const char *name) 126 msn_user_set_friendly_name(MsnUser *user, const char *name)
127 { 127 {
128 MsnCmdProc *cmdproc; 128 MsnCmdProc *cmdproc;
129 129 const char *encoded;
130 g_return_if_fail(user != NULL); 130
131 131 g_return_if_fail(user != NULL);
132 if (user->friendly_name && strcmp(user->friendly_name, name)) { 132
133 encoded = purple_url_encode(name);
134
135 if (user->friendly_name && strcmp(user->friendly_name, name) && (strlen(encoded) < 387)) {
133 /* copy the new name to the server list, but only when new */ 136 /* copy the new name to the server list, but only when new */
134 /* should we check this more thoroughly? */ 137 /* should we check this more thoroughly? */
135 cmdproc = user->userlist->session->notification->cmdproc; 138 cmdproc = user->userlist->session->notification->cmdproc;
136 msn_cmdproc_send(cmdproc, "REA", "%s %s", 139 msn_cmdproc_send(cmdproc, "REA", "%s %s",
137 user->passport, 140 user->passport,
138 purple_url_encode(name)); 141 encoded);
139 } 142 }
140 143
141 g_free(user->friendly_name); 144 g_free(user->friendly_name);
142 user->friendly_name = g_strdup(name); 145 user->friendly_name = g_strdup(name);
143 } 146 }