Mercurial > pidgin.yaz
comparison src/protocols/msn/msnslp.c @ 9158:c30d81b4dd22
[gaim-migrate @ 9942]
Patch from Felipe Contreras to sync our MSN prpl with what's in his tree.
He says this may fix a couple bugs, but the important thing is the
restructuring of how MsnMessages work. Lots of style changes and other
stuff as well.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Tue, 01 Jun 2004 06:42:20 +0000 |
parents | f32ee2e97b37 |
children | ab6636c5a136 |
comparison
equal
deleted
inserted
replaced
9157:bd1ea0a717d7 | 9158:c30d81b4dd22 |
---|---|
97 | 97 |
98 gaim_debug_misc("msn", "Message = {%s}\n", body); | 98 gaim_debug_misc("msn", "Message = {%s}\n", body); |
99 | 99 |
100 invite_msg = msn_message_new_msnslp(); | 100 invite_msg = msn_message_new_msnslp(); |
101 | 101 |
102 msn_message_set_body(invite_msg, body); | 102 msn_message_set_bin_data(invite_msg, body, strlen(body)); |
103 | 103 |
104 g_free(body); | 104 g_free(body); |
105 | 105 |
106 msn_slp_session_send_msg(slpsession, invite_msg); | 106 msn_slp_session_send_msg(slpsession, invite_msg); |
107 } | 107 } |
164 g_return_val_if_fail(!strcmp(msn_message_get_content_type(msg), | 164 g_return_val_if_fail(!strcmp(msn_message_get_content_type(msg), |
165 "application/x-msnmsgrp2p"), TRUE); | 165 "application/x-msnmsgrp2p"), TRUE); |
166 | 166 |
167 account = slpsession->swboard->servconn->session->account; | 167 account = slpsession->swboard->servconn->session->account; |
168 | 168 |
169 body = msn_message_get_body(msg); | 169 body = msn_message_get_bin_data(msg, NULL); |
170 | 170 |
171 gaim_debug_misc("msn", "MSNSLP Message: {%s}\n", body); | 171 gaim_debug_misc("msn", "MSNSLP Message: {%s}\n", body); |
172 | 172 |
173 if (*body == '\0') | 173 if (*body == '\0') |
174 { | 174 { |
327 slpsession->receiver = remote_user; | 327 slpsession->receiver = remote_user; |
328 slpsession->sender = session->user; | 328 slpsession->sender = session->user; |
329 | 329 |
330 new_msg = msn_message_new_msnslp(); | 330 new_msg = msn_message_new_msnslp(); |
331 msn_message_set_bin_data(new_msg, nil_body, 4); | 331 msn_message_set_bin_data(new_msg, nil_body, 4); |
332 new_msg->msnslp_footer.app_id = 1; | 332 new_msg->msnslp_footer.value = 1; |
333 | 333 |
334 msn_slp_session_send_msg(slpsession, new_msg); | 334 msn_slp_session_send_msg(slpsession, new_msg); |
335 | 335 |
336 slpsession->send_fp = | 336 slpsession->send_fp = |
337 fopen(gaim_account_get_buddy_icon(account), "rb"); | 337 fopen(gaim_account_get_buddy_icon(account), "rb"); |
360 (slpsession->orig_len - slpsession->offset > 1202 | 360 (slpsession->orig_len - slpsession->offset > 1202 |
361 ? 1202 : slpsession->orig_len - slpsession->offset); | 361 ? 1202 : slpsession->orig_len - slpsession->offset); |
362 | 362 |
363 if (slpsession->offset > 0) | 363 if (slpsession->offset > 0) |
364 { | 364 { |
365 if (msg->bin_content) | 365 msn_message_set_bin_data(msg, |
366 { | 366 slpsession->orig_body + slpsession->offset, |
367 msn_message_set_bin_data(msg, | 367 msg->msnslp_header.length); |
368 slpsession->orig_body + slpsession->offset, | 368 } |
369 msg->msnslp_header.length); | 369 |
370 } | 370 msg->msnslp_header.offset = slpsession->offset; |
371 else | |
372 { | |
373 msn_message_set_body(msg, | |
374 slpsession->orig_body + slpsession->offset); | |
375 } | |
376 } | |
377 | |
378 msg->msnslp_header.offset_1 = slpsession->offset; | |
379 | 371 |
380 msn_switchboard_send_msg(slpsession->swboard, msg); | 372 msn_switchboard_send_msg(slpsession->swboard, msg); |
381 | 373 |
382 if (slpsession->offset + msg->msnslp_header.length == slpsession->orig_len) | 374 if (slpsession->offset + msg->msnslp_header.length == slpsession->orig_len) |
383 { | 375 { |
395 } | 387 } |
396 | 388 |
397 void | 389 void |
398 msn_slp_session_send_msg(MsnSlpSession *slpsession, MsnMessage *msg) | 390 msn_slp_session_send_msg(MsnSlpSession *slpsession, MsnMessage *msg) |
399 { | 391 { |
392 const void *temp; | |
393 | |
400 g_return_if_fail(slpsession != NULL); | 394 g_return_if_fail(slpsession != NULL); |
401 g_return_if_fail(msg != NULL); | 395 g_return_if_fail(msg != NULL); |
402 g_return_if_fail(msg->msnslp_message); | 396 g_return_if_fail(msg->msnslp_message); |
403 g_return_if_fail(slpsession->outgoing_msg == NULL); | 397 g_return_if_fail(slpsession->outgoing_msg == NULL); |
404 | 398 |
413 } | 407 } |
414 else if (slpsession->offset == 0) | 408 else if (slpsession->offset == 0) |
415 slpsession->prev_msg_id = ++slpsession->base_id; | 409 slpsession->prev_msg_id = ++slpsession->base_id; |
416 | 410 |
417 msg->msnslp_header.id = slpsession->prev_msg_id; | 411 msg->msnslp_header.id = slpsession->prev_msg_id; |
418 /*msg->msnslp_header.ack_session_id = rand() % 0xFFFFFF00;*/ | 412 /*msg->msnslp_header.ack_id = rand() % 0xFFFFFF00;*/ |
419 msg->msnslp_header.ack_session_id = 0x1407C7DE; | 413 msg->msnslp_header.ack_id = 0x1407C7DE; |
420 | 414 |
421 msn_message_set_charset(msg, NULL); | 415 msn_message_set_charset(msg, NULL); |
422 | 416 |
423 if (msg->msnslp_header.session_id != 0) | 417 if (msg->msnslp_header.session_id != 0) |
424 msg->msnslp_footer.app_id = 1; | 418 msg->msnslp_footer.value = 1; |
425 | 419 |
426 if (msg->bin_content) | 420 temp = msn_message_get_bin_data(msg, &slpsession->orig_len); |
427 { | 421 |
428 const void *temp; | 422 slpsession->orig_body = g_memdup(temp, slpsession->orig_len); |
429 | 423 |
430 temp = msn_message_get_bin_data(msg, &slpsession->orig_len); | 424 msg->msnslp_header.total_size = slpsession->orig_len; |
431 | |
432 slpsession->orig_body = g_memdup(temp, slpsession->orig_len); | |
433 } | |
434 else | |
435 { | |
436 slpsession->orig_body = g_strdup(msn_message_get_body(msg)); | |
437 slpsession->orig_len = strlen(slpsession->orig_body); | |
438 } | |
439 | |
440 msg->msnslp_header.total_size_1 = slpsession->orig_len; | |
441 msg->msnslp_header.length = slpsession->orig_len; | 425 msg->msnslp_header.length = slpsession->orig_len; |
442 | 426 |
443 send_msg_part(slpsession, msg); | 427 send_msg_part(slpsession, msg); |
444 } | 428 } |
445 | 429 |