Mercurial > pidgin
comparison libpurple/protocols/msn/slplink.c @ 28830:24b341ae63f7
msn: Use the PurpleXfer size if available.
This fixes file transfers not being detected as complete when there is
no file on the system (the receiving end isn't able to tell how much
data to expect).
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Mon, 28 Dec 2009 21:19:51 +0000 |
parents | bcea7c92d3f1 |
children | 932f16167621 |
comparison
equal
deleted
inserted
replaced
28825:ac6c2dda0eae | 28830:24b341ae63f7 |
---|---|
667 } MsnContextHeader; | 667 } MsnContextHeader; |
668 | 668 |
669 #define MAX_FILE_NAME_LEN 0x226 | 669 #define MAX_FILE_NAME_LEN 0x226 |
670 | 670 |
671 static gchar * | 671 static gchar * |
672 gen_context(const char *file_name, const char *file_path) | 672 gen_context(PurpleXfer *xfer, const char *file_name, const char *file_path) |
673 { | 673 { |
674 struct stat st; | 674 struct stat st; |
675 gsize size = 0; | 675 gsize size = 0; |
676 MsnContextHeader header; | 676 MsnContextHeader header; |
677 gchar *u8 = NULL; | 677 gchar *u8 = NULL; |
681 gunichar2 *uni = NULL; | 681 gunichar2 *uni = NULL; |
682 glong currentChar = 0; | 682 glong currentChar = 0; |
683 glong uni_len = 0; | 683 glong uni_len = 0; |
684 gsize len; | 684 gsize len; |
685 | 685 |
686 if (g_stat(file_path, &st) == 0) | 686 if (xfer) |
687 size = purple_xfer_get_size(xfer); | |
688 | |
689 if (size == 0 && g_stat(file_path, &st) == 0) | |
687 size = st.st_size; | 690 size = st.st_size; |
688 | 691 |
689 if(!file_name) { | 692 if(!file_name) { |
690 gchar *basename = g_path_get_basename(file_path); | 693 gchar *basename = g_path_get_basename(file_path); |
691 u8 = purple_utf8_try_convert(basename); | 694 u8 = purple_utf8_try_convert(basename); |
759 purple_xfer_set_read_fnc(xfer, msn_xfer_read); | 762 purple_xfer_set_read_fnc(xfer, msn_xfer_read); |
760 purple_xfer_set_write_fnc(xfer, msn_xfer_write); | 763 purple_xfer_set_write_fnc(xfer, msn_xfer_write); |
761 | 764 |
762 xfer->data = slpcall; | 765 xfer->data = slpcall; |
763 | 766 |
764 context = gen_context(fn, fp); | 767 context = gen_context(xfer, fn, fp); |
765 | 768 |
766 msn_slpcall_invite(slpcall, MSN_FT_GUID, 2, context); | 769 msn_slpcall_invite(slpcall, MSN_FT_GUID, 2, context); |
767 | 770 |
768 g_free(context); | 771 g_free(context); |
769 } | 772 } |