[Spice-devel] [PATCH spice-server 2/4] Do not set TCP_NODELAY flag twice

Christophe Fergeau cfergeau at redhat.com
Wed Feb 15 11:43:02 UTC 2017


On Wed, Feb 15, 2017 at 11:31:59AM +0000, Frediano Ziglio wrote:
> TCP_NODELAY flag is set by default for all connection inside
> reds.c so there's no need to set again for the single
> client channel.

Would have been nice to keep "Do not set not blocking flag twice"
together with this patch, and push them at the same time..

> 
> Note that there are still some call to setsockopt to set this
> option but in this case the flag can reset the flag.

'some calls'
the flag can reset the flag?

Acked-by: Christophe Fergeau <cfergeau at redhat.com>

> 
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
>  server/inputs-channel.c | 15 ---------------
>  server/spicevmc.c       | 19 -------------------
>  2 files changed, 34 deletions(-)
> 
> diff --git a/server/inputs-channel.c b/server/inputs-channel.c
> index 3672d7e..223f46f 100644
> --- a/server/inputs-channel.c
> +++ b/server/inputs-channel.c
> @@ -19,11 +19,7 @@
>  #include <config.h>
>  #endif
>  
> -#include <netinet/in.h> // IPPROTO_TCP
> -#include <netinet/tcp.h> // TCP_NODELAY
> -#include <fcntl.h>
>  #include <stddef.h> // NULL
> -#include <errno.h>
>  #include <stdbool.h>
>  #include <spice/macros.h>
>  #include <spice/vd_agent.h>
> @@ -490,17 +486,6 @@ static void inputs_pipe_add_init(RedChannelClient *rcc)
>  
>  static int inputs_channel_config_socket(RedChannelClient *rcc)
>  {
> -    int delay_val = 1;
> -    RedsStream *stream = red_channel_client_get_stream(rcc);
> -
> -    if (setsockopt(stream->socket, IPPROTO_TCP, TCP_NODELAY,
> -            &delay_val, sizeof(delay_val)) == -1) {
> -        if (errno != ENOTSUP && errno != ENOPROTOOPT) {
> -            spice_printerr("setsockopt failed, %s", strerror(errno));
> -            return FALSE;
> -        }
> -    }
> -
>      return TRUE;
>  }
>  
> diff --git a/server/spicevmc.c b/server/spicevmc.c
> index 4c9f442..4b46e54 100644
> --- a/server/spicevmc.c
> +++ b/server/spicevmc.c
> @@ -23,10 +23,7 @@
>  #endif
>  
>  #include <assert.h>
> -#include <errno.h>
>  #include <string.h>
> -#include <netinet/in.h> // IPPROTO_TCP
> -#include <netinet/tcp.h> // TCP_NODELAY
>  #ifdef USE_LZ4
>  #include <lz4.h>
>  #endif
> @@ -445,22 +442,6 @@ static void spicevmc_char_dev_remove_client(RedCharDevice *self,
>  
>  static int spicevmc_red_channel_client_config_socket(RedChannelClient *rcc)
>  {
> -    int delay_val = 1;
> -    RedsStream *stream = red_channel_client_get_stream(rcc);
> -    RedChannel *channel = red_channel_client_get_channel(rcc);
> -    uint32_t type;
> -
> -    g_object_get(channel, "channel-type", &type, NULL);
> -    if (type == SPICE_CHANNEL_USBREDIR) {
> -        if (setsockopt(stream->socket, IPPROTO_TCP, TCP_NODELAY,
> -                &delay_val, sizeof(delay_val)) != 0) {
> -            if (errno != ENOTSUP && errno != ENOPROTOOPT) {
> -                spice_printerr("setsockopt failed, %s", strerror(errno));
> -                return FALSE;
> -            }
> -        }
> -    }
> -
>      return TRUE;
>  }
>  
> -- 
> 2.9.3
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20170215/2be017fb/attachment.sig>


More information about the Spice-devel mailing list