atproto relay implementation in zig zlay.waow.tech

fix: use forked websocket.zig with TCP split fix

Switch to zzstoatzz/websocket.zig fix/handshake-tcp-split branch
which guards the handshake parser against TCP splitting data between
\r and \n, preventing panics under load.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

+11 -5
+7 -1
Dockerfile
··· 7 7 | tar xJ -C /opt 8 8 ENV PATH=/opt/zig-x86_64-linux-0.15.2:$PATH 9 9 WORKDIR /build 10 - COPY . . 10 + 11 + # fetch dependencies first (cacheable — only changes when build.zig.zon changes) 12 + COPY build.zig build.zig.zon ./ 13 + RUN zig build --fetch-only 2>/dev/null || true 14 + 15 + # then copy source and build 16 + COPY src/ src/ 11 17 RUN zig build -Doptimize=ReleaseSafe -Dcpu=baseline -Dtarget=x86_64-linux-gnu 12 18 13 19 FROM --platform=linux/amd64 debian:bookworm-slim
+4 -4
build.zig.zon
··· 5 5 .minimum_zig_version = "0.15.0", 6 6 .dependencies = .{ 7 7 .zat = .{ 8 - .url = "https://tangled.org/zat.dev/zat/archive/v0.2.7.tar.gz", 9 - .hash = "zat-0.2.7-5PuC7oC4BADf6cKEjxRsLlg8SVYDbC1SAQanOLqMl2-Q", 8 + .url = "https://tangled.org/zat.dev/zat/archive/v0.2.8.tar.gz", 9 + .hash = "zat-0.2.8-5PuC7n-4BACVD9BxQgIOOUh2XZDxp735dXw0E5eJmtc8", 10 10 }, 11 11 .websocket = .{ 12 - .url = "https://github.com/karlseguin/websocket.zig/archive/97fefafa59cc78ce177cff540b8685cd7f699276.tar.gz", 13 - .hash = "websocket-0.1.0-ZPISdRlzAwBB_Bz2UMMqxYqF6YEVTIBoFsbzwPUJTHIc", 12 + .url = "https://github.com/zzstoatzz/websocket.zig/archive/50f179cfcb307e4872386658160a451fcdc7738d.tar.gz", 13 + .hash = "websocket-0.1.0-ZPISddZzAwC_4VR6gW24TQVEVfplV0lEr16AyH0InGMX", 14 14 }, 15 15 .pg = .{ 16 16 .url = "git+https://github.com/karlseguin/pg.zig?ref=master#e58b318b7867ef065b3135983f829219c5eef891",