mirror of
https://github.com/haproxy/haproxy.git
synced 2026-04-22 14:49:45 -04:00
BUG/MEDIUM: lua/socket: Notification error
Each time the send function yields, a notification must be registered. Without this notification, the task is never wakeup when data arrives. Today, the notification is registered only if the buffer is not available. Other cases like the buffer is too small for all data are not processed. This patch must be backported in 1.6, 1.7 and 1.8
This commit is contained in:
parent
7e4ee47acc
commit
ba42fcd064
1 changed files with 4 additions and 4 deletions
|
|
@ -1956,10 +1956,6 @@ static int hlua_socket_write_yield(struct lua_State *L,int status, lua_KContext
|
|||
/* Check for avalaible space. */
|
||||
len = buffer_total_space(s->req.buf);
|
||||
if (len <= 0) {
|
||||
if (!notification_new(&hlua->com, &appctx->ctx.hlua_cosocket.wake_on_write, hlua->task)) {
|
||||
xref_unlock(&socket->xref, peer);
|
||||
WILL_LJMP(luaL_error(L, "out of memory"));
|
||||
}
|
||||
goto hlua_socket_write_yield_return;
|
||||
}
|
||||
|
||||
|
|
@ -2002,6 +1998,10 @@ static int hlua_socket_write_yield(struct lua_State *L,int status, lua_KContext
|
|||
}
|
||||
|
||||
hlua_socket_write_yield_return:
|
||||
if (!notification_new(&hlua->com, &appctx->ctx.hlua_cosocket.wake_on_write, hlua->task)) {
|
||||
xref_unlock(&socket->xref, peer);
|
||||
WILL_LJMP(luaL_error(L, "out of memory"));
|
||||
}
|
||||
xref_unlock(&socket->xref, peer);
|
||||
WILL_LJMP(hlua_yieldk(L, 0, 0, hlua_socket_write_yield, TICK_ETERNITY, 0));
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Reference in a new issue