BBS:      TELESC.NET.BR
Assunto:  src/syncterm/Wren.adoc src/syncterm/scripts/wrentest.wren src/syncterm
De:       Deuc¨
Data:     Tue, 28 Apr 2026 06:25:04 -0700
-----------------------------------------------------------
https://gitlab.synchro.net/main/sbbs/-/commit/572a7ff6bf903c063edc99a6
Modified Files:
	src/syncterm/Wren.adoc src/syncterm/scripts/wrentest.wren src/syncterm/term.c wren_host.c wren_host.h
Log Message:
SyncTERM: Hook.onInput String returns + filter spillover

Extend Hook.onInput so a handler can return a String to replace
the input byte with the string's bytes (up to 256; bigger
replacements log a runtime error and the byte passes through).
Bool true still drops, anything else still passes through.

Decouple the wire-side buffer from recv_byte_buffer: a separate
wire_buffer holds raw conn_recv_upto bytes, and the filter runs
them into recv_byte_buffer until either input exhausts or output
fills.  When a replacement won't fit, the filter pauses on that
input byte; the unprocessed wire-side tail stays parked in
wire_buffer until the next recv_bytes() call drains something out
and frees room for it.  Spillover means recv_byte_buffer never has
to grow past BUFFER_SIZE even with aggressive expansion.

wren_host_dispatch_input now returns int  KEEP/DROP/N  and writes
replacement bytes into a caller-provided buffer.  The caller
(wren_filter_input) commits N bytes only if they fit, otherwise
backs out without consuming the input byte.

Adds an LFCRLF hook to wrentest.wren that ticks a counter when it
fires; report_() asserts the counter is positive, exercising the
new WREN_TYPE_STRING dispatch branch end-to-end.

Co-Authored-By: Claude Opus 4.7 (1M context) 
n
---
  mSynchronetn  hgVertrauen n hHome of Synchronet n gh[vert/cvs/bbs].synchro.net

-----------------------------------------------------------
[Voltar]