diff options
-rw-r--r-- | libsoup/soup-websocket-connection.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/libsoup/soup-websocket-connection.c b/libsoup/soup-websocket-connection.c index 66742a1f..eff6ba66 100644 --- a/libsoup/soup-websocket-connection.c +++ b/libsoup/soup-websocket-connection.c @@ -348,6 +348,11 @@ send_message (SoupWebsocketConnection *self, guint8 *mask = 0; guint8 *at; + if (!(soup_websocket_connection_get_state (self) == SOUP_WEBSOCKET_STATE_OPEN)) { + g_debug ("Ignoring message since the connection is closed or is closing"); + return; + } + bytes = g_byte_array_sized_new (14 + length); outer = bytes->data; outer[0] = 0x80 | opcode; @@ -851,6 +856,12 @@ on_web_socket_output (GObject *pollable_stream, gssize count; gsize len; + if (soup_websocket_connection_get_state (self) == SOUP_WEBSOCKET_STATE_CLOSED) { + g_debug ("Ignoring message since the connection is closed"); + stop_output (self); + return TRUE; + } + frame = g_queue_peek_head (&pv->outgoing); /* No more frames to send */ |