server: Calculate remaining data size after a closure is processed

When processing a closure, data in the connection can be consumed again
if the closure itself invokes extra event dispatch. In that case the
remaining data size is also altered, so the variable len should be
updated after the closure is processed.

Signed-off-by: Jaeyoon Jung <jaeyoon.jung@lge.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
This commit is contained in:
Jaeyoon Jung 2016-01-12 13:12:34 +09:00 committed by Derek Foreman
parent ee9b69cfe0
commit 0a37511ecc
3 changed files with 12 additions and 2 deletions

View file

@ -313,7 +313,6 @@ wl_client_connection_data(int fd, uint32_t mask, void *data)
closure = wl_connection_demarshal(client->connection, size,
&client->objects, message);
len -= size;
if (closure == NULL && errno == ENOMEM) {
wl_resource_post_no_memory(resource);
@ -346,6 +345,8 @@ wl_client_connection_data(int fd, uint32_t mask, void *data)
if (client->error)
break;
len = wl_connection_pending_input(connection);
}
if (client->error)