Mercurial > pidgin
comparison libpurple/protocols/msn/soap.c @ 31558:ce968e115c95
propagate from branch 'im.pidgin.cpw.masca.p2p' (head 33ca865dacb9e5bcf763d06f6a42cbaca337cc64)
to branch 'im.pidgin.pidgin' (head 92f47f4e8b0cbb107fd97e1ab814d1cedbf109ad)
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Fri, 06 May 2011 06:25:14 +0000 |
parents | fe35df9a5af4 |
children |
comparison
equal
deleted
inserted
replaced
31557:f021d93a1f9b | 31558:ce968e115c95 |
---|---|
139 static void | 139 static void |
140 msn_soap_connection_destroy_foreach_cb(gpointer item, gpointer data) | 140 msn_soap_connection_destroy_foreach_cb(gpointer item, gpointer data) |
141 { | 141 { |
142 MsnSoapRequest *req = item; | 142 MsnSoapRequest *req = item; |
143 | 143 |
144 if (req->cb) | 144 req->cb(req->message, NULL, req->cb_data); |
145 req->cb(req->message, NULL, req->cb_data); | |
146 | 145 |
147 msn_soap_request_destroy(req, FALSE); | 146 msn_soap_request_destroy(req, FALSE); |
148 } | 147 } |
149 | 148 |
150 static void | 149 static void |
228 msn_soap_connection_handle_next(MsnSoapConnection *conn) | 227 msn_soap_connection_handle_next(MsnSoapConnection *conn) |
229 { | 228 { |
230 msn_soap_connection_sanitize(conn, FALSE); | 229 msn_soap_connection_sanitize(conn, FALSE); |
231 | 230 |
232 conn->run_timer = purple_timeout_add(0, msn_soap_connection_run, conn); | 231 conn->run_timer = purple_timeout_add(0, msn_soap_connection_run, conn); |
233 | |
234 if (conn->current_request) { | |
235 MsnSoapRequest *req = conn->current_request; | |
236 conn->current_request = NULL; | |
237 msn_soap_connection_destroy_foreach_cb(req, conn); | |
238 } | |
239 } | 232 } |
240 | 233 |
241 static void | 234 static void |
242 msn_soap_message_send_internal(MsnSession *session, MsnSoapMessage *message, | 235 msn_soap_message_send_internal(MsnSession *session, MsnSoapMessage *message, |
243 const char *host, const char *path, gboolean secure, | 236 const char *host, const char *path, gboolean secure, |
267 msn_soap_message_send(MsnSession *session, MsnSoapMessage *message, | 260 msn_soap_message_send(MsnSession *session, MsnSoapMessage *message, |
268 const char *host, const char *path, gboolean secure, | 261 const char *host, const char *path, gboolean secure, |
269 MsnSoapCallback cb, gpointer cb_data) | 262 MsnSoapCallback cb, gpointer cb_data) |
270 { | 263 { |
271 g_return_if_fail(message != NULL); | 264 g_return_if_fail(message != NULL); |
265 g_return_if_fail(cb != NULL); | |
272 | 266 |
273 msn_soap_message_send_internal(session, message, host, path, secure, | 267 msn_soap_message_send_internal(session, message, host, path, secure, |
274 cb, cb_data, FALSE); | 268 cb, cb_data, FALSE); |
275 } | 269 } |
276 | 270 |
279 { | 273 { |
280 char *host; | 274 char *host; |
281 char *path; | 275 char *path; |
282 | 276 |
283 if (purple_url_parse(url, &host, NULL, &path, NULL, NULL)) { | 277 if (purple_url_parse(url, &host, NULL, &path, NULL, NULL)) { |
284 msn_soap_message_send_internal(conn->session, conn->current_request->message, | 278 MsnSoapRequest *req = conn->current_request; |
285 host, path, conn->current_request->secure, | |
286 conn->current_request->cb, conn->current_request->cb_data, TRUE); | |
287 | |
288 msn_soap_request_destroy(conn->current_request, TRUE); | |
289 conn->current_request = NULL; | 279 conn->current_request = NULL; |
280 | |
281 msn_soap_message_send_internal(conn->session, req->message, host, path, | |
282 req->secure, req->cb, req->cb_data, TRUE); | |
283 | |
284 msn_soap_request_destroy(req, TRUE); | |
290 | 285 |
291 g_free(host); | 286 g_free(host); |
292 g_free(path); | 287 g_free(path); |
293 | 288 |
294 return TRUE; | 289 return TRUE; |
378 if (conn->response_code == 0) { | 373 if (conn->response_code == 0) { |
379 if (sscanf(cursor, "HTTP/1.1 %d", &conn->response_code) != 1) { | 374 if (sscanf(cursor, "HTTP/1.1 %d", &conn->response_code) != 1) { |
380 /* something horribly wrong */ | 375 /* something horribly wrong */ |
381 purple_ssl_close(conn->ssl); | 376 purple_ssl_close(conn->ssl); |
382 conn->ssl = NULL; | 377 conn->ssl = NULL; |
383 msn_soap_connection_handle_next(conn); | |
384 handled = TRUE; | 378 handled = TRUE; |
385 break; | 379 break; |
386 } else if (conn->response_code == 503 && conn->session->login_step < MSN_LOGIN_STEP_END) { | 380 } else if (conn->response_code == 503 && conn->session->login_step < MSN_LOGIN_STEP_END) { |
387 msn_soap_connection_sanitize(conn, TRUE); | 381 msn_soap_connection_sanitize(conn, TRUE); |
388 msn_session_set_error(conn->session, MSN_ERROR_SERV_UNAVAILABLE, NULL); | 382 msn_session_set_error(conn->session, MSN_ERROR_SERV_UNAVAILABLE, NULL); |