Mercurial > pidgin.yaz
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 |