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);