diff --git a/src/sbbs3/zmodem.c b/src/sbbs3/zmodem.c
index 9e2a396d79ac8c6335515ff9e20be7005cbec78f..2cff5028988af2f400a143a712a9a69553f1f96f 100644
--- a/src/sbbs3/zmodem.c
+++ b/src/sbbs3/zmodem.c
@@ -1301,10 +1301,11 @@ int zmodem_send_zrinit(zmodem_t* zm)
 	if(!zm->want_fcs_16)
 		zrinit_header[ZF0] |= ZF0_CANFC32;
 
-	if(zm->no_streaming) {
-		zrinit_header[ZP0] = sizeof(zm->rx_data_subpacket) & 0xff;
-		zrinit_header[ZP1] = sizeof(zm->rx_data_subpacket) >> 8;
-	}
+	if(zm->no_streaming && zm->recv_bufsize==0)
+		zm->recv_bufsize = sizeof(zm->rx_data_subpacket);
+
+	zrinit_header[ZP0] = zm->recv_bufsize & 0xff;
+	zrinit_header[ZP1] = zm->recv_bufsize >> 8;
 
 	return zmodem_send_hex_header(zm, zrinit_header);
 }