[Spice-commits] 2 commits - configure.ac server/red_channel.c

Yonit Halperin yhalperi at kemper.freedesktop.org
Mon Jul 22 09:11:05 PDT 2013


 configure.ac         |    3 ++-
 server/red_channel.c |   13 +++++++++++--
 2 files changed, 13 insertions(+), 3 deletions(-)

New commits:
commit c07ba1cd4f357c0c6f89e71e3eabf12de5d4ec23
Author: Nahum Shalman <nshalman at elys.com>
Date:   Thu Jul 18 14:07:13 2013 -0400

    TIOCOUTQ -> SIOCOUTQ and portability ifdefs
    
    The ioctl on sockets is actually named SIOCOUTQ though its value
    is identical to TIOCOUTQ which is for terminals.
    SIOCOUTQ is linux specific so we add a header check and ifdef based
    on the presence of the header
    This prevents bogus ioctls on non-Linux platforms

diff --git a/configure.ac b/configure.ac
index a549ed9..fa1ba31 100644
--- a/configure.ac
+++ b/configure.ac
@@ -51,6 +51,7 @@ PKG_PROG_PKG_CONFIG
 
 AC_CHECK_HEADERS([sys/time.h])
 AC_CHECK_HEADERS([execinfo.h])
+AC_CHECK_HEADERS([linux/sockios.h])
 AC_FUNC_ALLOCA
 
 AC_DEFINE([__STDC_FORMAT_MACROS],[],[Force definition of format macros for C++])
diff --git a/server/red_channel.c b/server/red_channel.c
index 85d7ebc..31c991b 100644
--- a/server/red_channel.c
+++ b/server/red_channel.c
@@ -30,6 +30,9 @@
 #include <unistd.h>
 #include <errno.h>
 #include <sys/ioctl.h>
+#ifdef HAVE_LINUX_SOCKIOS_H
+#include <linux/sockios.h> /* SIOCOUTQ */
+#endif
 
 #include "common/generated_server_marshallers.h"
 #include "common/ring.h"
@@ -722,9 +725,11 @@ static void red_channel_client_ping_timer(void *opaque)
 
     spice_assert(rcc->latency_monitor.state == PING_STATE_TIMER);
     red_channel_client_cancel_ping_timer(rcc);
+
+#ifdef HAVE_LINUX_SOCKIOS_H /* SIOCOUTQ is a Linux only ioctl on sockets. */
     /* retrieving the occupied size of the socket's tcp snd buffer (unacked + unsent) */
-    if (ioctl(rcc->stream->socket, TIOCOUTQ, &so_unsent_size) == -1) {
-        spice_printerr("ioctl(TIOCOUTQ) failed, %s", strerror(errno));
+    if (ioctl(rcc->stream->socket, SIOCOUTQ, &so_unsent_size) == -1) {
+        spice_printerr("ioctl(SIOCOUTQ) failed, %s", strerror(errno));
     }
     if (so_unsent_size > 0) {
         /* tcp snd buffer is still occupied. rescheduling ping */
@@ -732,6 +737,10 @@ static void red_channel_client_ping_timer(void *opaque)
     } else {
         red_channel_client_push_ping(rcc);
     }
+#else /* ifdef HAVE_LINUX_SOCKIOS_H */
+    /* More portable alternative code path (less accurate but avoids bogus ioctls)*/
+    red_channel_client_push_ping(rcc);
+#endif /* ifdef HAVE_LINUX_SOCKIOS_H */
 }
 
 RedChannelClient *red_channel_client_create(int size, RedChannel *channel, RedClient  *client,
commit 7f3f51142caa19acd3f7de1daeced44649ed17c7
Author: Nahum Shalman <nshalman at elys.com>
Date:   Thu Jul 18 11:04:41 2013 -0400

    configure.ac comment typo nit

diff --git a/configure.ac b/configure.ac
index edda8e9..a549ed9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,7 +20,7 @@ m4_define([SPICE_AGE], [8])
 # Note on the library name on linux (SONAME) produced by libtool (for reference, gleaned
 # from looking at libtool 2.4.2)
 #
-#  libspice-servver.so.current-age.age.revision
+#  libspice-server.so.current-age.age.revision
 
 AC_INIT(spice, [m4_esyscmd(build-aux/git-version-gen .tarball-version)],
         [spice-devel at lists.freedesktop.org], spice)


More information about the Spice-commits mailing list