| 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) |