[Spice-commits] 2 commits - gtk/spice-channel.c
Marc-André Lureau
elmarco at kemper.freedesktop.org
Tue Apr 14 06:32:37 PDT 2015
gtk/spice-channel.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
New commits:
commit 372716d93ed929498e61305042815952f582fa0d
Author: Marc-André Lureau <marcandre.lureau at redhat.com>
Date: Tue Apr 14 12:17:38 2015 +0200
channel: HUP is not an error condition
On local UNIX sockets, calling close() in the server side will result in
a HUP condition on client side. Since this is not an error, but a normal
termination, let's ignore it.
A clean shutdown would involve a new message to tell the client to first
close its end, in order to avoid the HUP. That way the client could
distinguish normal termination from unexpected ones. That's a possible
future minor enhancement (it seems it would only work with UNIX socket
though)
G_IO_IN seemed to be a leftover, it is left here but shouldn't be
required.
https://bugs.freedesktop.org/show_bug.cgi?id=90016
diff --git a/gtk/spice-channel.c b/gtk/spice-channel.c
index 12d61ee..4e7d8b7 100644
--- a/gtk/spice-channel.c
+++ b/gtk/spice-channel.c
@@ -2151,9 +2151,9 @@ static gboolean spice_channel_iterate(SpiceChannel *channel)
/* We don't want to report an error if the socket was closed gracefully
* on the other end (VM shutdown) */
- ret = g_socket_condition_check(c->sock, G_IO_IN | G_IO_ERR | G_IO_HUP);
+ ret = g_socket_condition_check(c->sock, G_IO_IN | G_IO_ERR);
- if (ret & (G_IO_ERR|G_IO_HUP)) {
+ if (ret & G_IO_ERR) {
CHANNEL_DEBUG(channel, "channel got error");
if (c->state > SPICE_CHANNEL_STATE_CONNECTING) {
commit eac2a4243c38cf68e9f40e43008f9bccfb5649e2
Author: Marc-André Lureau <marcandre.lureau at redhat.com>
Date: Mon Apr 13 14:43:40 2015 +0200
channel: reset c->has_error when connected
Whenever the channel socket is connected, c->has_error should be reset.
Until now, only the regular open_host() case was reset, but client
client provided fd must also reset the error state.
It should be safe to move it after the "connected" label, since the
ssl code doesn't need c->has_error.
https://bugzilla.redhat.com/show_bug.cgi?id=1211063
diff --git a/gtk/spice-channel.c b/gtk/spice-channel.c
index 95eb615..12d61ee 100644
--- a/gtk/spice-channel.c
+++ b/gtk/spice-channel.c
@@ -2331,8 +2331,6 @@ reconnect:
}
c->sock = g_object_ref(g_socket_connection_get_socket(c->conn));
- c->has_error = FALSE;
-
if (c->tls) {
c->ctx = SSL_CTX_new(SSLv23_method());
if (c->ctx == NULL) {
@@ -2407,6 +2405,7 @@ ssl_reconnect:
}
connected:
+ c->has_error = FALSE;
c->in = g_io_stream_get_input_stream(G_IO_STREAM(c->conn));
c->out = g_io_stream_get_output_stream(G_IO_STREAM(c->conn));
More information about the Spice-commits
mailing list