diff --git a/waku/waku_filter_v2/client.nim b/waku/waku_filter_v2/client.nim index 2ad275a94..a1899764c 100644 --- a/waku/waku_filter_v2/client.nim +++ b/waku/waku_filter_v2/client.nim @@ -58,6 +58,9 @@ proc sendSubscribeRequest( let connection = connOpt.get() + defer: + await connection.closeWithEOF() + try: await connection.writeLP(filterSubscribeRequest.encode().buffer) except CatchableError: diff --git a/waku/waku_filter_v2/protocol.nim b/waku/waku_filter_v2/protocol.nim index 8b419c300..9b4fe812e 100644 --- a/waku/waku_filter_v2/protocol.nim +++ b/waku/waku_filter_v2/protocol.nim @@ -293,6 +293,9 @@ proc initProtocolHandler(wf: WakuFilter) = var response: FilterSubscribeResponse + defer: + await conn.closeWithEOF() + wf.peerRequestRateLimiter.checkUsageLimit(WakuFilterSubscribeCodec, conn): var buf: seq[byte] try: diff --git a/waku/waku_lightpush/client.nim b/waku/waku_lightpush/client.nim index 2d5ba4899..4d0c49a84 100644 --- a/waku/waku_lightpush/client.nim +++ b/waku/waku_lightpush/client.nim @@ -43,6 +43,9 @@ proc sendPushRequest( dialFailure & ": " & $peer & " is not accessible", ) + defer: + await connection.closeWithEOF() + await connection.writeLP(req.encode().buffer) var buffer: seq[byte] diff --git a/waku/waku_lightpush/protocol.nim b/waku/waku_lightpush/protocol.nim index 955b1ade5..e7e66d618 100644 --- a/waku/waku_lightpush/protocol.nim +++ b/waku/waku_lightpush/protocol.nim @@ -107,6 +107,9 @@ proc handleRequest*( proc initProtocolHandler(wl: WakuLightPush) = proc handler(conn: Connection, proto: string) {.async: (raises: [CancelledError]).} = var rpc: LightPushResponse + defer: + await conn.closeWithEOF() + wl.requestRateLimiter.checkUsageLimit(WakuLightPushCodec, conn): var buffer: seq[byte] try: diff --git a/waku/waku_lightpush_legacy/client.nim b/waku/waku_lightpush_legacy/client.nim index 503cbe1eb..ee234c996 100644 --- a/waku/waku_lightpush_legacy/client.nim +++ b/waku/waku_lightpush_legacy/client.nim @@ -40,6 +40,9 @@ proc sendPushRequest( return err(dialFailure) let connection = connOpt.get() + defer: + await connection.closeWithEOF() + let rpc = PushRPC(requestId: generateRequestId(wl.rng), request: some(req)) await connection.writeLP(rpc.encode().buffer) diff --git a/waku/waku_lightpush_legacy/protocol.nim b/waku/waku_lightpush_legacy/protocol.nim index 75bededaf..e60913f0f 100644 --- a/waku/waku_lightpush_legacy/protocol.nim +++ b/waku/waku_lightpush_legacy/protocol.nim @@ -67,6 +67,9 @@ proc handleRequest*( proc initProtocolHandler(wl: WakuLegacyLightPush) = proc handler(conn: Connection, proto: string) {.async: (raises: [CancelledError]).} = var rpc: PushRPC + defer: + await conn.closeWithEOF() + wl.requestRateLimiter.checkUsageLimit(WakuLegacyLightPushCodec, conn): var buffer: seq[byte] try: diff --git a/waku/waku_store/client.nim b/waku/waku_store/client.nim index 27e92ab86..308d7f98e 100644 --- a/waku/waku_store/client.nim +++ b/waku/waku_store/client.nim @@ -25,6 +25,9 @@ proc sendStoreRequest( ): Future[StoreQueryResult] {.async, gcsafe.} = var req = request + defer: + await connection.closeWithEof() + if req.requestId == "": req.requestId = generateRequestId(self.rng) diff --git a/waku/waku_store/protocol.nim b/waku/waku_store/protocol.nim index 5e13c9a77..5ec9d507b 100644 --- a/waku/waku_store/protocol.nim +++ b/waku/waku_store/protocol.nim @@ -92,6 +92,10 @@ proc initProtocolHandler(self: WakuStore) = var successfulQuery = false ## only consider the correct queries in metrics var resBuf: StoreResp var queryDuration: float + + defer: + await conn.closeWithEof() + self.requestRateLimiter.checkUsageLimit(WakuStoreCodec, conn): let readRes = catch: await conn.readLp(DefaultMaxRpcSize.int) diff --git a/waku/waku_store_legacy/client.nim b/waku/waku_store_legacy/client.nim index f26906e9e..7d7fbb601 100644 --- a/waku/waku_store_legacy/client.nim +++ b/waku/waku_store_legacy/client.nim @@ -43,6 +43,9 @@ proc sendHistoryQueryRPC( let connection = connOpt.get() + defer: + await connection.closeWithEof() + let requestId = if req.requestId != "": req.requestId diff --git a/waku/waku_store_legacy/protocol.nim b/waku/waku_store_legacy/protocol.nim index 79d0f03a1..9b1e328b7 100644 --- a/waku/waku_store_legacy/protocol.nim +++ b/waku/waku_store_legacy/protocol.nim @@ -114,6 +114,10 @@ proc initProtocolHandler(ws: WakuStore) = var successfulQuery = false ## only consider the correct queries in metrics var resBuf: StoreResp var queryDuration: float + + defer: + await conn.closeWithEof() + ws.requestRateLimiter.checkUsageLimit(WakuLegacyStoreCodec, conn): let readRes = catch: await conn.readLp(DefaultMaxRpcSize.int)