Mercurial > pidgin
comparison libpurple/ft.c @ 26167:4cbe258db067
fix a bug in libpurple that prevented receiving file transfers to be marked completed (in case the protocol uses an xfer->ops.read function)
author | Sulabh Mahajan <sulabh@soc.pidgin.im> |
---|---|
date | Wed, 28 Jan 2009 07:34:18 +0000 |
parents | 568b786c36f9 |
children | 0c796a1950b7 |
comparison
equal
deleted
inserted
replaced
26166:bc31ebd391d3 | 26167:4cbe258db067 |
---|---|
855 if (purple_xfer_get_size(xfer) == 0) | 855 if (purple_xfer_get_size(xfer) == 0) |
856 s = xfer->current_buffer_size; | 856 s = xfer->current_buffer_size; |
857 else | 857 else |
858 s = MIN(purple_xfer_get_bytes_remaining(xfer), xfer->current_buffer_size); | 858 s = MIN(purple_xfer_get_bytes_remaining(xfer), xfer->current_buffer_size); |
859 | 859 |
860 if (xfer->ops.read != NULL) | 860 if (xfer->ops.read != NULL) { |
861 r = (xfer->ops.read)(buffer, xfer); | 861 r = (xfer->ops.read)(buffer, xfer); |
862 if ((purple_xfer_get_size(xfer) > 0) && | |
863 ((purple_xfer_get_bytes_sent(xfer)+r) >= purple_xfer_get_size(xfer))) | |
864 purple_xfer_set_completed(xfer, TRUE); | |
865 } | |
862 else { | 866 else { |
863 *buffer = g_malloc0(s); | 867 *buffer = g_malloc0(s); |
864 | 868 |
865 r = read(xfer->fd, *buffer, s); | 869 r = read(xfer->fd, *buffer, s); |
866 if (r < 0 && errno == EAGAIN) | 870 if (r < 0 && errno == EAGAIN) |