This is an automated email from the git hooks/post-receive script. x2go pushed a change to branch master in repository libx2goclient. from 399228d src/test/sshtest.c: try to call connect () method of an X2GoClientNetworkSSH object, but fail so far. new 9e1e952 src/x2goclient-network.c: make accessor functions more resilient. new e4cc863 src/x2goclient-network.c: "copy" socket options object instead of just getting it. new f4ec9a0 src/x2goclient-network-ssh.{c,h}: implement correct X2GoClientNetworkSSH connect wrappers. new 910fc83 src/x2goclient-network-ssh.c: allow X2GoClientNetworkSSH object creation. new 4972142 src/test/sshtest.c: fix argument "parsing". new 3ca1325 src/x2goclient-network.c: fix properties. new e22af99 src/x2goclient-network-ssh.c: actually register x2goclient_network_ssh_parse_sockspec and change parameter list. new 542043d src/test/sshtest.c: utilize new properties structure. new 657b2a0 src/x2goclient-network-ssh.c: fix error handling in parse_sockspec () family. The 9 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Summary of changes: src/test/sshtest.c | 7 +++++-- src/x2goclient-network-ssh.c | 41 +++++++++++++++++++++++++++++------- src/x2goclient-network-ssh.h | 2 +- src/x2goclient-network.c | 50 +++++++++++++++++++++++++++----------------- 4 files changed, 71 insertions(+), 29 deletions(-) -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/libx2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository libx2goclient. commit 49721420f1c3480923cb996d884a083a3bded1dd Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 15 11:55:04 2019 +0200 src/test/sshtest.c: fix argument "parsing". --- src/test/sshtest.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/sshtest.c b/src/test/sshtest.c index e429fc2..86ab603 100644 --- a/src/test/sshtest.c +++ b/src/test/sshtest.c @@ -51,7 +51,7 @@ int main (int argc, char **argv) { g_printf (_("SSH testing utility for %s version %s\n\n"), _(PACKAGE_NAME), _(PACKAGE_VERSION)); GString *ssh_uri = NULL; - if (argc != 1) { + if (argc != 2) { g_fprintf (stderr, _("Error. Program needs exactly one argument: an SSH location specifier.\n")); } else { -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/libx2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository libx2goclient. commit e4cc863dd80f047da019d59d6f34c98308d4c0ca Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 15 11:36:07 2019 +0200 src/x2goclient-network.c: "copy" socket options object instead of just getting it. "Copying" actually means incrementing the refcount in this case. Likewise, we'll have to remember to clear it out, but destructors etc. are still supposed to come. --- src/x2goclient-network.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/x2goclient-network.c b/src/x2goclient-network.c index b1d3792..3af4f12 100644 --- a/src/x2goclient-network.c +++ b/src/x2goclient-network.c @@ -105,7 +105,7 @@ static void x2goclient_network_set_property (GObject *object, guint prop_id, con break; case (X2GO_NET_PROP_OPTIONS): g_free (priv->options); - priv->options = g_value_get_object (value); + priv->options = g_value_dup_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, param_spec); -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/libx2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository libx2goclient. commit 9e1e952ef09a0f662a6808f1c7d68b64e00719a5 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 15 11:33:27 2019 +0200 src/x2goclient-network.c: make accessor functions more resilient. Allows vfuncs to be pure virtual. --- src/x2goclient-network.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/x2goclient-network.c b/src/x2goclient-network.c index f88e06e..b1d3792 100644 --- a/src/x2goclient-network.c +++ b/src/x2goclient-network.c @@ -73,15 +73,21 @@ enum { static GParamSpec *net_obj_properties[X2GO_NET_N_PROPERTIES] = { NULL, }; static GSocketAddress* x2goclient_network_parse_sockspec (X2GoClientNetwork *self, const GString *sockspec) { + X2GoClientNetworkClass *class = X2GOCLIENT_NETWORK_GET_CLASS (self); + g_return_val_if_fail (X2GOCLIENT_IS_NETWORK (self), NULL); + g_return_val_if_fail (class->parse_sockspec, NULL); - return X2GOCLIENT_NETWORK_GET_CLASS (self)->parse_sockspec (self, sockspec); + return (class->parse_sockspec (self, sockspec)); } gboolean x2goclient_network_connect (X2GoClientNetwork *self) { + X2GoClientNetworkClass *class = X2GOCLIENT_NETWORK_GET_CLASS (self); + g_return_val_if_fail (X2GOCLIENT_IS_NETWORK (self), FALSE); + g_return_val_if_fail (class->connect, FALSE); - return X2GOCLIENT_NETWORK_GET_CLASS (self)->connect (self); + return (class->connect (self)); } static void x2goclient_network_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *param_spec) { -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/libx2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository libx2goclient. commit 910fc8377a6d3fecd3d448ac857d70f55b1460d0 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 15 11:51:44 2019 +0200 src/x2goclient-network-ssh.c: allow X2GoClientNetworkSSH object creation. --- src/x2goclient-network-ssh.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/x2goclient-network-ssh.c b/src/x2goclient-network-ssh.c index 6b52b89..2d6e1e1 100644 --- a/src/x2goclient-network-ssh.c +++ b/src/x2goclient-network-ssh.c @@ -528,3 +528,7 @@ static void x2goclient_network_ssh_class_init (X2GoClientNetworkSSHClass *klass) static void x2goclient_network_ssh_init (X2GoClientNetworkSSH *self) { } + +X2GoClientNetworkSSH* x2goclient_network_ssh_new (void) { + return (g_object_new (X2GOCLIENT_TYPE_NETWORK_SSH, NULL)); +} -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/libx2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository libx2goclient. commit f4ec9a0bf7028eb5bb2b485ab71596ac6f55108b Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 15 11:46:22 2019 +0200 src/x2goclient-network-ssh.{c,h}: implement correct X2GoClientNetworkSSH connect wrappers. --- src/x2goclient-network-ssh.c | 18 ++++++++++++++++-- src/x2goclient-network-ssh.h | 2 +- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/x2goclient-network-ssh.c b/src/x2goclient-network-ssh.c index a68263b..6b52b89 100644 --- a/src/x2goclient-network-ssh.c +++ b/src/x2goclient-network-ssh.c @@ -497,19 +497,33 @@ static GSocketAddress* x2goclient_network_ssh_parse_sockspec (X2GoClientNetworkS return ret; } -gboolean x2goclient_network_ssh_connect (X2GoClientNetwork *parent) { +gboolean x2goclient_network_ssh_connect (X2GoClientNetworkSSH *self) { + gboolean ret = FALSE; + + g_return_val_if_fail (X2GOCLIENT_IS_NETWORK_SSH (self), ret); + X2GoClientNetwork *parent = X2GOCLIENT_NETWORK (self); + X2GoClientNetworkClass *parent_class = X2GOCLIENT_NETWORK_GET_CLASS (parent); + + ret = parent_class->connect (parent); + + return (ret); +} + +static gboolean x2goclient_network_ssh_parent_connect (X2GoClientNetwork *parent) { gboolean ret = FALSE; g_return_val_if_fail (X2GOCLIENT_IS_NETWORK_SSH (parent), ret); X2GoClientNetworkSSH *self = X2GOCLIENT_NETWORK_SSH (parent); + /* Actual implementation here. */ + return (ret); } static void x2goclient_network_ssh_class_init (X2GoClientNetworkSSHClass *klass) { X2GoClientNetworkClass *parent_class = X2GOCLIENT_NETWORK_CLASS (klass); - parent_class->connect = &x2goclient_network_ssh_connect; + parent_class->connect = &x2goclient_network_ssh_parent_connect; } static void x2goclient_network_ssh_init (X2GoClientNetworkSSH *self) { diff --git a/src/x2goclient-network-ssh.h b/src/x2goclient-network-ssh.h index 2dedd31..fee6793 100644 --- a/src/x2goclient-network-ssh.h +++ b/src/x2goclient-network-ssh.h @@ -41,7 +41,7 @@ G_DECLARE_FINAL_TYPE (X2GoClientNetworkSSH, x2goclient_network_ssh, X2GOCLIENT, X2GoClientNetworkSSH* x2goclient_network_ssh_new (void); -gboolean x2goclient_network_ssh_connect (X2GoClientNetwork *parent); +gboolean x2goclient_network_ssh_connect (X2GoClientNetworkSSH *self); G_END_DECLS -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/libx2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository libx2goclient. commit 542043d1084e9c85028f6296667e60e2bc1d5739 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 15 17:38:59 2019 +0200 src/test/sshtest.c: utilize new properties structure. --- src/test/sshtest.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/test/sshtest.c b/src/test/sshtest.c index 86ab603..571c379 100644 --- a/src/test/sshtest.c +++ b/src/test/sshtest.c @@ -59,7 +59,10 @@ int main (int argc, char **argv) { } X2GoClientNetworkSSH *net_ssh = x2goclient_network_ssh_new (); - g_object_set (G_OBJECT (net_ssh), "socket", ssh_uri, NULL); + g_object_set (G_OBJECT (net_ssh), "socket-spec", ssh_uri, NULL); + GSocketAddress *sock_addr = NULL; + g_object_get (G_OBJECT (net_ssh), "socket", &sock_addr, NULL); + g_printf ("sock_addr: %p\n", sock_addr); g_printf ("Trying to connect...\n"); gboolean conn_ret = x2goclient_network_ssh_connect (net_ssh); -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/libx2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository libx2goclient. commit e22af99711e719e465f49394fb3b32c00557af5a Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 15 17:33:25 2019 +0200 src/x2goclient-network-ssh.c: actually register x2goclient_network_ssh_parse_sockspec and change parameter list. --- src/x2goclient-network-ssh.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/x2goclient-network-ssh.c b/src/x2goclient-network-ssh.c index 2d6e1e1..d39cdd6 100644 --- a/src/x2goclient-network-ssh.c +++ b/src/x2goclient-network-ssh.c @@ -438,7 +438,7 @@ static GSocketAddress* x2goclient_network_ssh_parse_sockspec_alias (const GStrin return (ret); } -static GSocketAddress* x2goclient_network_ssh_parse_sockspec (X2GoClientNetworkSSH *self, const GString *sockspec) { +static GSocketAddress* x2goclient_network_ssh_parse_sockspec (X2GoClientNetwork *parent, const GString *sockspec) { GSocketAddress *ret = NULL; if (sockspec) { @@ -524,6 +524,8 @@ static void x2goclient_network_ssh_class_init (X2GoClientNetworkSSHClass *klass) X2GoClientNetworkClass *parent_class = X2GOCLIENT_NETWORK_CLASS (klass); parent_class->connect = &x2goclient_network_ssh_parent_connect; + + parent_class->parse_sockspec = &x2goclient_network_ssh_parse_sockspec; } static void x2goclient_network_ssh_init (X2GoClientNetworkSSH *self) { -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/libx2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository libx2goclient. commit 3ca13250c4f2dc6f7fa36f54e2b2759568a9dcd3 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 15 17:32:16 2019 +0200 src/x2goclient-network.c: fix properties. We now have both a socket property, typed GSocketAddress, that is read-only and contains the actual "parsed" result, and a socket-spec property, typed GString, that is write-only and will be used for parsing the actual specification. --- src/x2goclient-network.c | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/src/x2goclient-network.c b/src/x2goclient-network.c index 3af4f12..2461bee 100644 --- a/src/x2goclient-network.c +++ b/src/x2goclient-network.c @@ -50,6 +50,7 @@ static void x2goclient_network_options_init (X2GoClientNetworkOptions *self) { typedef struct X2GoClientNetworkPrivate_ { + GString *socket_spec; GSocketAddress *socket; X2GoClientNetworkOptions *options; } X2GoClientNetworkPrivate; @@ -65,7 +66,8 @@ G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (X2GoClientNetwork, x2goclient_network, G_TY * is actually exported, we can go bonkers with abbreviations. */ enum { - X2GO_NET_PROP_SOCKET = 1, + X2GO_NET_PROP_SOCKET_SPEC = 1, + X2GO_NET_PROP_SOCKET, X2GO_NET_PROP_OPTIONS, X2GO_NET_N_PROPERTIES }; @@ -95,16 +97,14 @@ static void x2goclient_network_set_property (GObject *object, guint prop_id, con X2GoClientNetworkPrivate *priv = x2goclient_network_get_instance_private (self); switch (prop_id) { - case (X2GO_NET_PROP_SOCKET): - g_free (priv->socket); - /* - * We'll actually expect a GString here, not a GSocketAddress. - * How do we document that correctly, though? - */ - priv->socket = x2goclient_network_parse_sockspec (self, g_value_get_object (value)); - break; + case (X2GO_NET_PROP_SOCKET_SPEC): + g_free (priv->socket_spec); + g_clear_object (&(priv->socket)); + priv->socket_spec = g_value_dup_boxed (value); + priv->socket = x2goclient_network_parse_sockspec (self, priv->socket_spec); + break; case (X2GO_NET_PROP_OPTIONS): - g_free (priv->options); + g_clear_object (&(priv->options)); priv->options = g_value_dup_object (value); break; default: @@ -136,14 +136,20 @@ static void x2goclient_network_class_init (X2GoClientNetworkClass *klass) { object_class->set_property = x2goclient_network_set_property; object_class->get_property = x2goclient_network_get_property; - net_obj_properties[X2GO_NET_PROP_SOCKET] = g_param_spec_object ("socket", "Low-level socket", - "Low-level socket for the network connection, the local " - "part will be used for local binding if specified.", + net_obj_properties[X2GO_NET_PROP_SOCKET_SPEC] = g_param_spec_boxed ("socket-spec", _("Low-level socket string specification"), + _("String specification for the low-level socket network " + "connection. Updates the \"socket\" property."), + G_TYPE_GSTRING, + G_PARAM_WRITABLE); + + net_obj_properties[X2GO_NET_PROP_SOCKET] = g_param_spec_object ("socket", _("Low-level socket"), + _("Low-level socket for the network connection, the local " + "part will be used for local binding if specified."), G_TYPE_SOCKET_ADDRESS, - G_PARAM_READWRITE); + G_PARAM_READABLE); - net_obj_properties[X2GO_NET_PROP_OPTIONS] = g_param_spec_object ("options", "Socket options", - "Specific socket options.", + net_obj_properties[X2GO_NET_PROP_OPTIONS] = g_param_spec_object ("options", _("Socket options"), + _("Specific socket options."), X2GOCLIENT_TYPE_NETWORK_OPTIONS, G_PARAM_READWRITE); -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/libx2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository libx2goclient. commit 657b2a0177b3edef8b127f0c371f884f3b612128 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 15 17:39:38 2019 +0200 src/x2goclient-network-ssh.c: fix error handling in parse_sockspec () family. --- src/x2goclient-network-ssh.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/x2goclient-network-ssh.c b/src/x2goclient-network-ssh.c index d39cdd6..7c9939c 100644 --- a/src/x2goclient-network-ssh.c +++ b/src/x2goclient-network-ssh.c @@ -206,6 +206,7 @@ static GSocketAddress* x2goclient_network_ssh_parse_sockspec_ip (const GString * *tmp_end = NULL; GString *address = NULL; guint16 port = 0; + gboolean int_err = FALSE; if (want_v6) { /* @@ -241,6 +242,7 @@ static GSocketAddress* x2goclient_network_ssh_parse_sockspec_ip (const GString * } else { g_set_error_literal (err, X2GOCLIENT_NETWORK_SSH_ERROR, X2GOCLIENT_NETWORK_SSH_ERROR_IPV6_CONV, "Found starting bracket, but no matching ending bracket."); + int_err = TRUE; } } else { @@ -265,7 +267,7 @@ static GSocketAddress* x2goclient_network_ssh_parse_sockspec_ip (const GString * } } - if (!err) { + if (!(int_err)) { gboolean is_v6 = FALSE, is_v4 = FALSE; char binary_rep[128] = { 0 }; @@ -332,9 +334,11 @@ static GSocketAddress* x2goclient_network_ssh_parse_sockspec_ip (const GString * if (tmp_err) { if (want_v6) { g_set_error (err, X2GOCLIENT_NETWORK_SSH_ERROR, X2GOCLIENT_NETWORK_SSH_ERROR_IPV6_CONV, "Unable to parse IPv6 address: %s", tmp_err->message); + int_err = TRUE; } else { g_set_error (err, X2GOCLIENT_NETWORK_SSH_ERROR, X2GOCLIENT_NETWORK_SSH_ERROR_IPV4_CONV, "Unable to parse IPv4 address: %s", tmp_err->message); + int_err = TRUE; } g_clear_error (&tmp_err); } @@ -342,7 +346,7 @@ static GSocketAddress* x2goclient_network_ssh_parse_sockspec_ip (const GString * } } - if (!err) { + if (!(int_err)) { /* * Parsed everything successfully so far, so create IP socket address * object. @@ -371,6 +375,7 @@ static GSocketAddress* x2goclient_network_ssh_parse_sockspec_alias (const GStrin *tmp_end = NULL; GString *address = NULL; guint16 port = 0; + gboolean int_err = FALSE; /* * For FQDN or alias addresses (like for IPv4 addresses), we'll accept any @@ -396,9 +401,10 @@ static GSocketAddress* x2goclient_network_ssh_parse_sockspec_alias (const GStrin const gsize max_len = (sizeof (((struct sockaddr_ho*)(NULL))->sho_addr) - 1); if (max_len < address->len) { g_set_error (err, X2GOCLIENT_NETWORK_SSH_ERROR, X2GOCLIENT_NETWORK_SSH_ERROR_ALIAS_CONV, "Unable to parse FQDN or alias pseudo-address: name too long, expected at most %" G_GSIZE_FORMAT " bytes, got %" G_GSIZE_FORMAT " bytes.", max_len, address->len); + int_err = TRUE; } - if (!err) { + if (!(int_err)) { if (tmp_end) { /* * No encapsulation whatsoever, so the colon must be at the next @@ -414,11 +420,12 @@ static GSocketAddress* x2goclient_network_ssh_parse_sockspec_alias (const GStrin if (tmp_err) { g_set_error (err, X2GOCLIENT_NETWORK_SSH_ERROR, X2GOCLIENT_NETWORK_SSH_ERROR_ALIAS_CONV, "Unable to parse FQDN or alias pseudo-address: %s", tmp_err->message); g_clear_error (&tmp_err); + int_err = TRUE; } } } - if (!err) { + if (!(int_err)) { /* * Parsed everything successfully so far, so create native socket address * object. -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/libx2goclient.git