<div dir="ltr">Hi<br><div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, May 18, 2015 at 9:09 AM, Victor Toso <span dir="ltr"><<a href="mailto:victortoso@redhat.com" target="_blank">victortoso@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">changes:<br>
- unecessary return on demux_to_client;<br></blockquote><div><br></div><div>that doesn't hurt, does it? it makes things more explicit perhaps<br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
- client struct has reference to current SpiceWebdavChannel so it can be<br>
  removed as parameter in client functions;<br></blockquote><div><br></div><div>I would rather keep it as argument to the function too, imho it's more clear like that and more consistant (looks like a regular channel method)<br><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
- using gboolean parameter to check if demux_to_client_finish failed<br>
  will be useful in the next commit<br></blockquote><div><br></div><div>then perhaps it should be part of next commit, as I don't get it here :)<br><br><br></div><div>Please split the commit for easier review<br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
---<br>
 gtk/channel-webdav.c | 44 ++++++++++++++++++++++----------------------<br>
 1 file changed, 22 insertions(+), 22 deletions(-)<br>
<br>
diff --git a/gtk/channel-webdav.c b/gtk/channel-webdav.c<br>
index 1d3862e..9e3a824 100644<br>
--- a/gtk/channel-webdav.c<br>
+++ b/gtk/channel-webdav.c<br>
@@ -219,9 +219,9 @@ client_ref(Client *client)<br>
     return client;<br>
 }<br>
<br>
-static void client_start_read(SpiceWebdavChannel *self, Client *client);<br>
+static void client_start_read(Client *client);<br>
<br>
-static void remove_client(SpiceWebdavChannel *self, Client *client)<br>
+static void remove_client(Client *client)<br>
 {<br>
     SpiceWebdavChannelPrivate *c;<br>
<br>
@@ -230,7 +230,7 @@ static void remove_client(SpiceWebdavChannel *self, Client *client)<br>
<br>
     g_cancellable_cancel(client->cancellable);<br>
<br>
-    c = self->priv;<br>
+    c = client->self->priv;<br>
     g_hash_table_remove(c->clients, &client->id);<br>
 }<br>
<br>
@@ -239,9 +239,9 @@ static void mux_pushed_cb(OutputQueue *q, gpointer user_data)<br>
     Client *client = user_data;<br>
<br>
     if (client->mux.size == 0) {<br>
-        remove_client(client->self, client);<br>
+        remove_client(client);<br>
     } else {<br>
-        client_start_read(client->self, client);<br>
+        client_start_read(client);<br>
     }<br>
<br>
     client_unref(client);<br>
@@ -278,14 +278,14 @@ end:<br>
     if (err) {<br>
         if (!g_cancellable_is_cancelled(client->cancellable))<br>
             g_warning("read error: %s", err->message);<br>
-        remove_client(self, client);<br>
+        remove_client(client);<br>
         g_clear_error(&err);<br>
     }<br>
<br>
     client_unref(client);<br>
 }<br>
<br>
-static void client_start_read(SpiceWebdavChannel *self, Client *client)<br>
+static void client_start_read(Client *client)<br>
 {<br>
     GInputStream *input;<br>
<br>
@@ -297,14 +297,13 @@ static void client_start_read(SpiceWebdavChannel *self, Client *client)<br>
<br>
 static void start_demux(SpiceWebdavChannel *self);<br>
<br>
-static void demux_to_client_finish(SpiceWebdavChannel *self,<br>
-                                   Client *client, gssize size)<br>
+static void demux_to_client_finish(Client *client, gboolean fail)<br>
 {<br>
+    SpiceWebdavChannel *self = client->self;<br>
     SpiceWebdavChannelPrivate *c = self->priv;<br>
<br>
-    if (size <= 0) {<br>
-        remove_client(self, client);<br>
-    }<br>
+    if (fail)<br>
+        remove_client(client);<br>
<br>
     c->demuxing = FALSE;<br>
     start_demux(self);<br>
@@ -315,6 +314,7 @@ static void demux_to_client_cb(GObject *source, GAsyncResult *result, gpointer u<br>
     Client *client = user_data;<br>
     SpiceWebdavChannelPrivate *c = client->self->priv;<br>
     GError *error = NULL;<br>
+    gboolean fail;<br>
     gssize size;<br>
<br>
     size = g_output_stream_write_finish(G_OUTPUT_STREAM(source), result, &error);<br>
@@ -324,25 +324,25 @@ static void demux_to_client_cb(GObject *source, GAsyncResult *result, gpointer u<br>
         g_clear_error(&error);<br>
     }<br>
<br>
+    fail = (size != c->demux.size);<br>
     g_warn_if_fail(size == c->demux.size);<br>
-    demux_to_client_finish(client->self, client, size);<br>
+    demux_to_client_finish(client, fail);<br>
 }<br>
<br>
-static void demux_to_client(SpiceWebdavChannel *self,<br>
-                            Client *client)<br>
+static void demux_to_client(Client *client)<br>
 {<br>
-    SpiceWebdavChannelPrivate *c = self->priv;<br>
+    SpiceWebdavChannelPrivate *c = client->self->priv;<br>
     gssize size = c->demux.size;<br>
<br>
-    CHANNEL_DEBUG(self, "pushing %"G_GSSIZE_FORMAT" to client %p", size, client);<br>
+    CHANNEL_DEBUG(client->self, "pushing %"G_GSSIZE_FORMAT" to client %p", size, client);<br>
<br>
     if (size > 0) {<br>
         g_output_stream_write_async(g_io_stream_get_output_stream(client->pipe),<br>
                                     c->demux.buf, size, G_PRIORITY_DEFAULT,<br>
                                     c->cancellable, demux_to_client_cb, client);<br>
-        return;<br>
     } else {<br>
-        demux_to_client_finish(self, client, size);<br>
+        /* Nothing to write */<br>
+        demux_to_client_finish(client, FALSE);<br>
     }<br>
 }<br>
<br>
@@ -377,8 +377,8 @@ static void start_client(SpiceWebdavChannel *self)<br>
<br>
     g_hash_table_insert(c->clients, &client->id, client);<br>
<br>
-    client_start_read(self, client);<br>
-    demux_to_client(self, client);<br>
+    client_start_read(client);<br>
+    demux_to_client(client);<br>
<br>
     g_clear_object(&addr);<br>
     return;<br>
@@ -417,7 +417,7 @@ static void data_read_cb(GObject *source_object,<br>
     client = g_hash_table_lookup(c->clients, &c->demux.client);<br>
<br>
     if (client)<br>
-        demux_to_client(self, client);<br>
+        demux_to_client(client);<br>
     else<br>
         start_client(self);<br>
 }<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.4.1<br>
<br>
_______________________________________________<br>
Spice-devel mailing list<br>
<a href="mailto:Spice-devel@lists.freedesktop.org">Spice-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/spice-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/spice-devel</a><br>
</font></span></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature">Marc-André Lureau</div>
</div></div></div>