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)