diff -up --recursive gtk+-2.10.6/modules/printbackends/cups/gtkcupsutils.c gtk+-2.10.6-shared/modules/printbackends/cups/gtkcupsutils.c
--- gtk+-2.10.6/modules/printbackends/cups/gtkcupsutils.c	2007-07-09 14:18:43.000000000 -0700
+++ gtk+-2.10.6-shared/modules/printbackends/cups/gtkcupsutils.c	2007-07-10 11:26:06.000000000 -0700
@@ -505,9 +505,16 @@ _connect (GtkCupsRequest *request)
 {
   request->poll_state = GTK_CUPS_HTTP_IDLE;
 
-  if (request->http == NULL)
+  if ((request->http == NULL) || (request->reconnect == TRUE))
     {
-      request->http = httpConnectEncrypt (request->server, ippPort(), cupsEncryption());
+      http_t *newhttp;
+
+      newhttp = httpConnectEncrypt (request->server, ippPort(), cupsEncryption());
+
+      if (request->http)
+	memcpy(request->http,newhttp,sizeof(http_t));
+      else
+	request->http = newhttp;
 
       if (request->http == NULL)
         request->attempts++;
@@ -515,7 +522,6 @@ _connect (GtkCupsRequest *request)
       if (request->http)
         httpBlocking (request->http, 0);
         
-      request->own_http = TRUE;
     }
   else
     {
@@ -772,7 +778,7 @@ _post_check (GtkCupsRequest *request)
       
       request->last_status = HTTP_CONTINUE;
       httpClose (request->http);
-      request->http = NULL;
+      request->reconnect = TRUE;
       return;  
     }
   else
@@ -931,7 +937,7 @@ _get_check (GtkCupsRequest *request)
       httpFlush (request->http);
       httpClose (request->http);
       request->last_status = HTTP_CONTINUE;
-      request->http = NULL;
+      request->reconnect = TRUE;
       return;
 
     }
diff -up --recursive gtk+-2.10.6/modules/printbackends/cups/gtkcupsutils.h gtk+-2.10.6-shared/modules/printbackends/cups/gtkcupsutils.h
--- gtk+-2.10.6/modules/printbackends/cups/gtkcupsutils.h	2007-07-09 14:18:43.000000000 -0700
+++ gtk+-2.10.6-shared/modules/printbackends/cups/gtkcupsutils.h	2007-07-10 11:19:45.000000000 -0700
@@ -72,6 +72,7 @@ struct _GtkCupsRequest 
   gint own_http : 1; 
   gint *http_id;
   gint id;
+  gint reconnect;
 };
 
 #define GTK_CUPS_REQUEST_START 0
