From e7bca3fc149cf07d80b35499f79364ce7241b100 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Wed, 8 Jun 2005 18:29:26 +0000 Subject: [PATCH] Created escape_telnet_iac (0xff) option. --- src/sbbs3/zmodem.c | 10 ++++++++++ src/sbbs3/zmodem.h | 1 + 2 files changed, 11 insertions(+) diff --git a/src/sbbs3/zmodem.c b/src/sbbs3/zmodem.c index 118808e8d4..6f6ed00a7a 100644 --- a/src/sbbs3/zmodem.c +++ b/src/sbbs3/zmodem.c @@ -35,6 +35,7 @@ #include "crc32.h" #include "sexyz.h" +#include "telnet.h" #define ENDOFFRAME 2 #define FRAMEOK 1 @@ -207,6 +208,8 @@ int zmodem_send_esc(zmodem_t* zm, unsigned char c) int zmodem_tx(zmodem_t* zm, unsigned char c) { + int result; + switch (c) { case DLE: case DLE|0x80: /* even if high-bit set */ @@ -221,6 +224,13 @@ int zmodem_tx(zmodem_t* zm, unsigned char c) if(zm->escape_all_control_characters && (zm->last_sent&0x7f) == '@') return zmodem_send_esc(zm, c); break; + case TELNET_IAC: + if(zm->escape_telnet_iac) { + if((result=zmodem_send_raw(zm, ZDLE))!=0) + return(result); + return zmodem_send_raw(zm, ZRUB1); + } + break; default: if(zm->escape_all_control_characters && (c&0x60)==0) return zmodem_send_esc(zm, c); diff --git a/src/sbbs3/zmodem.h b/src/sbbs3/zmodem.h index 21abc3b329..454b91d95e 100644 --- a/src/sbbs3/zmodem.h +++ b/src/sbbs3/zmodem.h @@ -251,6 +251,7 @@ typedef struct { long crc_request; /* Configuration */ + BOOL escape_telnet_iac; unsigned send_timeout; unsigned recv_timeout; unsigned max_errors; -- GitLab