[Spice-commits] 2 commits - server/reds-private.h server/reds.c server/spice-server.h server/spice-server.syms

Christophe Fergau teuf at kemper.freedesktop.org
Fri Mar 11 17:28:03 UTC 2016


 server/reds-private.h    |    1 -
 server/reds.c            |   47 ++++++++++++++++++++++++++---------------------
 server/spice-server.h    |    1 -
 server/spice-server.syms |    7 +------
 4 files changed, 27 insertions(+), 29 deletions(-)

New commits:
commit 4c1471d0b6a5a2046fb2cf5f7448afeb49494e75
Author: Christophe Fergeau <cfergeau at redhat.com>
Date:   Wed Mar 2 12:25:23 2016 +0100

    Remove spice_server_set_keepalive_timeout
    
    This public API is no longer needed as the keepalive interval does not
    need to be configurable.
    This API was present in the 0.13.0 release, but was never added to a
    stable release, in my opinion it's still acceptable to remove it without
    changing soname.

diff --git a/server/reds-private.h b/server/reds-private.h
index 205973a..032f9f0 100644
--- a/server/reds-private.h
+++ b/server/reds-private.h
@@ -180,7 +180,6 @@ struct RedsState {
     int vm_running;
     GList *char_devices; /* list of SpiceCharDeviceState */
     int seamless_migration_enabled; /* command line arg */
-    int keepalive_timeout;
 
     SSL_CTX *ctx;
 
diff --git a/server/reds.c b/server/reds.c
index 8f03239..b1e1139 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -4007,13 +4007,6 @@ SPICE_GNUC_VISIBLE void spice_server_set_seamless_migration(SpiceServer *s, int
     spice_debug("seamless migration enabled=%d", enable);
 }
 
-SPICE_GNUC_VISIBLE void spice_server_set_keepalive_timeout(SpiceServer *s, int timeout)
-{
-    spice_assert(s == reds);
-    reds->keepalive_timeout = timeout;
-    spice_debug("keepalive timeout=%d", timeout);
-}
-
 GArray* reds_get_renderers(RedsState *reds)
 {
     return reds->renderers;
diff --git a/server/spice-server.h b/server/spice-server.h
index fa74136..c2ff61d 100644
--- a/server/spice-server.h
+++ b/server/spice-server.h
@@ -111,7 +111,6 @@ int spice_server_set_playback_compression(SpiceServer *s, int enable);
 int spice_server_set_agent_mouse(SpiceServer *s, int enable);
 int spice_server_set_agent_copypaste(SpiceServer *s, int enable);
 int spice_server_set_agent_file_xfer(SpiceServer *s, int enable);
-void spice_server_set_keepalive_timeout(SpiceServer *s, int timeout);
 
 int spice_server_get_sock_info(SpiceServer *s, struct sockaddr *sa, socklen_t *salen);
 int spice_server_get_peer_info(SpiceServer *s, struct sockaddr *sa, socklen_t *salen);
diff --git a/server/spice-server.syms b/server/spice-server.syms
index 7987d51..5c3e53c 100644
--- a/server/spice-server.syms
+++ b/server/spice-server.syms
@@ -163,13 +163,8 @@ global:
     spice_replay_free_cmd;
 } SPICE_SERVER_0.12.5;
 
-SPICE_SERVER_0.12.7 {
-global:
-    spice_server_set_keepalive_timeout;
-} SPICE_SERVER_0.12.6;
-
 SPICE_SERVER_0.13.1 {
 global:
     spice_qxl_gl_scanout;
     spice_qxl_gl_draw_async;
-} SPICE_SERVER_0.12.7;
+} SPICE_SERVER_0.12.6;
commit 7199ce961ae47adc6d33168afb87d5adada3ee94
Author: Christophe Fergeau <cfergeau at redhat.com>
Date:   Wed Mar 2 12:24:11 2016 +0100

    Always enable TCP keepalive
    
    Always enabled, hardcoded interval
    as per https://bugzilla.redhat.com/show_bug.cgi?id=1298590

diff --git a/server/reds.c b/server/reds.c
index 72282a6..8f03239 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -2287,6 +2287,31 @@ static void reds_handle_ssl_accept(int fd, int event, void *data)
     }
 }
 
+#define KEEPALIVE_TIMEOUT (10*60)
+
+static bool reds_init_keepalive(int socket)
+{
+    int keepalive = 1;
+    int keepalive_timeout = KEEPALIVE_TIMEOUT;
+
+    if (setsockopt(socket, SOL_SOCKET, SO_KEEPALIVE, &keepalive, sizeof(keepalive)) == -1) {
+        if (errno != ENOTSUP) {
+            spice_printerr("setsockopt for keepalive failed, %s", strerror(errno));
+            return false;
+        }
+    }
+
+    if (setsockopt(socket, SOL_TCP, TCP_KEEPIDLE,
+                   &keepalive_timeout, sizeof(keepalive_timeout)) == -1) {
+        if (errno != ENOTSUP) {
+            spice_printerr("setsockopt for keepalive timeout failed, %s", strerror(errno));
+            return false;
+        }
+    }
+
+    return true;
+}
+
 static RedLinkInfo *reds_init_client_connection(RedsState *reds, int socket)
 {
     RedLinkInfo *link;
@@ -2309,20 +2334,7 @@ static RedLinkInfo *reds_init_client_connection(RedsState *reds, int socket)
         }
     }
 
-    if (reds->keepalive_timeout > 0) {
-        int keepalive = 1;
-        if (setsockopt(socket, SOL_SOCKET, SO_KEEPALIVE, &keepalive, sizeof(keepalive)) == -1) {
-            if (errno != ENOTSUP) {
-                spice_printerr("setsockopt for keepalive failed, %s", strerror(errno));
-            }
-        }
-        if (setsockopt(socket, SOL_TCP, TCP_KEEPIDLE,
-                       &reds->keepalive_timeout, sizeof(reds->keepalive_timeout)) == -1) {
-            if (errno != ENOTSUP) {
-                spice_printerr("setsockopt for keepalive timeout failed, %s", strerror(errno));
-            }
-        }
-    }
+    reds_init_keepalive(socket);
 
     link = spice_new0(RedLinkInfo, 1);
     link->reds = reds;


More information about the Spice-commits mailing list