[
https://issues.apache.org/jira/browse/THRIFT-2696?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14134661#comment-14134661
]
Severian Duchenko commented on THRIFT-2696:
-------------------------------------------
Hi, Jens.
Your patch doesn't help.
I can solve it by debugging a lot of time and read MSDN documentation.
I found than Delphi's wrappers of WinSock do not follow api contract.
According to
http://msdn.microsoft.com/en-us/library/windows/desktop/ms740141(v=vs.85).aspx
method "select" can return 0 when call is timed out, but Delphi's
TCustomIpClient.Select process 0 (using method ErrorCheck) as socket error and
returns False.
Also PeekBuf checks only for 1 byte available but not for "count".
> Unable to stop socket server while there are idle clients
> ---------------------------------------------------------
>
> Key: THRIFT-2696
> URL: https://issues.apache.org/jira/browse/THRIFT-2696
> Project: Thrift
> Issue Type: Bug
> Components: Delphi - Library
> Affects Versions: 0.9
> Reporter: Severian Duchenko
> Assignee: Jens Geyer
> Attachments:
> THRIFT-2696-Unable-to-stop-socket-server-while-there.patch,
> THRIFT-2696-Unable-to-stop-socket-server-while-there_v2.patch, patch.txt
>
>
> When TSimpleServer created using TServerSocketImpl and there are idle clients
> (connected, but not sending anything), it is impossible to stop server.
> After executing TSimpleServer.stop server will not stop until client is
> disconnected or does not send anything.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)