Commits (3)
  • Rob Swindell's avatar
    Change rev to 2.0. · c3619942
    Rob Swindell authored
  • Rob Swindell's avatar
    ZMODEM Window Management support · 483c86de
    Rob Swindell authored
    The default is still full-streaming mode. The default can be changed by
    setting [ZMODEM] MaxWindowSize in sexyz.ini to a maximum window size to
    use by default (e.g. "100K"). Additionally, a [ZMODDEM] TargetWindowSize
    can be set to a duration (e.g. 60s) to dynamically adjust the maximum
    window size to match the through-put rate while keeping the outstanding data
    in-flight to an estimated "duration". When TargetWindowSize is used, the
    MaxWindowSize only specifies the *initial* maximum window size.
    The new '-w' command-line option can be used to control Window Management
    support (e.g. over-riding the .ini set default) - by using '-w' or '-w0',
    Window Management won't be used or by using '-w<max-size>', a maximum window
    size will be imposed (subject to the TargetWindowSize setting mentioned
    above). <max-size> can be specified in bytes or multiples (e.g. "-w100K").
    Ths option is similar to the [l]sz '-w' option except no space is expected
    between '-w' and the (optional) max-size value.
    Also new, when receiving [ZMODEM] FullDuplex can be set to FALSE to disable
    streaming mode: if the RecvBufSize is not set (0), the sender should use the
    subpacket data length (block size, e.g. 1K) as the segment size. Otherwise,
    setting FullDuplex=FALSE should produce the same behavior as setting the
    RecvBufSize would before (the result being the use of "segmented ZMODEM"
    instead of "streaming ZMODEM").
    All sexyz command-line options are case-sensitive now (not just the 'cmds').
    A lot of code clean-up in zmodem.c.
    Incremented zmodem.c rev to 2.0.
    Incremented sexyz version to 3.0.
  • Rob Swindell's avatar
This diff is collapsed.
/* xmodem.c */
/* Synchronet X/YMODEM Functions */
/* $Id: xmodem.c,v 1.52 2019/08/31 22:39:24 rswindell Exp $ */
/* Synchronet X/YMODEM Functions */
* @format.tab-size 4 (Plain Text/Source Code File Header) *
......@@ -17,21 +14,9 @@
* See the GNU General Public License for more details: gpl.txt or *
* http://www.fsf.org/copyleft/gpl.html *
* *
* Anonymous FTP access to the most recent released source is available at *
* ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net *
* *
* Anonymous CVS access to the development source and modification history *
* is available at cvs.synchro.net:/cvsroot/sbbs, example: *
* cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login *
* (just hit return, no password is necessary) *
* cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src *
* *
* For Synchronet coding style and modification guidelines, see *
* http://www.synchro.net/source.html *
* *
* You are encouraged to submit any modifications (preferably in Unix diff *
* format) via e-mail to mods@synchro.net *
* *
* Note: If this box doesn't appear square, then you need to fix your tabs. *
......@@ -622,9 +607,7 @@ const char* xmodem_source(void)
char* xmodem_ver(char *buf)
sscanf("$Revision: 1.52 $", "%*s %s", buf);
return strcpy(buf, "2.0");
void xmodem_init(xmodem_t* xm, void* cbdata, long* mode
This diff is collapsed.
......@@ -281,6 +281,7 @@ typedef struct {
int32_t crc_request;
unsigned errors;
unsigned consecutive_errors;
int64_t current_window_size; /* "current transmitter file offset - last reported receiver file offset" */
/* Configuration */
BOOL escape_telnet_iac;
......@@ -292,6 +293,8 @@ typedef struct {
unsigned block_size;
unsigned max_block_size;
int64_t max_file_size; /* 0 = unlimited */
int64_t max_window_size; /* 0 = unlimited */
unsigned target_window_size; /* Target Transmit Window Size, in Seconds, 0 = no-auto-adjustment of window size */
int *log_level;
/* Callbacks */