[gnome-control-center] printers: Don't request port during creation of PpHost
- From: Marek Kašík <mkasik src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] printers: Don't request port during creation of PpHost
- Date: Thu, 31 Jul 2014 09:46:17 +0000 (UTC)
commit a15c2f831ab6bdd405c2ab90d07c3b4da49b79f4
Author: Marek Kasik <mkasik redhat com>
Date: Thu Jul 17 15:25:01 2014 +0200
printers: Don't request port during creation of PpHost
This allows us to distinguish between situations when the port
was specified and when it was not.
https://bugzilla.gnome.org/show_bug.cgi?id=695564
panels/printers/pp-host.c | 19 ++++++++++++-------
panels/printers/pp-host.h | 6 ++++--
panels/printers/pp-new-printer-dialog.c | 23 +++++++++++++----------
3 files changed, 29 insertions(+), 19 deletions(-)
---
diff --git a/panels/printers/pp-host.c b/panels/printers/pp-host.c
index 05f1184..d6ed143 100644
--- a/panels/printers/pp-host.c
+++ b/panels/printers/pp-host.c
@@ -119,7 +119,7 @@ pp_host_class_init (PpHostClass *klass)
g_param_spec_int ("port",
"Port",
"The port",
- 0, G_MAXINT32, 631,
+ -1, G_MAXINT32, PP_HOST_UNSET_PORT,
G_PARAM_READWRITE));
}
@@ -129,15 +129,14 @@ pp_host_init (PpHost *host)
host->priv = G_TYPE_INSTANCE_GET_PRIVATE (host,
PP_TYPE_HOST,
PpHostPrivate);
+ host->priv->port = PP_HOST_UNSET_PORT;
}
PpHost *
-pp_host_new (const gchar *hostname,
- gint port)
+pp_host_new (const gchar *hostname)
{
return g_object_new (PP_TYPE_HOST,
"hostname", hostname,
- "port", port,
NULL);
}
@@ -380,14 +379,20 @@ _pp_host_get_remote_cups_devices_thread (GSimpleAsyncResult *res,
PpPrintDevice *device;
http_t *http;
gint num_of_devices = 0;
+ gint port;
gint i;
data = g_simple_async_result_get_op_res_gpointer (res);
data->devices = g_new0 (PpDevicesList, 1);
data->devices->devices = NULL;
+ if (priv->port == PP_HOST_UNSET_PORT)
+ port = PP_HOST_DEFAULT_IPP_PORT;
+ else
+ port = priv->port;
+
/* Connect to remote CUPS server and get its devices */
- http = httpConnect (priv->hostname, priv->port);
+ http = httpConnect (priv->hostname, port);
if (http)
{
num_of_devices = cupsGetDests2 (http, &dests);
@@ -399,14 +404,14 @@ _pp_host_get_remote_cups_devices_thread (GSimpleAsyncResult *res,
device->device_class = g_strdup ("network");
device->device_uri = g_strdup_printf ("ipp://%s:%d/printers/%s",
priv->hostname,
- priv->port,
+ port,
dests[i].name);
device->device_name = g_strdup (dests[i].name);
device->device_location = g_strdup (cupsGetOption ("printer-location",
dests[i].num_options,
dests[i].options));
device->host_name = g_strdup (priv->hostname);
- device->host_port = priv->port;
+ device->host_port = port;
device->acquisition_method = ACQUISITION_METHOD_REMOTE_CUPS_SERVER;
data->devices->devices = g_list_append (data->devices->devices, device);
}
diff --git a/panels/printers/pp-host.h b/panels/printers/pp-host.h
index 02c4197..d701834 100644
--- a/panels/printers/pp-host.h
+++ b/panels/printers/pp-host.h
@@ -34,6 +34,9 @@ G_BEGIN_DECLS
#define PP_IS_HOST_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), PP_TYPE_HOST))
#define PP_HOST_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), PP_TYPE_HOST, PpHostClass))
+#define PP_HOST_UNSET_PORT -1
+#define PP_HOST_DEFAULT_IPP_PORT 631
+
typedef struct _PpHost PpHost;
typedef struct _PpHostClass PpHostClass;
typedef struct _PpHostPrivate PpHostPrivate;
@@ -51,8 +54,7 @@ struct _PpHostClass
GType pp_host_get_type (void) G_GNUC_CONST;
-PpHost *pp_host_new (const gchar *hostname,
- gint port);
+PpHost *pp_host_new (const gchar *hostname);
void pp_host_get_snmp_devices_async (PpHost *host,
GCancellable *cancellable,
diff --git a/panels/printers/pp-new-printer-dialog.c b/panels/printers/pp-new-printer-dialog.c
index fdfefd2..598f497 100644
--- a/panels/printers/pp-new-printer-dialog.c
+++ b/panels/printers/pp-new-printer-dialog.c
@@ -1263,9 +1263,9 @@ parse_uri (const gchar *uri,
{
const gchar *tmp = NULL;
gchar *resulting_host = NULL;
- gchar *port_string = NULL;
gchar *position;
- int resulting_port = 631;
+
+ *port = PP_HOST_UNSET_PORT;
if (g_strrstr (uri, "://"))
tmp = g_strrstr (uri, "://") + 3;
@@ -1287,14 +1287,10 @@ parse_uri (const gchar *uri,
if ((position = g_strrstr (resulting_host, ":")))
{
*position = '\0';
- port_string = position + 1;
+ *port = atoi (position + 1);
}
- if (port_string)
- resulting_port = atoi (port_string);
-
*host = resulting_host;
- *port = resulting_port;
return TRUE;
}
@@ -1326,8 +1322,15 @@ search_for_remote_printers (THostSearchData *data)
priv->remote_host_cancellable = g_cancellable_new ();
- priv->remote_cups_host = pp_host_new (data->host_name, data->host_port);
- priv->snmp_host = pp_host_new (data->host_name, data->host_port);
+ priv->remote_cups_host = pp_host_new (data->host_name);
+ priv->snmp_host = pp_host_new (data->host_name);
+
+ if (data->host_port != PP_HOST_UNSET_PORT)
+ {
+ g_object_set (priv->remote_cups_host, "port", data->host_port, NULL);
+ g_object_set (priv->snmp_host, "port", data->host_port, NULL);
+ }
+
priv->samba_host = pp_samba_new (GTK_WINDOW (priv->dialog),
data->host_name);
@@ -1456,7 +1459,7 @@ search_address (const gchar *text,
if (text && text[0] != '\0')
{
gchar *host = NULL;
- gint port = 631;
+ gint port;
parse_uri (text, &host, &port);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]