[Spice-devel] [v3: PATCH 1/3] Add "username" property to SpiceSession

Christophe Fergeau cfergeau at redhat.com
Wed Oct 8 06:08:58 PDT 2014


On Wed, Oct 08, 2014 at 01:23:06PM +0200, Fabiano Fidêncio wrote:
> From: Dietmar Maurer <dietmar at proxmox.com>
> 
> ---
> No changes since v2
> ---
>  gtk/spice-session-priv.h |  2 ++
>  gtk/spice-session.c      | 63 +++++++++++++++++++++++++++++++++++++++++++++---
>  2 files changed, 61 insertions(+), 4 deletions(-)
> 
> diff --git a/gtk/spice-session-priv.h b/gtk/spice-session-priv.h
> index 4b2c151..da43866 100644
> --- a/gtk/spice-session-priv.h
> +++ b/gtk/spice-session-priv.h
> @@ -45,6 +45,7 @@ struct _SpiceSessionPrivate {
>      char              *host;
>      char              *port;
>      char              *tls_port;
> +    char              *username;
>      char              *password;
>      char              *ca_file;
>      char              *ciphers;
> @@ -146,6 +147,7 @@ void spice_session_set_migration_state(SpiceSession *session, SpiceSessionMigrat
>  void spice_session_set_port(SpiceSession *session, int port, gboolean tls);
>  void spice_session_get_pubkey(SpiceSession *session, guint8 **pubkey, guint *size);
>  guint spice_session_get_verify(SpiceSession *session);
> +const gchar* spice_session_get_username(SpiceSession *session);
>  const gchar* spice_session_get_password(SpiceSession *session);
>  const gchar* spice_session_get_host(SpiceSession *session);
>  const gchar* spice_session_get_cert_subject(SpiceSession *session);
> diff --git a/gtk/spice-session.c b/gtk/spice-session.c
> index 49afc97..17c18f9 100644
> --- a/gtk/spice-session.c
> +++ b/gtk/spice-session.c
> @@ -111,7 +111,8 @@ enum {
>      PROP_CA,
>      PROP_PROXY,
>      PROP_SECURE_CHANNELS,
> -    PROP_SHARED_DIR
> +    PROP_SHARED_DIR,
> +    PROP_USERNAME
>  };
>  
>  /* signals */
> @@ -217,6 +218,7 @@ spice_session_finalize(GObject *gobject)
>      g_free(s->host);
>      g_free(s->port);
>      g_free(s->tls_port);
> +    g_free(s->username);
>      g_free(s->password);
>      g_free(s->ca_file);
>      g_free(s->ciphers);
> @@ -262,11 +264,12 @@ static int spice_uri_create(SpiceSession *session, char *dest, int len)
>  static int spice_parse_uri(SpiceSession *session, const char *original_uri)
>  {
>      SpiceSessionPrivate *s = session->priv;
> -    gchar *host = NULL, *port = NULL, *tls_port = NULL, *uri = NULL, *password = NULL;
> +    gchar *host = NULL, *port = NULL, *tls_port = NULL, *uri = NULL, *username = NULL, *password = NULL;
>      gchar *path = NULL;
>      gchar *unescaped_path = NULL;
>      gchar *authority = NULL;
>      gchar *query = NULL;
> +    gchar *tmp = NULL;
>  
>      g_return_val_if_fail(original_uri != NULL, -1);
>  
> @@ -281,6 +284,22 @@ static int spice_parse_uri(SpiceSession *session, const char *original_uri)
>          goto fail;
>      }
>      authority = uri + strlen(URI_SCHEME_SPICE);
> +
> +    tmp = strchr(authority, '@');
> +    if (tmp) {
> +        gchar *buffer = g_strndup(authority, tmp - authority);
> +        if (strstr(buffer, "%40") == NULL) {

You don't need to explicitly test for %40 here, just do something
similar to what is done for 'authority'

tmp = strchr(authority, '@');
if (tmp) {
    *tmp == '\0';
    username = g_uri_unescape_string(authority, NULL);
    authority = ++tmp;
    tmp = NULL;
}

Christophe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20141008/e1c9db6d/attachment.sig>


More information about the Spice-devel mailing list