[Spice-devel] [PATCH migration 08/19] server: move the linking of channels to a separate routine
Alon Levy
alevy at redhat.com
Tue Nov 1 02:22:01 PDT 2011
On Wed, Oct 12, 2011 at 12:38:58PM +0200, Yonit Halperin wrote:
>
ACK
> Signed-off-by: Yonit Halperin <yhalperi at redhat.com>
> ---
> server/reds.c | 45 ++++++++++++++++++++++++++++-----------------
> 1 files changed, 28 insertions(+), 17 deletions(-)
>
> diff --git a/server/reds.c b/server/reds.c
> index 20032a9..2deed4c 100644
> --- a/server/reds.c
> +++ b/server/reds.c
> @@ -1596,13 +1596,36 @@ static void openssl_init(RedLinkInfo *link)
> BN_set_word(link->tiTicketing.bn, f4);
> }
>
> +static void reds_channel_do_link(RedChannel *channel, RedClient *client,
> + SpiceLinkMess *link_msg,
> + RedsStream *stream)
> +{
> + uint32_t *caps;
> +
> + ASSERT(channel);
> + ASSERT(link_msg);
> + ASSERT(stream);
> +
> + if (link_msg->channel_type == SPICE_CHANNEL_INPUTS && !stream->ssl) {
> + char *mess = "keyboard channel is insecure";
> + const int mess_len = strlen(mess);
> + main_channel_push_notify(reds->main_channel, (uint8_t*)mess, mess_len);
> + }
> +
> + caps = (uint32_t *)((uint8_t *)link_msg + link_msg->caps_offset);
> + channel->client_cbs.connect(channel, client, stream, reds->mig_target,
> + link_msg->num_common_caps,
> + link_msg->num_common_caps ? caps : NULL,
> + link_msg->num_channel_caps,
> + link_msg->num_channel_caps ?
> + caps + link_msg->num_common_caps : NULL);
> +}
> +
> static void reds_handle_other_links(RedLinkInfo *link)
> {
> RedChannel *channel;
> RedClient *client = NULL;
> - RedsStream *stream;
> SpiceLinkMess *link_mess;
> - uint32_t *caps;
>
> link_mess = link->link_mess;
> if (reds->main_channel) {
> @@ -1629,24 +1652,12 @@ static void reds_handle_other_links(RedLinkInfo *link)
>
> reds_send_link_result(link, SPICE_LINK_ERR_OK);
> reds_show_new_channel(link, link_mess->connection_id);
> - if (link_mess->channel_type == SPICE_CHANNEL_INPUTS && !link->stream->ssl) {
> - char *mess = "keyboard channel is insecure";
> - const int mess_len = strlen(mess);
> - main_channel_push_notify(reds->main_channel, (uint8_t*)mess, mess_len);
> - }
> - stream = link->stream;
> - reds_stream_remove_watch(stream);
> + reds_stream_remove_watch(link->stream);
> + reds_channel_do_link(channel, client, link_mess, link->stream);
> + free(link_mess);
> link->stream = NULL;
> link->link_mess = NULL;
> reds_link_free(link);
> - caps = (uint32_t *)((uint8_t *)link_mess + link_mess->caps_offset);
> - channel->client_cbs.connect(channel, client, stream, reds->mig_target,
> - link_mess->num_common_caps,
> - link_mess->num_common_caps ? caps : NULL,
> - link_mess->num_channel_caps,
> - link_mess->num_channel_caps ?
> - caps + link_mess->num_common_caps : NULL);
> - free(link_mess);
> }
>
> static void reds_handle_link(RedLinkInfo *link)
> --
> 1.7.6.4
>
More information about the Spice-devel
mailing list