From cbae690ba229cc4b7bef18f0f36fbcd0dc7d3f38 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Tue, 19 Apr 2005 09:25:09 +0000
Subject: [PATCH] Don't set parity bit on LF value following hex headers (dunno
 why FDSZ does). Added comments regarding ZF3 value in ZRQINIT header.

---
 src/sbbs3/zmodem.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/sbbs3/zmodem.c b/src/sbbs3/zmodem.c
index 6284c5d54a..5e0a5824ed 100644
--- a/src/sbbs3/zmodem.c
+++ b/src/sbbs3/zmodem.c
@@ -268,7 +268,7 @@ zmodem_tx_hex_header(zmodem_t* zm, unsigned char * p)
 	 */
 
 	zmodem_tx_raw(zm, '\r');
-	zmodem_tx_raw(zm, '\n'|0x80);	/* FDSZ sends 0x8a instead of 0x0a */
+	zmodem_tx_raw(zm, '\n');	/* FDSZ sends 0x8a instead of 0x0a */
 
 	if(type!=ZACK && type!=ZFIN)
 		zmodem_tx_raw(zm, XON);
@@ -1204,7 +1204,9 @@ void zmodem_parse_zrinit(zmodem_t* zm)
 
 int zmodem_get_zrinit(zmodem_t* zm)
 {
-	unsigned char zrqinit_header[] = { ZRQINIT, 0, 0, 0, 0 };
+	unsigned char zrqinit_header[] = { ZRQINIT, /* ZF3: */0, 0, 0, /* ZF0: */0 };
+	/* Note: sz/dsz/fdsz sends 0x80 in ZF3 because it supports var-length headers. */
+	/* We do not, so we send 0x00, resulting in a CRC-16 value of 0x0000 as well. */
 
 	zmodem_tx_raw(zm,'r');
 	zmodem_tx_raw(zm,'z');
-- 
GitLab