Handle negentropy messages in default policies

This commit is contained in:
Jon Staab
2025-11-05 09:33:41 -08:00
parent 2d75d9de6f
commit d8b3f45cc4
+9 -4
View File
@@ -6,11 +6,13 @@ import {
isClientClose, isClientClose,
isClientEvent, isClientEvent,
isClientReq, isClientReq,
isClientNegOpen,
isClientNegClose, isClientNegClose,
RelayMessage, RelayMessage,
isRelayOk, isRelayOk,
isRelayEose, isRelayEose,
isRelayClosed, isRelayClosed,
isRelayNegErr,
} from "./message.js" } from "./message.js"
import {Socket, SocketStatus, SocketEvent} from "./socket.js" import {Socket, SocketStatus, SocketEvent} from "./socket.js"
import {AuthStatus, AuthStateEvent} from "./auth.js" import {AuthStatus, AuthStateEvent} from "./auth.js"
@@ -56,8 +58,11 @@ export const socketPolicyAuthBuffer = (socket: Socket) => {
} }
}), }),
on(socket, SocketEvent.Receiving, (message: RelayMessage) => { on(socket, SocketEvent.Receiving, (message: RelayMessage) => {
// If the client is closing a request during auth, don't tell the caller, we'll retry it // If the relay is closing a request during auth, don't tell the caller, we'll retry it
if (isRelayClosed(message) && message[2]?.startsWith("auth-required:")) { if (
(isRelayClosed(message) || isRelayNegErr(message)) &&
message[2]?.startsWith("auth-required:")
) {
socket._recvQueue.remove(message) socket._recvQueue.remove(message)
} }
@@ -153,11 +158,11 @@ export const socketPolicyCloseInactive = (socket: Socket) => {
pending.set(message[1].id, message) pending.set(message[1].id, message)
} }
if (isClientReq(message)) { if (isClientReq(message) || isClientNegOpen(message)) {
pending.set(message[1], message) pending.set(message[1], message)
} }
if (isClientClose(message)) { if (isClientClose(message) || isClientNegClose(message)) {
pending.delete(message[1]) pending.delete(message[1])
} }
}), }),