Tue, 22 Jun 2010 22:44:28 +0000
Destroy Parts when the SlpMessage is destroyed.
|
31000
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
1 | #include "internal.h" |
|
31020
c1266a6b7745
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31017
diff
changeset
|
2 | #include "debug.h" |
|
31000
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
3 | |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
4 | #include "msg.h" |
|
30995
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
5 | #include "sbconn.h" |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
6 | |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
7 | /* We have received the message ack */ |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
8 | void |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
9 | msn_sbconn_msg_ack(MsnMessage *msg, void *data) |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
10 | { |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
11 | MsnSlpMessage *slpmsg; |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
12 | long long real_size; |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
13 | |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
14 | slpmsg = data; |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
15 | |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
16 | real_size = (slpmsg->flags == P2P_ACK) ? 0 : slpmsg->size; |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
17 | |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
18 | slpmsg->offset += msg->slpmsg->header->length; |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
19 | |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
20 | slpmsg->msgs = g_list_remove(slpmsg->msgs, msg); |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
21 | |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
22 | if (slpmsg->offset < real_size) |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
23 | { |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
24 | if (slpmsg->slpcall->xfer && purple_xfer_get_status(slpmsg->slpcall->xfer) == PURPLE_XFER_STATUS_STARTED) |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
25 | { |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
26 | slpmsg->slpcall->xfer_msg = slpmsg; |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
27 | msn_message_ref(msg); |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
28 | purple_xfer_prpl_ready(slpmsg->slpcall->xfer); |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
29 | } |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
30 | else |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
31 | msn_slplink_send_msgpart(slpmsg->slplink, slpmsg); |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
32 | } |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
33 | else |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
34 | { |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
35 | /* The whole message has been sent */ |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
36 | if (slpmsg->flags == P2P_MSN_OBJ_DATA || |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
37 | slpmsg->flags == (P2P_WML2009_COMP | P2P_MSN_OBJ_DATA) || |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
38 | slpmsg->flags == P2P_FILE_DATA) |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
39 | { |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
40 | if (slpmsg->slpcall != NULL) |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
41 | { |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
42 | if (slpmsg->slpcall->cb) |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
43 | slpmsg->slpcall->cb(slpmsg->slpcall, |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
44 | NULL, 0); |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
45 | } |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
46 | } |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
47 | } |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
48 | |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
49 | msn_message_unref(msg); |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
50 | } |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
51 | |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
52 | /* We have received the message nak. */ |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
53 | void |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
54 | msn_sbconn_msg_nak(MsnMessage *msg, void *data) |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
55 | { |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
56 | MsnSlpMessage *slpmsg; |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
57 | |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
58 | slpmsg = data; |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
59 | |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
60 | msn_slplink_send_msgpart(slpmsg->slplink, slpmsg); |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
61 | |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
62 | slpmsg->msgs = g_list_remove(slpmsg->msgs, msg); |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
63 | msn_message_unref(msg); |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
64 | } |
|
f9181483576b
Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff
changeset
|
65 | |
|
30997
ecccf0adf665
Manage sending messages trough switchboard in sbconn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30995
diff
changeset
|
66 | void msn_sbconn_send_msg(MsnSlpLink *slplink, MsnMessage *msg) |
|
ecccf0adf665
Manage sending messages trough switchboard in sbconn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30995
diff
changeset
|
67 | { |
|
ecccf0adf665
Manage sending messages trough switchboard in sbconn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30995
diff
changeset
|
68 | if (slplink->swboard == NULL) |
|
ecccf0adf665
Manage sending messages trough switchboard in sbconn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30995
diff
changeset
|
69 | { |
|
ecccf0adf665
Manage sending messages trough switchboard in sbconn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30995
diff
changeset
|
70 | slplink->swboard = msn_session_get_swboard(slplink->session, |
|
ecccf0adf665
Manage sending messages trough switchboard in sbconn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30995
diff
changeset
|
71 | slplink->remote_user, MSN_SB_FLAG_FT); |
|
ecccf0adf665
Manage sending messages trough switchboard in sbconn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30995
diff
changeset
|
72 | |
|
ecccf0adf665
Manage sending messages trough switchboard in sbconn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30995
diff
changeset
|
73 | g_return_if_fail(slplink->swboard != NULL); |
|
ecccf0adf665
Manage sending messages trough switchboard in sbconn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30995
diff
changeset
|
74 | |
|
ecccf0adf665
Manage sending messages trough switchboard in sbconn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30995
diff
changeset
|
75 | /* If swboard is destroyed we will be too */ |
|
ecccf0adf665
Manage sending messages trough switchboard in sbconn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30995
diff
changeset
|
76 | slplink->swboard->slplinks = g_list_prepend(slplink->swboard->slplinks, slplink); |
|
ecccf0adf665
Manage sending messages trough switchboard in sbconn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30995
diff
changeset
|
77 | } |
|
ecccf0adf665
Manage sending messages trough switchboard in sbconn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30995
diff
changeset
|
78 | |
|
ecccf0adf665
Manage sending messages trough switchboard in sbconn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30995
diff
changeset
|
79 | msn_switchboard_send_msg(slplink->swboard, msg, TRUE); |
|
ecccf0adf665
Manage sending messages trough switchboard in sbconn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30995
diff
changeset
|
80 | } |
|
31000
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
81 | |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
82 | void msn_sbconn_send_part(MsnSlpLink *slplink, MsnSlpMessagePart *part) |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
83 | { |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
84 | MsnMessage *msg; |
|
31010
83a229f1e114
Remove the MsnMessage from SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31000
diff
changeset
|
85 | const char *passport; |
|
31000
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
86 | char *data; |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
87 | size_t size; |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
88 | |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
89 | msg = msn_message_new_msnslp(); |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
90 | |
|
31010
83a229f1e114
Remove the MsnMessage from SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31000
diff
changeset
|
91 | passport = purple_normalize(slplink->session->account, slplink->remote_user); |
|
83a229f1e114
Remove the MsnMessage from SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31000
diff
changeset
|
92 | msn_message_set_header(msg, "P2P-Dest", passport); |
|
83a229f1e114
Remove the MsnMessage from SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31000
diff
changeset
|
93 | |
|
31000
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
94 | data = msn_slpmsgpart_serialize(part, &size); |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
95 | msg->part = part; |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
96 | |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
97 | msn_message_set_bin_data(msg, data, size); |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
98 | |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
99 | if (slplink->swboard == NULL) |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
100 | { |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
101 | slplink->swboard = msn_session_get_swboard(slplink->session, |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
102 | slplink->remote_user, MSN_SB_FLAG_FT); |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
103 | |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
104 | g_return_if_fail(slplink->swboard != NULL); |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
105 | |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
106 | /* If swboard is destroyed we will be too */ |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
107 | slplink->swboard->slplinks = g_list_prepend(slplink->swboard->slplinks, slplink); |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
108 | } |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
109 | |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
110 | msn_switchboard_send_msg(slplink->swboard, msg, TRUE); |
|
0bb75b492d64
Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
30997
diff
changeset
|
111 | } |
|
31017
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
112 | |
|
31020
c1266a6b7745
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31017
diff
changeset
|
113 | /** Called when a message times out. */ |
|
c1266a6b7745
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31017
diff
changeset
|
114 | static void |
|
c1266a6b7745
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31017
diff
changeset
|
115 | msg_timeout(MsnCmdProc *cmdproc, MsnTransaction *trans) |
|
c1266a6b7745
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31017
diff
changeset
|
116 | { |
|
c1266a6b7745
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31017
diff
changeset
|
117 | MsnMessage *msg; |
|
c1266a6b7745
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31017
diff
changeset
|
118 | |
|
c1266a6b7745
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31017
diff
changeset
|
119 | msg = trans->data; |
|
c1266a6b7745
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31017
diff
changeset
|
120 | |
|
c1266a6b7745
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31017
diff
changeset
|
121 | msg_error_helper(cmdproc, msg, MSN_MSG_ERROR_TIMEOUT); |
|
c1266a6b7745
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31017
diff
changeset
|
122 | } |
|
c1266a6b7745
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31017
diff
changeset
|
123 | |
|
31017
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
124 | static void |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
125 | release_msg(MsnSwitchBoard *swboard, MsnMessage *msg) |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
126 | { |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
127 | MsnCmdProc *cmdproc; |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
128 | MsnTransaction *trans; |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
129 | char *payload; |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
130 | gsize payload_len; |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
131 | char flag; |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
132 | |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
133 | g_return_if_fail(swboard != NULL); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
134 | g_return_if_fail(msg != NULL); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
135 | |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
136 | cmdproc = swboard->cmdproc; |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
137 | |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
138 | payload = msn_message_gen_payload(msg, &payload_len); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
139 | |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
140 | if (purple_debug_is_verbose()) { |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
141 | purple_debug_info("msn", "SB length:{%" G_GSIZE_FORMAT "}\n", payload_len); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
142 | msn_message_show_readable(msg, "SB SEND", FALSE); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
143 | } |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
144 | |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
145 | flag = msn_message_get_flag(msg); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
146 | trans = msn_transaction_new(cmdproc, "MSG", "%c %" G_GSIZE_FORMAT, |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
147 | flag, payload_len); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
148 | |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
149 | /* Data for callbacks */ |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
150 | msn_transaction_set_data(trans, msg); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
151 | |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
152 | if (flag != 'U') { |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
153 | if (msg->type == MSN_MSG_TEXT) |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
154 | { |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
155 | msg->ack_ref = TRUE; |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
156 | msn_message_ref(msg); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
157 | swboard->ack_list = g_list_append(swboard->ack_list, msg); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
158 | msn_transaction_set_timeout_cb(trans, msg_timeout); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
159 | } |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
160 | else if (msg->type == MSN_MSG_SLP) |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
161 | { |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
162 | msg->ack_ref = TRUE; |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
163 | msn_message_ref(msg); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
164 | swboard->ack_list = g_list_append(swboard->ack_list, msg); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
165 | msn_transaction_set_timeout_cb(trans, msg_timeout); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
166 | #if 0 |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
167 | if (msg->ack_cb != NULL) |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
168 | { |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
169 | msn_transaction_add_cb(trans, "ACK", msg_ack); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
170 | msn_transaction_add_cb(trans, "NAK", msg_nak); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
171 | } |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
172 | #endif |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
173 | } |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
174 | } |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
175 | |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
176 | trans->payload = payload; |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
177 | trans->payload_len = payload_len; |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
178 | |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
179 | msg->trans = trans; |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
180 | |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
181 | msn_cmdproc_send_trans(cmdproc, trans); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
182 | } |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
183 | |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
184 | static void |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
185 | queue_msg(MsnSwitchBoard *swboard, MsnMessage *msg) |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
186 | { |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
187 | g_return_if_fail(swboard != NULL); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
188 | g_return_if_fail(msg != NULL); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
189 | |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
190 | purple_debug_info("msn", "Appending message to queue.\n"); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
191 | |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
192 | g_queue_push_tail(swboard->msg_queue, msg); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
193 | |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
194 | msn_message_ref(msg); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
195 | } |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
196 | |
|
31020
c1266a6b7745
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31017
diff
changeset
|
197 | void |
|
c1266a6b7745
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31017
diff
changeset
|
198 | msn_sbconn_process_queue(MsnSwitchBoard *swboard) |
|
31017
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
199 | { |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
200 | MsnMessage *msg; |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
201 | |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
202 | g_return_if_fail(swboard != NULL); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
203 | |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
204 | purple_debug_info("msn", "Processing queue\n"); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
205 | |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
206 | while ((msg = g_queue_pop_head(swboard->msg_queue)) != NULL) |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
207 | { |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
208 | purple_debug_info("msn", "Sending message\n"); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
209 | release_msg(swboard, msg); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
210 | msn_message_unref(msg); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
211 | } |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
212 | } |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
213 | |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
214 | void |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
215 | msn_switchboard_send_msg(MsnSwitchBoard *swboard, MsnMessage *msg, |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
216 | gboolean queue) |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
217 | { |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
218 | g_return_if_fail(swboard != NULL); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
219 | g_return_if_fail(msg != NULL); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
220 | |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
221 | purple_debug_info("msn", "switchboard send msg..\n"); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
222 | if (msn_switchboard_can_send(swboard)) |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
223 | release_msg(swboard, msg); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
224 | else if (queue) |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
225 | queue_msg(swboard, msg); |
|
55654c6cd882
Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31010
diff
changeset
|
226 | } |