[
https://issues.apache.org/jira/browse/DISPATCH-2265?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17435407#comment-17435407
]
Ken Giusti commented on DISPATCH-2265:
--------------------------------------
Update: also affects HTTP/1.x.
Root cause:
On client connection, the client-facing adaptor creates the necessary ingress
link (router POV) bound to the service address. Since the service is not
active (e.g. no servers for that service address are subscribed in the routing
network) no link credit is granted to the ingress link. The adaptor does not
make read buffers available to the proactor raw connection until the ingress
link has credit (flow control).
The issue is that the proactor will not detect the client disconnect event
since the proactor cannot perform a socket recv() call without a read buffer
available. That's socket semantics: recv() returns 0 on connection close. So
no DISCONNECT event is generated and the connection remains indefinitely after
the client disconnects.
> TCP and HTTP adaptor: client connection leak on close if no connector present
> -----------------------------------------------------------------------------
>
> Key: DISPATCH-2265
> URL: https://issues.apache.org/jira/browse/DISPATCH-2265
> Project: Qpid Dispatch
> Issue Type: Bug
> Components: Protocol Adaptors
> Affects Versions: 1.17.0
> Reporter: Ken Giusti
> Priority: Major
> Fix For: 1.18.0
>
>
> Create a router with a tcpListener. Connect a client to the listener (I used
> Telnet). Disconnect the client. qdstat -l shows the in link for the service
> as still present. AFAIKT there was no DISCONNECT event.
> I used an edge router to reproduce this.
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]