Mercurial > pidgin
comparison libpurple/protocols/msn/slplink.c @ 24393:70e662ef2412
Move msn_slplink_send_msgpart() that it doesn't need a forward declaration
and make it static
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Thu, 13 Nov 2008 06:43:48 +0000 |
parents | d402644d0f98 |
children | 9b253ce969d0 |
comparison
equal
deleted
inserted
replaced
24392:d1211d64c825 | 24393:70e662ef2412 |
---|---|
25 #include "slplink.h" | 25 #include "slplink.h" |
26 | 26 |
27 #include "switchboard.h" | 27 #include "switchboard.h" |
28 #include "slp.h" | 28 #include "slp.h" |
29 | 29 |
30 void msn_slplink_send_msgpart(MsnSlpLink *slplink, MsnSlpMessage *slpmsg); | |
31 | |
32 #ifdef MSN_DEBUG_SLP_FILES | 30 #ifdef MSN_DEBUG_SLP_FILES |
33 static int m_sc = 0; | 31 static int m_sc = 0; |
34 static int m_rc = 0; | 32 static int m_rc = 0; |
35 | 33 |
36 static void | 34 static void |
240 slplink->swboard->slplinks = g_list_prepend(slplink->swboard->slplinks, slplink); | 238 slplink->swboard->slplinks = g_list_prepend(slplink->swboard->slplinks, slplink); |
241 } | 239 } |
242 | 240 |
243 msn_switchboard_send_msg(slplink->swboard, msg, TRUE); | 241 msn_switchboard_send_msg(slplink->swboard, msg, TRUE); |
244 } | 242 } |
243 } | |
244 | |
245 static void | |
246 msn_slplink_send_msgpart(MsnSlpLink *slplink, MsnSlpMessage *slpmsg) | |
247 { | |
248 MsnMessage *msg; | |
249 long long real_size; | |
250 size_t len = 0; | |
251 | |
252 /* Maybe we will want to create a new msg for this slpmsg instead of | |
253 * reusing the same one all the time. */ | |
254 msg = slpmsg->msg; | |
255 | |
256 real_size = (slpmsg->flags == 0x2) ? 0 : slpmsg->size; | |
257 | |
258 if (slpmsg->offset < real_size) | |
259 { | |
260 if (slpmsg->fp) | |
261 { | |
262 char data[1202]; | |
263 len = fread(data, 1, sizeof(data), slpmsg->fp); | |
264 msn_message_set_bin_data(msg, data, len); | |
265 } | |
266 else | |
267 { | |
268 len = slpmsg->size - slpmsg->offset; | |
269 | |
270 if (len > 1202) | |
271 len = 1202; | |
272 | |
273 msn_message_set_bin_data(msg, slpmsg->buffer + slpmsg->offset, len); | |
274 } | |
275 | |
276 msg->msnslp_header.offset = slpmsg->offset; | |
277 msg->msnslp_header.length = len; | |
278 } | |
279 | |
280 #ifdef MSN_DEBUG_SLP | |
281 msn_message_show_readable(msg, slpmsg->info, slpmsg->text_body); | |
282 #endif | |
283 | |
284 #ifdef MSN_DEBUG_SLP_FILES | |
285 debug_msg_to_file(msg, TRUE); | |
286 #endif | |
287 | |
288 slpmsg->msgs = | |
289 g_list_append(slpmsg->msgs, msg); | |
290 msn_slplink_send_msg(slplink, msg); | |
291 | |
292 if ((slpmsg->flags == 0x20 || slpmsg->flags == 0x1000030) && | |
293 (slpmsg->slpcall != NULL)) | |
294 { | |
295 slpmsg->slpcall->progress = TRUE; | |
296 | |
297 if (slpmsg->slpcall->progress_cb != NULL) | |
298 { | |
299 slpmsg->slpcall->progress_cb(slpmsg->slpcall, slpmsg->size, | |
300 len, slpmsg->offset); | |
301 } | |
302 } | |
303 | |
304 /* slpmsg->offset += len; */ | |
245 } | 305 } |
246 | 306 |
247 /* We have received the message ack */ | 307 /* We have received the message ack */ |
248 static void | 308 static void |
249 msg_ack(MsnMessage *msg, void *data) | 309 msg_ack(MsnMessage *msg, void *data) |
287 slpmsg = data; | 347 slpmsg = data; |
288 | 348 |
289 msn_slplink_send_msgpart(slpmsg->slplink, slpmsg); | 349 msn_slplink_send_msgpart(slpmsg->slplink, slpmsg); |
290 | 350 |
291 slpmsg->msgs = g_list_remove(slpmsg->msgs, msg); | 351 slpmsg->msgs = g_list_remove(slpmsg->msgs, msg); |
292 } | |
293 | |
294 void | |
295 msn_slplink_send_msgpart(MsnSlpLink *slplink, MsnSlpMessage *slpmsg) | |
296 { | |
297 MsnMessage *msg; | |
298 long long real_size; | |
299 size_t len = 0; | |
300 | |
301 /* Maybe we will want to create a new msg for this slpmsg instead of | |
302 * reusing the same one all the time. */ | |
303 msg = slpmsg->msg; | |
304 | |
305 real_size = (slpmsg->flags == 0x2) ? 0 : slpmsg->size; | |
306 | |
307 if (slpmsg->offset < real_size) | |
308 { | |
309 if (slpmsg->fp) | |
310 { | |
311 char data[1202]; | |
312 len = fread(data, 1, sizeof(data), slpmsg->fp); | |
313 msn_message_set_bin_data(msg, data, len); | |
314 } | |
315 else | |
316 { | |
317 len = slpmsg->size - slpmsg->offset; | |
318 | |
319 if (len > 1202) | |
320 len = 1202; | |
321 | |
322 msn_message_set_bin_data(msg, slpmsg->buffer + slpmsg->offset, len); | |
323 } | |
324 | |
325 msg->msnslp_header.offset = slpmsg->offset; | |
326 msg->msnslp_header.length = len; | |
327 } | |
328 | |
329 #ifdef MSN_DEBUG_SLP | |
330 msn_message_show_readable(msg, slpmsg->info, slpmsg->text_body); | |
331 #endif | |
332 | |
333 #ifdef MSN_DEBUG_SLP_FILES | |
334 debug_msg_to_file(msg, TRUE); | |
335 #endif | |
336 | |
337 slpmsg->msgs = | |
338 g_list_append(slpmsg->msgs, msg); | |
339 msn_slplink_send_msg(slplink, msg); | |
340 | |
341 if ((slpmsg->flags == 0x20 || slpmsg->flags == 0x1000030) && | |
342 (slpmsg->slpcall != NULL)) | |
343 { | |
344 slpmsg->slpcall->progress = TRUE; | |
345 | |
346 if (slpmsg->slpcall->progress_cb != NULL) | |
347 { | |
348 slpmsg->slpcall->progress_cb(slpmsg->slpcall, slpmsg->size, | |
349 len, slpmsg->offset); | |
350 } | |
351 } | |
352 | |
353 /* slpmsg->offset += len; */ | |
354 } | 352 } |
355 | 353 |
356 void | 354 void |
357 msn_slplink_release_slpmsg(MsnSlpLink *slplink, MsnSlpMessage *slpmsg) | 355 msn_slplink_release_slpmsg(MsnSlpLink *slplink, MsnSlpMessage *slpmsg) |
358 { | 356 { |