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 {