From: Jonathon Jongsma <jjongsma@xxxxxxxxxx> Move them into the RedsState struct, adjust functions that use these variables to take a RedsState arg. --- server/reds-private.h | 4 ++++ server/reds.c | 27 ++++++++++++--------------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/server/reds-private.h b/server/reds-private.h index 427ce8e..285f226 100644 --- a/server/reds-private.h +++ b/server/reds-private.h @@ -135,6 +135,8 @@ typedef struct RedsClientMonitorsConfig { int buffer_pos; } RedsClientMonitorsConfig; +typedef struct ChannelSecurityOptions ChannelSecurityOptions; + struct RedsState { int listen_socket; int secure_listen_socket; @@ -191,6 +193,8 @@ struct RedsState { int mm_time_enabled; uint32_t mm_time_latency; + int default_channel_security; + ChannelSecurityOptions *channels_security; const char *default_renderer; int spice_port; diff --git a/server/reds.c b/server/reds.c index 30b2736..feae0cc 100644 --- a/server/reds.c +++ b/server/reds.c @@ -193,7 +193,6 @@ typedef struct RedSSLParameters { char ciphersuite[256]; } RedSSLParameters; -typedef struct ChannelSecurityOptions ChannelSecurityOptions; struct ChannelSecurityOptions { uint32_t channel_id; uint32_t options; @@ -213,15 +212,11 @@ static VDIReadBuf *vdi_port_read_buf_get(RedsState *reds); static VDIReadBuf *vdi_port_read_buf_ref(VDIReadBuf *buf); static void vdi_port_read_buf_unref(RedsState *reds, VDIReadBuf *buf); -static ChannelSecurityOptions *channels_security = NULL; -static int default_channel_security = - SPICE_CHANNEL_SECURITY_NONE | SPICE_CHANNEL_SECURITY_SSL; - static RedSSLParameters ssl_parameters; -static ChannelSecurityOptions *find_channel_security(int id) +static ChannelSecurityOptions *reds_find_channel_security(RedsState *reds, int id) { - ChannelSecurityOptions *now = channels_security; + ChannelSecurityOptions *now = reds->channels_security; while (now && now->channel_id != id) { now = now->next; } @@ -2148,8 +2143,8 @@ static void reds_handle_auth_mechanism(void *opaque) static int reds_security_check(RedLinkInfo *link) { - ChannelSecurityOptions *security_option = find_channel_security(link->link_mess->channel_type); - uint32_t security = security_option ? security_option->options : default_channel_security; + ChannelSecurityOptions *security_option = reds_find_channel_security(reds, link->link_mess->channel_type); + uint32_t security = security_option ? security_option->options : reds->default_channel_security; return (reds_stream_is_ssl(link->stream) && (security & SPICE_CHANNEL_SECURITY_SSL)) || (!reds_stream_is_ssl(link->stream) && (security & SPICE_CHANNEL_SECURITY_NONE)); } @@ -2801,19 +2796,19 @@ static void set_image_compression(SpiceImageCompression val) red_dispatcher_on_ic_change(); } -static void set_one_channel_security(int id, uint32_t security) +static void reds_set_one_channel_security(RedsState *reds, int id, uint32_t security) { ChannelSecurityOptions *security_options; - if ((security_options = find_channel_security(id))) { + if ((security_options = reds_find_channel_security(reds, id))) { security_options->options = security; return; } security_options = spice_new(ChannelSecurityOptions, 1); security_options->channel_id = id; security_options->options = security; - security_options->next = channels_security; - channels_security = security_options; + security_options->next = reds->channels_security; + reds->channels_security = security_options; } #define REDS_SAVE_VERSION 1 @@ -3442,6 +3437,8 @@ SPICE_GNUC_VISIBLE SpiceServer *spice_server_new(void) spice_assert(reds == NULL); reds = spice_new0(RedsState, 1); + reds->default_channel_security = + SPICE_CHANNEL_SECURITY_NONE | SPICE_CHANNEL_SECURITY_SSL; reds->default_renderer = "sw"; reds->spice_port = -1; reds->spice_secure_port = -1; @@ -3743,12 +3740,12 @@ SPICE_GNUC_VISIBLE int spice_server_set_channel_security(SpiceServer *s, const c spice_assert(reds == s); if (channel == NULL) { - default_channel_security = security; + s->default_channel_security = security; return 0; } for (i = 0; i < SPICE_N_ELEMENTS(names); i++) { if (names[i] && strcmp(names[i], channel) == 0) { - set_one_channel_security(i, security); + reds_set_one_channel_security(s, i, security); return 0; } } -- 2.4.3 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel