atproto pds in zig pds.zat.dev
pds atproto

http: catch HandledResponse on the xrpc proxy path; 500-mask regression in smoke master

the proxy branch in serveRequest calls xrpcProxy with a bare try, but the error.HandledResponse => {} catch only wraps app.dispatch. so every xrpcError inside the proxy path — most visibly the 401 InvalidToken from requireBearerAccess — propagated up to handle(), which overwrote the already-written json error with a plain-text 500 "Internal Server Error". clients (noti's updateSeen fan-out) saw unparseable 500s instead of the 401 that would trigger a token refresh. regression from 845202e, which made xrpcError terminate via HandledResponse but only taught dispatch to catch it. tools/smoke.sh asserts a proxied updateSeen with a bad token is a 401 InvalidToken json body; it fails on the previous code. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>


+16 -1
2 changed files