Jens Geyer created THRIFT-6355:
----------------------------------

             Summary: Lua socket_send() resumes a partial or interrupted send 
from the wrong position
                 Key: THRIFT-6355
                 URL: https://issues.apache.org/jira/browse/THRIFT-6355
             Project: Thrift
          Issue Type: Bug
          Components: Lua - Library
            Reporter: Jens Geyer


When {{send()}} in {{socket_send()}} ({{lib/lua/src/usocket.c}}) wrote only 
part of the data or was interrupted, the retry did not resume after the last 
byte sent, so the data that reached the peer was not the data given. A send 
whose retries ran out still reported success, and {{TSocket:write()}} did not 
check the result.

Fixed on master by 
[da77d60e8|https://github.com/apache/thrift/commit/da77d60e8d8c8f1635001c726fffeb0e3cb8c663]:
 {{socket_send()}} resumes each retry after the last byte sent and reports a 
timeout if its retries run out before all data is sent. {{TSocket:write()}} 
raises a {{TTransportException}} when the send fails, as {{TSocket:read()}} 
does for a failed receive.

Reported by Sylwester Lachiewicz.

_Drafted with AI assistance (Claude Opus 5); reviewed and posted by Jens Geyer._



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to