mirror of
http://git.haproxy.org/git/haproxy.git
synced 2026-02-10 14:02:33 +02:00
BUG/MEDIUM: hlua: Fix receive API for TCP applets to properly handle shutdowns
An optional timeout was added to AppletTCP.receive() to interrupt calls after a delay. It was mandatory to be able to implement interactive applets (like trisdemo). However, this broke the API and it made impossible to differentiate the shutdowns from the delays expirations. Indeed, in both cases, an empty string was returned. Because historically an empty string was used to notify a connection shutdown, it should not be changed. So now, 'nil' value is returned when no data was available before the delay expiration. The new AppletTCP:try_receive() function was also affected. To fix it, instead of stating there is no delay when a receive is tried, an expired delay is set. Concretely TICK_ETERNITY was replaced by now_ms. Finally, AppletTCP:getline() function is not concerned for now because there is no way to interrupt it after some delay. The documentation and trisdemo lua script were updated accordingly. This patch depends on "BUG/MEDIUM: hlua: Properly detect shudowns for TCP applets based on the new API". However, it is a 3.2-specific issue, so no backport is needed.
This commit is contained in:
@@ -215,7 +215,7 @@ function handler(applet)
|
||||
|
||||
local input = applet:receive(1, delay)
|
||||
if input then
|
||||
if input == "q" then
|
||||
if input == "" or input == "q" then
|
||||
game_over = true
|
||||
elseif input == "\27" then
|
||||
local a = applet:receive(1, delay)
|
||||
|
||||
Reference in New Issue
Block a user