This code is the same inside __new_channel but will set the RedsStream from RedChannel. Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> --- server/sound.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+) diff --git a/server/sound.c b/server/sound.c index de46be5..83a87c9 100644 --- a/server/sound.c +++ b/server/sound.c @@ -999,6 +999,55 @@ error1: return NULL; } +static int snd_channel_config_socket(RedChannelClient *rcc) +{ + int delay_val; + int flags; +#ifdef SO_PRIORITY + int priority; +#endif + int tos; + RedsStream *stream = red_channel_client_get_stream(rcc); + RedClient *red_client = red_channel_client_get_client(rcc); + MainChannelClient *mcc = red_client_get_main(red_client); + + if ((flags = fcntl(stream->socket, F_GETFL)) == -1) { + spice_printerr("accept failed, %s", strerror(errno)); + return FALSE; + } + +#ifdef SO_PRIORITY + priority = 6; + if (setsockopt(stream->socket, SOL_SOCKET, SO_PRIORITY, (void*)&priority, + sizeof(priority)) == -1) { + if (errno != ENOTSUP) { + spice_printerr("setsockopt failed, %s", strerror(errno)); + } + } +#endif + + tos = IPTOS_LOWDELAY; + if (setsockopt(stream->socket, IPPROTO_IP, IP_TOS, (void*)&tos, sizeof(tos)) == -1) { + if (errno != ENOTSUP) { + spice_printerr("setsockopt failed, %s", strerror(errno)); + } + } + + delay_val = main_channel_client_is_low_bandwidth(mcc) ? 0 : 1; + if (setsockopt(stream->socket, IPPROTO_TCP, TCP_NODELAY, &delay_val, sizeof(delay_val)) == -1) { + if (errno != ENOTSUP) { + spice_printerr("setsockopt failed, %s", strerror(errno)); + } + } + + if (fcntl(stream->socket, F_SETFL, flags | O_NONBLOCK) == -1) { + spice_printerr("accept failed, %s", strerror(errno)); + return FALSE; + } + + return TRUE; +} + static void snd_disconnect_channel_client(RedChannelClient *rcc) { SndChannel *channel; @@ -1543,6 +1592,8 @@ snd_channel_init(SndChannel *self) static void snd_channel_class_init(SndChannelClass *klass) { + RedChannelClass *channel_class = RED_CHANNEL_CLASS(klass); + channel_class->config_socket = snd_channel_config_socket; } static void -- git-series 0.9.1 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel