libpurple/xfer.c

changeset 39670
8d95b195ce69
parent 39669
bab07ecb9330
child 39775
a203f2974c98
--- a/libpurple/xfer.c	Tue Jul 02 03:07:40 2019 -0500
+++ b/libpurple/xfer.c	Thu Jul 04 20:38:04 2019 -0500
@@ -1089,15 +1089,6 @@
 		r = -1;
 	}
 
-	if (r >= 0 && (gsize)r == priv->current_buffer_size) {
-		/*
-		 * We managed to read the entire buffer.  This means our
-		 * network is fast and our buffer is too small, so make it
-		 * bigger.
-		 */
-		purple_xfer_increase_buffer_size(xfer);
-	}
-
 	return r;
 }
 
@@ -1107,6 +1098,7 @@
 	PurpleXferPrivate *priv = NULL;
 	PurpleXferClass *klass = NULL;
 	gsize s;
+	gssize r;
 
 	g_return_val_if_fail(PURPLE_IS_XFER(xfer), 0);
 	g_return_val_if_fail(buffer != NULL, 0);
@@ -1124,10 +1116,21 @@
 
 	klass = PURPLE_XFER_GET_CLASS(xfer);
 	if(klass && klass->read) {
-		return klass->read(xfer, buffer, s);
+		r = klass->read(xfer, buffer, s);
+	} else {
+		r = do_read(xfer, buffer, s);
 	}
 
-	return do_read(xfer, buffer, s);
+	if (r >= 0 && (gsize)r == priv->current_buffer_size) {
+		/*
+		 * We managed to read the entire buffer.  This means our
+		 * network is fast and our buffer is too small, so make it
+		 * bigger.
+		 */
+		purple_xfer_increase_buffer_size(xfer);
+	}
+
+	return r;
 }
 
 static gssize

mercurial