comparison libpurple/protocols/msn/notification.c @ 31096:ed838ad00173

Fix MSN protocol version detection to use the best version returned by the server.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Wed, 02 Dec 2009 02:46:59 +0000
parents e30865b62859
children 4cdea258b143
comparison
equal deleted inserted replaced
31095:e30865b62859 31096:ed838ad00173
234 ver_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) 234 ver_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
235 { 235 {
236 MsnSession *session; 236 MsnSession *session;
237 PurpleAccount *account; 237 PurpleAccount *account;
238 gboolean protocol_supported = FALSE; 238 gboolean protocol_supported = FALSE;
239 char proto_str[8]; 239 int proto_ver;
240 size_t i; 240 size_t i;
241 241
242 session = cmdproc->session; 242 session = cmdproc->session;
243 account = session->account; 243 account = session->account;
244 244
245 g_snprintf(proto_str, sizeof(proto_str), "MSNP%d", session->protocol_ver); 245 session->protocol_ver = 0;
246
247 for (i = 1; i < cmd->param_count; i++) 246 for (i = 1; i < cmd->param_count; i++)
248 { 247 {
249 if (!strcmp(cmd->params[i], proto_str)) 248 if (sscanf(cmd->params[i], "MSNP%d", &proto_ver) == 1) {
250 { 249 if (proto_ver >= WLM_MIN_PROTOCOL
251 protocol_supported = TRUE; 250 && proto_ver <= WLM_MAX_PROTOCOL
252 break; 251 && proto_ver > session->protocol_ver) {
252 protocol_supported = TRUE;
253 session->protocol_ver = proto_ver;
254 }
253 } 255 }
254 } 256 }
255 257
256 if (!protocol_supported) 258 if (!protocol_supported)
257 { 259 {
258 msn_session_set_error(session, MSN_ERROR_UNSUPPORTED_PROTOCOL, 260 msn_session_set_error(session, MSN_ERROR_UNSUPPORTED_PROTOCOL,
259 NULL); 261 NULL);
260 return; 262 return;
261 } 263 }
264
265 purple_debug_info("msn", "Negotiated protocol version %d with the server.\n", session->protocol_ver);
262 266
263 /* 267 /*
264 * Windows Live Messenger 8.5 268 * Windows Live Messenger 8.5
265 * Notice :CVR String discriminate! 269 * Notice :CVR String discriminate!
266 * reference of http://www.microsoft.com/globaldev/reference/oslocversion.mspx 270 * reference of http://www.microsoft.com/globaldev/reference/oslocversion.mspx