[Spice-devel] [PATCH 1/2] server: don't fail on ENOPROTOOPT from setsockopt

Alon Levy alevy at redhat.com
Sat Mar 10 03:00:22 PST 2012


On Fri, Mar 09, 2012 at 12:26:50PM -0500, Nahum Shalman wrote:
> If we allow listening on arbitrary sockets like unix sockets,
> we can get ENOPROTOOPT errors from setsockopt calls that set TCP
> specific options.  This should be allowed to happen.

I'm a little concerned that we will ignore actual errors for TCP sockets
this way. I think this patch is ok, but I'd like to see an additional
patch that added a boolean or enum for the socket type and thus could
avoid doing the IPPROTO_TCP in the first place. Or maybe you can get
that information from a filedescriptor without caching it yourself.

> ---
>  server/inputs_channel.c |    2 +-
>  server/spicevmc.c       |    2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/server/inputs_channel.c b/server/inputs_channel.c
> index a3f26c0..fb25fe0 100644
> --- a/server/inputs_channel.c
> +++ b/server/inputs_channel.c
> @@ -470,7 +470,7 @@ static int inputs_channel_config_socket(RedChannelClient *rcc)
>  
>      if (setsockopt(stream->socket, IPPROTO_TCP, TCP_NODELAY,
>              &delay_val, sizeof(delay_val)) == -1) {
> -        if (errno != ENOTSUP) {
> +        if (errno != ENOTSUP && errno != ENOPROTOOPT) {
>              red_printf("setsockopt failed, %s", strerror(errno));
>              return FALSE;
>          }
> diff --git a/server/spicevmc.c b/server/spicevmc.c
> index 30aaf2f..9449c1e 100644
> --- a/server/spicevmc.c
> +++ b/server/spicevmc.c
> @@ -92,7 +92,7 @@ static int spicevmc_red_channel_client_config_socket(RedChannelClient *rcc)
>      if (rcc->channel->type == SPICE_CHANNEL_USBREDIR) {
>          if (setsockopt(stream->socket, IPPROTO_TCP, TCP_NODELAY,
>                  &delay_val, sizeof(delay_val)) != 0) {
> -            if (errno != ENOTSUP) {
> +            if (errno != ENOTSUP && errno != ENOPROTOOPT) {
>                  red_printf("setsockopt failed, %s", strerror(errno));
>                  return FALSE;
>              }
> -- 
> 1.7.7.6
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel


More information about the Spice-devel mailing list