summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--modules/printbackends/cups/gtkprintbackendcups.c12
2 files changed, 10 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 84de41642d..0c88235112 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2007-01-03 Matthias Clasen <mclasen@redhat.com>
+ * modules/printbackends/cups/gtkprintbackendcups.c: Close
+ the http connection after getting the PPD.
+
* gtk/gtkprinteroptionwidget.c (filesave_changed_cb):
Fix memory leaks.
diff --git a/modules/printbackends/cups/gtkprintbackendcups.c b/modules/printbackends/cups/gtkprintbackendcups.c
index 631bca2603..bd389eba2a 100644
--- a/modules/printbackends/cups/gtkprintbackendcups.c
+++ b/modules/printbackends/cups/gtkprintbackendcups.c
@@ -1202,6 +1202,7 @@ cups_get_printer_list (GtkPrintBackend *backend)
typedef struct {
GtkPrinterCups *printer;
GIOChannel *ppd_io;
+ http_t *http;
} GetPPDData;
static void
@@ -1209,7 +1210,7 @@ get_ppd_data_free (GetPPDData *data)
{
GTK_NOTE (PRINTING,
g_print ("CUPS Backend: %s\n", G_STRFUNC));
-
+ httpClose (data->http);
g_io_channel_unref (data->ppd_io);
g_object_unref (data->printer);
g_free (data);
@@ -1265,11 +1266,10 @@ cups_request_ppd (GtkPrinter *printer)
GTK_NOTE (PRINTING,
g_print ("CUPS Backend: %s\n", G_STRFUNC));
- /* FIXME this can return NULL! */
http = httpConnectEncrypt (cups_printer->hostname,
cups_printer->port,
cupsEncryption ());
-
+
data = g_new0 (GetPPDData, 1);
fd = g_file_open_tmp ("gtkprint_ppd_XXXXXX",
@@ -1296,6 +1296,7 @@ cups_request_ppd (GtkPrinter *printer)
return;
}
+ data->http = http;
fchmod (fd, S_IRUSR | S_IWUSR);
data->ppd_io = g_io_channel_unix_new (fd);
g_io_channel_set_encoding (data->ppd_io, NULL, NULL);
@@ -1304,8 +1305,9 @@ cups_request_ppd (GtkPrinter *printer)
data->printer = g_object_ref (printer);
resource = g_strdup_printf ("/printers/%s.ppd",
- gtk_printer_cups_get_ppd_name (GTK_PRINTER_CUPS(printer)));
- request = gtk_cups_request_new (http,
+ gtk_printer_cups_get_ppd_name (GTK_PRINTER_CUPS (printer)));
+
+ request = gtk_cups_request_new (data->http,
GTK_CUPS_GET,
0,
data->ppd_io,