[Spice-devel] [PATCH spice-gtk 3/4] uri: generate spice://host:port or spice+tls://host:port
marcandre.lureau at redhat.com
marcandre.lureau at redhat.com
Thu Feb 8 12:21:27 UTC 2018
From: Marc-André Lureau <marcandre.lureau at redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau at redhat.com>
---
src/spice-session.c | 31 +++++++++++++++++++++++--------
tests/session.c | 20 ++++++++++----------
2 files changed, 33 insertions(+), 18 deletions(-)
diff --git a/src/spice-session.c b/src/spice-session.c
index 7218449..b2517e6 100644
--- a/src/spice-session.c
+++ b/src/spice-session.c
@@ -400,17 +400,32 @@ static gchar* spice_uri_create(SpiceSession *session)
if (s->unix_path != NULL) {
return g_strdup_printf(URI_SCHEME_SPICE_UNIX "%s", s->unix_path);
} else if (s->host != NULL) {
+ GString *str;
g_return_val_if_fail(s->port != NULL || s->tls_port != NULL, NULL);
- GString *str = g_string_new(URI_SCHEME_SPICE);
+ if (!!s->tls_port + !!s->port == 1) {
+ /* use spice://foo:4390 or spice+tls://.. form */
+ const char *port;
- g_string_append(str, s->host);
- g_string_append(str, "?");
- if (s->port != NULL) {
- g_string_append_printf(str, "port=%s&", s->port);
- }
- if (s->tls_port != NULL) {
- g_string_append_printf(str, "tls-port=%s", s->tls_port);
+ if (s->tls_port) {
+ str = g_string_new(URI_SCHEME_SPICE_TLS);
+ port = s->tls_port;
+ } else {
+ str = g_string_new(URI_SCHEME_SPICE);
+ port = s->port;
+ }
+ g_string_append_printf(str, "%s:%s", s->host, port);
+ } else {
+ /* use spice://foo?port=4390&tls-port= form */
+ str = g_string_new(URI_SCHEME_SPICE);
+ g_string_append(str, s->host);
+ g_string_append(str, "?");
+ if (s->port != NULL) {
+ g_string_append_printf(str, "port=%s&", s->port);
+ }
+ if (s->tls_port != NULL) {
+ g_string_append_printf(str, "tls-port=%s", s->tls_port);
+ }
}
return g_string_free(str, FALSE);
}
diff --git a/tests/session.c b/tests/session.c
index 413d812..fc874fc 100644
--- a/tests/session.c
+++ b/tests/session.c
@@ -201,28 +201,28 @@ static void test_session_uri_ipv4_good(void)
"localhost",
NULL, NULL,
"spice://localhost?port=5900&tls-port=",
- "spice://localhost?port=5900&" },
+ "spice://localhost:5900" },
{ "5910", NULL,
"localhost",
"user", NULL,
"spice://user@localhost?tls-port=&port=5910",
- "spice://localhost?port=5910&" },
+ "spice://localhost:5910" },
{ NULL, "5920",
"localhost",
"user", "password",
"spice://user@localhost?tls-port=5920&port=&password=password",
- "spice://localhost?tls-port=5920",
+ "spice+tls://localhost:5920",
"password may be visible in process listings"},
{ NULL, "5930",
"localhost",
NULL, NULL,
"spice://localhost?port=&tls-port=5930",
- "spice://localhost?tls-port=5930" },
+ "spice+tls://localhost:5930" },
{ "42", NULL,
"localhost",
NULL, NULL,
"spice://localhost:42",
- "spice://localhost?port=42&" },
+ "spice://localhost:42" },
{ "42", "5930",
"localhost",
NULL, NULL,
@@ -246,28 +246,28 @@ static void test_session_uri_ipv6_good(void)
"[2010:836B:4179::836B:4179]",
NULL, NULL,
"spice://[2010:836B:4179::836B:4179]?port=5900&tls-port=",
- "spice://[2010:836B:4179::836B:4179]?port=5900&" },
+ "spice://[2010:836B:4179::836B:4179]:5900" },
{ "5910", NULL,
"[::192.9.5.5]",
"user", NULL,
"spice://user@[::192.9.5.5]?tls-port=&port=5910",
- "spice://[::192.9.5.5]?port=5910&" },
+ "spice://[::192.9.5.5]:5910" },
{ NULL, "5920",
"[3ffe:2a00:100:7031::1]",
"user", "password",
"spice://user@[3ffe:2a00:100:7031::1]?tls-port=5920&port=&password=password",
- "spice://[3ffe:2a00:100:7031::1]?tls-port=5920",
+ "spice+tls://[3ffe:2a00:100:7031::1]:5920",
"password may be visible in process listings"},
{ NULL, "5930",
"[1080:0:0:0:8:800:200C:417A]",
NULL, NULL,
"spice://[1080:0:0:0:8:800:200C:417A]?port=&tls-port=5930",
- "spice://[1080:0:0:0:8:800:200C:417A]?tls-port=5930" },
+ "spice+tls://[1080:0:0:0:8:800:200C:417A]:5930" },
{ "42", NULL,
"[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]",
NULL, NULL,
"spice://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:42",
- "spice://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]?port=42&" },
+ "spice://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:42" },
{ "42", "5930",
"[::192.9.5.5]",
NULL, NULL,
--
2.16.1.73.g5832b7e9f2
More information about the Spice-devel
mailing list