diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c
index 6efe52394ff6fc4cc9d0be019473f9c913b41d7a..c1e41333b78828080ea78eb0d8b2b0c4908c6b4a 100644
--- a/src/sbbs3/ftpsrvr.c
+++ b/src/sbbs3/ftpsrvr.c
@@ -978,7 +978,8 @@ static void receive_thread(void* arg)
 			int status = cryptPopData(*xfer.data_sess, buf, sizeof(buf), &rd);
 			if (status != CRYPT_OK) {
 				GCES(status, *xfer.data_sock, *xfer.data_sess, estr, "popping data");
-				rd = -1;
+				if (status != CRYPT_ERROR_COMPLETE)
+					rd = SOCKET_ERROR;
 			}
 		}
 		else {