Commit 35ab4756 authored by Fiedler, Mathias's avatar Fiedler, Mathias Committed by Derek Foreman

server: add log message when client connection is destroyed due to an error

The client connection is destroyed by the server in several
circumstances. This patch adds log messages in case the connection is
destroyed due to an error other than normal hangup.
Signed-off-by: default avatarMathias Fiedler <mathias_fiedler@mentor.com>
Reviewed-by: default avatarDerek Foreman <derekf@osg.samsung.com>
parent ff992951
......@@ -300,6 +300,13 @@ wl_resource_post_error(struct wl_resource *resource,
client->error = 1;
}
static void
destroy_client_with_error(struct wl_client *client, const char *reason)
{
wl_log("%s (pid %u)\n", reason, client->ucred.pid);
wl_client_destroy(client);
}
static int
wl_client_connection_data(int fd, uint32_t mask, void *data)
{
......@@ -314,15 +321,21 @@ wl_client_connection_data(int fd, uint32_t mask, void *data)
int opcode, size, since;
int len;
if (mask & (WL_EVENT_ERROR | WL_EVENT_HANGUP)) {
if (mask & WL_EVENT_HANGUP) {
wl_client_destroy(client);
return 1;
}
if (mask & WL_EVENT_ERROR) {
destroy_client_with_error(client, "socket error");
return 1;
}
if (mask & WL_EVENT_WRITABLE) {
len = wl_connection_flush(connection);
if (len < 0 && errno != EAGAIN) {
wl_client_destroy(client);
destroy_client_with_error(
client, "failed to flush client connection");
return 1;
} else if (len >= 0) {
wl_event_source_fd_update(client->source,
......@@ -334,7 +347,8 @@ wl_client_connection_data(int fd, uint32_t mask, void *data)
if (mask & WL_EVENT_READABLE) {
len = wl_connection_read(connection);
if (len == 0 || (len < 0 && errno != EAGAIN)) {
wl_client_destroy(client);
destroy_client_with_error(
client, "failed to read client connection");
return 1;
}
}
......@@ -418,8 +432,10 @@ wl_client_connection_data(int fd, uint32_t mask, void *data)
len = wl_connection_pending_input(connection);
}
if (client->error)
wl_client_destroy(client);
if (client->error) {
destroy_client_with_error(client,
"error in client communication");
}
return 1;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment