summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2009-05-14 17:13:46 (GMT)
committerAlexander Larsson <alexl@redhat.com>2009-05-14 17:13:46 (GMT)
commit55a68c1a0b3dfb98bac951a98ed3087c7fe6fe5b (patch)
tree16bc7fcd37e2a29e190bc2ce5c7936f56f7e8171
parentdc6383ca0b55cdc0b9bcac056cd8a6608bb02c38 (diff)
downloadgnio-55a68c1a0b3dfb98bac951a98ed3087c7fe6fe5b.tar.gz
gnio-55a68c1a0b3dfb98bac951a98ed3087c7fe6fe5b.tar.xz
Use the GNetworkAddress parsing function
g_network_address_new_from_string moved to glib as g_network_address_parse.
-rw-r--r--gio/gsocketclient.c144
1 files changed, 3 insertions, 141 deletions
diff --git a/gio/gsocketclient.c b/gio/gsocketclient.c
index 40bf524..b121b4c 100644
--- a/gio/gsocketclient.c
+++ b/gio/gsocketclient.c
@@ -284,144 +284,6 @@ g_socket_client_connect (GSocketClient *client,
return connection;
}
-static GSocketConnectable *
-g_network_address_new_from_string (const char *host_and_port,
- int default_port,
- GError **error)
-{
- GSocketConnectable *connectable;
- const gchar *port;
- guint16 portnum;
- gchar *name;
-
- g_return_val_if_fail (host_and_port != NULL, NULL);
-
- port = NULL;
- if (host_and_port[0] == '[')
- /* escaped host part (to allow, eg. "[2001:db8::1]:888") */
- {
- const gchar *end;
-
- end = strchr (host_and_port, ']');
-
- if (end == NULL)
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- _("Hostname '%s' contains '[' but not ']'"), host_and_port);
- return NULL;
- }
-
- if (end[1] == '\0')
- port = NULL;
- else if (end[1] == ':')
- port = &end[2];
- else
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "The ']' character (in hostname '%s') must come at the"
- " end or be immediately followed by ':' and a port",
- host_and_port);
- return NULL;
- }
-
- name = g_strndup (host_and_port + 1, end - host_and_port - 1);
- }
-
- else if ((port = strchr (host_and_port, ':')))
- /* string has a ':' in it */
- {
- /* skip ':' */
- port++;
-
- if (strchr (port, ':'))
- /* more than one ':' in string */
- {
- /* this is actually an unescaped IPv6 address */
- name = g_strdup (host_and_port);
- port = NULL;
- }
- else
- name = g_strndup (host_and_port, port - host_and_port - 1);
- }
-
- else
- /* plain hostname, no port */
- name = g_strdup (host_and_port);
-
- if (port != NULL)
- {
- if (port[0] == '\0')
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "If a ':' character is given, it must be followed by a "
- "port (in hostname '%s').", host_and_port);
- g_free (name);
- return NULL;
- }
-
- else if ('0' <= port[0] && port[0] <= '9')
- {
- char *end;
- long value;
-
- value = strtol (port, &end, 10);
- if (*end != '\0' || value <= 0 || value > G_MAXUINT16)
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "Invalid numeric port '%s' specified in hostname '%s'",
- port, host_and_port);
- g_free (name);
- return NULL;
- }
-
- portnum = value;
- }
-
- else
- {
- struct servent *entry;
-
- entry = getservbyname (port, "tcp");
- if (entry == NULL)
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "Unknown service '%s' specified in hostname '%s'",
- port, host_and_port);
-#ifdef HAVE_ENDSERVENT
- endservent ();
-#endif
- g_free (name);
- return NULL;
- }
-
- portnum = g_ntohs (entry->s_port);
-
-#ifdef HAVE_ENDSERVENT
- endservent ();
-#endif
- }
- }
- else
- {
- /* No port in host_and_port */
-
- if (default_port <= 0 || default_port > G_MAXUINT16)
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "Invalid numeric default port '%d' specified",
- default_port);
- g_free (name);
- return NULL;
- }
- portnum = default_port;
- }
-
- connectable = g_network_address_new (name, portnum);
- g_free (name);
-
- return connectable;
-}
-
/**
* g_socket_client_connect_to_host:
* @client: a #GTcpClient
@@ -472,7 +334,7 @@ g_socket_client_connect_to_host (GSocketClient *client,
GSocketConnectable *connectable;
GSocketConnection *connection;
- connectable = g_network_address_new_from_string (host_and_port, default_port, error);
+ connectable = g_network_address_parse (host_and_port, default_port, error);
if (connectable == NULL)
return NULL;
@@ -704,8 +566,8 @@ g_socket_client_connect_to_host_async (GSocketClient *client,
GError *error;
error = NULL;
- connectable = g_network_address_new_from_string (host_and_port, default_port,
- &error);
+ connectable = g_network_address_parse (host_and_port, default_port,
+ &error);
if (connectable == NULL)
{
g_simple_async_report_gerror_in_idle (G_OBJECT (client),