Mercurial > pidgin
comparison libpurple/protocols/msn/slplink.c @ 30793:f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
author | masca@cpw.pidgin.im |
---|---|
date | Tue, 15 Jun 2010 00:42:05 +0000 |
parents | 9192c59f2f84 |
children | 4481d04cda70 |
comparison
equal
deleted
inserted
replaced
30792:9192c59f2f84 | 30793:f84fb808e8ed |
---|---|
26 #include "debug.h" | 26 #include "debug.h" |
27 | 27 |
28 #include "msn.h" | 28 #include "msn.h" |
29 #include "slplink.h" | 29 #include "slplink.h" |
30 | 30 |
31 #include "sbconn.h" | |
31 #include "switchboard.h" | 32 #include "switchboard.h" |
32 #include "slp.h" | 33 #include "slp.h" |
33 #include "p2p.h" | 34 #include "p2p.h" |
34 | 35 |
35 #ifdef MSN_DEBUG_SLP_FILES | 36 #ifdef MSN_DEBUG_SLP_FILES |
349 } | 350 } |
350 | 351 |
351 /* slpmsg->offset += len; */ | 352 /* slpmsg->offset += len; */ |
352 } | 353 } |
353 | 354 |
354 /* We have received the message ack */ | |
355 static void | |
356 msg_ack(MsnMessage *msg, void *data) | |
357 { | |
358 MsnSlpMessage *slpmsg; | |
359 long long real_size; | |
360 | |
361 slpmsg = data; | |
362 | |
363 real_size = (slpmsg->flags == P2P_ACK) ? 0 : slpmsg->size; | |
364 | |
365 slpmsg->offset += msg->slpmsg->header->length; | |
366 | |
367 slpmsg->msgs = g_list_remove(slpmsg->msgs, msg); | |
368 | |
369 if (slpmsg->offset < real_size) | |
370 { | |
371 if (slpmsg->slpcall->xfer && purple_xfer_get_status(slpmsg->slpcall->xfer) == PURPLE_XFER_STATUS_STARTED) | |
372 { | |
373 slpmsg->slpcall->xfer_msg = slpmsg; | |
374 msn_message_ref(msg); | |
375 purple_xfer_prpl_ready(slpmsg->slpcall->xfer); | |
376 } | |
377 else | |
378 msn_slplink_send_msgpart(slpmsg->slplink, slpmsg); | |
379 } | |
380 else | |
381 { | |
382 /* The whole message has been sent */ | |
383 if (slpmsg->flags == P2P_MSN_OBJ_DATA || | |
384 slpmsg->flags == (P2P_WML2009_COMP | P2P_MSN_OBJ_DATA) || | |
385 slpmsg->flags == P2P_FILE_DATA) | |
386 { | |
387 if (slpmsg->slpcall != NULL) | |
388 { | |
389 if (slpmsg->slpcall->cb) | |
390 slpmsg->slpcall->cb(slpmsg->slpcall, | |
391 NULL, 0); | |
392 } | |
393 } | |
394 } | |
395 | |
396 msn_message_unref(msg); | |
397 } | |
398 | |
399 /* We have received the message nak. */ | |
400 static void | |
401 msg_nak(MsnMessage *msg, void *data) | |
402 { | |
403 MsnSlpMessage *slpmsg; | |
404 | |
405 slpmsg = data; | |
406 | |
407 msn_slplink_send_msgpart(slpmsg->slplink, slpmsg); | |
408 | |
409 slpmsg->msgs = g_list_remove(slpmsg->msgs, msg); | |
410 msn_message_unref(msg); | |
411 } | |
412 | |
413 static void | 355 static void |
414 msn_slplink_release_slpmsg(MsnSlpLink *slplink, MsnSlpMessage *slpmsg) | 356 msn_slplink_release_slpmsg(MsnSlpLink *slplink, MsnSlpMessage *slpmsg) |
415 { | 357 { |
416 MsnMessage *msg; | 358 MsnMessage *msg; |
417 const char *passport; | 359 const char *passport; |
459 msg->slpmsg->header->total_size = slpmsg->size; | 401 msg->slpmsg->header->total_size = slpmsg->size; |
460 | 402 |
461 passport = purple_normalize(slplink->session->account, slplink->remote_user); | 403 passport = purple_normalize(slplink->session->account, slplink->remote_user); |
462 msn_message_set_header(msg, "P2P-Dest", passport); | 404 msn_message_set_header(msg, "P2P-Dest", passport); |
463 | 405 |
464 msg->ack_cb = msg_ack; | 406 msg->ack_cb = msn_sbconn_msg_ack; |
465 msg->nak_cb = msg_nak; | 407 msg->nak_cb = msn_sbconn_msg_nak; |
466 msg->ack_data = slpmsg; | 408 msg->ack_data = slpmsg; |
467 | 409 |
468 msn_slplink_send_msgpart(slplink, slpmsg); | 410 msn_slplink_send_msgpart(slplink, slpmsg); |
469 | 411 |
470 msn_message_destroy(msg); | 412 msn_message_destroy(msg); |