No description
Find a file
Stephen Dennis 2f1399c80d fix(tf): set TCP_NODELAY on the session socket (#2196)
client/tf never set TCP_NODELAY, so the client side of every session ran
with Nagle enabled.  Client companion to #2194, which was the same gap in
the server's POSIX engines.

A single typed command is immune either way: send_line() assembles command
+ CRLF into one buffer and issues one write().  But anything that sends
several lines in one event-loop pass -- a trigger firing off a match, a
macro or keybinding bound to multiple commands, a scripted burst, a
speedwalk -- produces back-to-back small writes, and Nagle makes each one
after the first wait for the ACK of its predecessor, which the peer's
delayed-ACK timer can hold for up to ~40ms.  Against a remote server the
burst then leaves the client at ACK cadence instead of departing together.

Invisible on loopback, which is why local testing never showed it.

Set after the connect loop rather than at either `break`, so both paths
(immediate connect and EINPROGRESS + poll) are covered by one call.
Non-fatal: a latency hint failing is no reason to refuse a connection that
otherwise works.

Verified by strace'ing tf under a pty against a scratch netmux:

    setsockopt(4, SOL_TCP, TCP_NODELAY, [1], 4) = 0

Catch-verified: with the change reverted, tf makes no setsockopt call at
all on the connect path.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 11:04:12 -06:00
client fix(tf): set TCP_NODELAY on the session socket (#2196) 2026-08-07 11:04:12 -06:00
color Color: Add CIELAB nearest-neighbor tool and YUV comparison 2026-03-16 11:20:08 -06:00
debian Retire ISSUES.md trackers; migrate open items to GitHub issues 2026-06-04 20:14:00 -05:00
docker Retire ISSUES.md trackers; migrate open items to GitHub issues 2026-06-04 20:14:00 -05:00
docs chore(#2136): post-merge nits from the PR review 2026-08-06 15:24:55 -06:00
hooks build(ragel): guard date_scan and strip #line from the remaining outputs (#2029) 2026-08-04 00:59:11 -06:00
mux fix(restart): stop leaking a helper generation per @restart (#2192) 2026-08-07 10:47:48 -06:00
parser Retire ISSUES.md trackers; migrate open items to GitHub issues 2026-06-04 20:14:00 -05:00
ragel build(ragel): guard date_scan and strip #line from the remaining outputs (#2029) 2026-08-04 00:59:11 -06:00
sgp Remove hardtabs. 2012-05-18 13:29:49 -07:00
specs Add clean target to specs Makefile. 2010-06-02 20:34:17 -07:00
testcases fix(#2183): a bare-substitution scope body escapes its restores as a raw slot reference 2026-08-06 23:32:40 -06:00
tests fix(restart): stop leaking a helper generation per @restart (#2192) 2026-08-07 10:47:48 -06:00
tools build(ragel): guard date_scan and strip #line from the remaining outputs (#2029) 2026-08-04 00:59:11 -06:00
unix build: ship five headers the TOCs never listed — a 2.14 cut today would not build 2026-08-07 02:32:17 -06:00
utf Regenerate UTF-8 DFA tables; fix table-gen toolchain on macOS 2026-06-04 12:32:08 -05:00
win32 build: ship five headers the TOCs never listed — a 2.14 cut today would not build 2026-08-07 02:32:17 -06:00
.editorconfig build: remove the 11 UTF-8 BOMs, and stop editors re-adding them (#1499) 2026-07-26 21:20:02 -06:00
.gitattributes test(perf): PerfSmokeWin — ETW CPU-sampling analog of PerfSmoke (#1920 W1) 2026-07-31 22:50:46 -06:00
.gitignore fix(#2166): a single-input PHI is its input — emit_phi resolves it, superblock backstops 2026-08-06 20:51:31 -06:00
AGENTS.md Add tools/ansify: MUX percent-color to ANSI (Ragel → C) 2026-08-01 17:12:16 -06:00
CLAUDE.md docs: how to measure performance here, and what the numbers cost (#2133) (#2143) 2026-08-06 07:15:11 -06:00
CONTRIBUTING.md docs: add CONTRIBUTING.md — contribution workflow and standards 2026-07-12 16:26:54 -06:00
dounix.sh build(release): the win32 source zip has never built; fix the TOC conflicts and validate the lists 2026-08-02 21:03:08 -06:00
dowin32.sh build(release): the win32 source zip has never built; fix the TOC conflicts and validate the lists 2026-08-02 21:03:08 -06:00
GEMINI.md Add AGENTS.md, GEMINI.md and clean up .gitignore 2026-03-08 20:33:27 -06:00
LICENSE Add top-level LICENSE file (Artistic-1.0 + revised TinyMUD notice) 2026-06-30 07:26:10 -08:00
Makefile test: make test-poison — run the smoke suite against a hostile allocator (#2149) 2026-08-06 10:31:50 -06:00