diff options
Diffstat (limited to 'sample')
-rw-r--r-- | sample/ws-chat-server.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sample/ws-chat-server.c b/sample/ws-chat-server.c index 731d1281..fae23e35 100644 --- a/sample/ws-chat-server.c +++ b/sample/ws-chat-server.c @@ -152,13 +152,19 @@ on_ws(struct evhttp_request *req, void *arg) socklen_t len; client = calloc(sizeof(*client), 1); + addr2str((struct sockaddr *)&addr, client->name, sizeof(client->name)); client->evws = evws_new_session(req, on_msg_cb, client, 0); + if (!client->evws) { + free(client); + log_d("Failed to create session (for %s)\n", client->name); + return; + } + fd = bufferevent_getfd(evws_connection_get_bufferevent(client->evws)); len = sizeof(addr); getpeername(fd, (struct sockaddr *)&addr, &len); - addr2str((struct sockaddr *)&addr, client->name, sizeof(client->name)); log_d("New client joined from %s\n", client->name); evws_connection_set_closecb(client->evws, on_close_cb, client); |