|
Lines 447-453
msn_slplink_process_msg(MsnSlpLink *slpl
Link Here
|
| 447 |
slpmsg->session_id = msg->msnslp_header.session_id; |
447 |
slpmsg->session_id = msg->msnslp_header.session_id; |
| 448 |
slpmsg->size = msg->msnslp_header.total_size; |
448 |
slpmsg->size = msg->msnslp_header.total_size; |
| 449 |
slpmsg->flags = msg->msnslp_header.flags; |
449 |
slpmsg->flags = msg->msnslp_header.flags; |
| 450 |
slpmsg->buffer = g_malloc(slpmsg->size); |
|
|
| 451 |
|
450 |
|
| 452 |
if (slpmsg->session_id) |
451 |
if (slpmsg->session_id) |
| 453 |
{ |
452 |
{ |
|
Lines 471-480
msn_slplink_process_msg(MsnSlpLink *slpl
Link Here
|
| 471 |
} |
470 |
} |
| 472 |
} |
471 |
} |
| 473 |
} |
472 |
} |
|
|
473 |
if (!slpmsg->fp) |
| 474 |
{ |
| 475 |
slpmsg->buffer = g_try_malloc(slpmsg->size); |
| 476 |
if (slpmsg->buffer == NULL) |
| 477 |
{ |
| 478 |
gaim_debug_error("msn", "Failed to allocate buffer for slpmsg\n"); |
| 479 |
return; |
| 480 |
} |
| 481 |
} |
| 474 |
} |
482 |
} |
| 475 |
else |
483 |
else |
| 476 |
{ |
484 |
{ |
| 477 |
slpmsg = msn_slplink_message_find(slplink, msg->msnslp_header.id); |
485 |
slpmsg = msn_slplink_message_find(slplink, msg->msnslp_header.session_id, msg->msnslp_header.id); |
| 478 |
} |
486 |
} |
| 479 |
|
487 |
|
| 480 |
if (slpmsg != NULL) |
488 |
if (slpmsg != NULL) |
|
Lines 486-492
msn_slplink_process_msg(MsnSlpLink *slpl
Link Here
|
| 486 |
} |
494 |
} |
| 487 |
else |
495 |
else |
| 488 |
{ |
496 |
{ |
| 489 |
memcpy(slpmsg->buffer + offset, data, len); |
497 |
if ((offset + len) > slpmsg->size) |
|
|
498 |
{ |
| 499 |
gaim_debug_error("msn", "Oversized slpmsg\n"); |
| 500 |
g_return_if_reached(); |
| 501 |
} |
| 502 |
else |
| 503 |
memcpy(slpmsg->buffer + offset, data, len); |
| 490 |
} |
504 |
} |
| 491 |
} |
505 |
} |
| 492 |
else |
506 |
else |
|
Lines 544-550
msn_slplink_process_msg(MsnSlpLink *slpl
Link Here
|
| 544 |
} |
558 |
} |
| 545 |
|
559 |
|
| 546 |
MsnSlpMessage * |
560 |
MsnSlpMessage * |
| 547 |
msn_slplink_message_find(MsnSlpLink *slplink, long id) |
561 |
msn_slplink_message_find(MsnSlpLink *slplink, long session_id, long id) |
| 548 |
{ |
562 |
{ |
| 549 |
GList *e; |
563 |
GList *e; |
| 550 |
|
564 |
|
|
Lines 552-558
msn_slplink_message_find(MsnSlpLink *slp
Link Here
|
| 552 |
{ |
566 |
{ |
| 553 |
MsnSlpMessage *slpmsg = e->data; |
567 |
MsnSlpMessage *slpmsg = e->data; |
| 554 |
|
568 |
|
| 555 |
if (slpmsg->id == id) |
569 |
if ((slpmsg->session_id == session_id) && (slpmsg->id == id)) |
| 556 |
return slpmsg; |
570 |
return slpmsg; |
| 557 |
} |
571 |
} |
| 558 |
|
572 |
|