components/cups/patches/7187280.patch
author Mike Sullivan <Mike.Sullivan@Oracle.COM>
Mon, 11 Mar 2013 10:38:09 -0700
branchs11-update
changeset 2520 ceec631e74d1
parent 2403 a4a5919f480b
permissions -rw-r--r--
Close of build 10.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2403
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
     1
--- cups/util.c	Mon Jan 19 23:26:36 1970
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
     2
+++ cups/util.c	Mon Jan 19 23:26:36 1970
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
     3
@@ -70,6 +70,9 @@
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
     4
 #  include <unistd.h>
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
     5
 #endif /* WIN32 || __EMX__ */
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
     6
 
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
     7
+#if defined(__sun)
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
     8
+#include <inet/tcp.h>		/* need this for TCPS_ESTABLISHED ... */
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
     9
+#endif
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    10
 
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    11
 /*
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    12
  * Local functions...
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    13
@@ -1659,6 +1662,38 @@
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    14
       cg->http = NULL;
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    15
     }
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    16
   }
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    17
+
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    18
+#if defined(__sun)
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    19
+ /*
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    20
+  * Check the connection state.
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    21
+  * If the connection wasn't used for some time, the server could close it.
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    22
+  * The socket state would change to CLOSE_WAIT in such case.
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    23
+  */
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    24
+  if (cg->http)
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    25
+  {
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    26
+    struct tcp_info tcpi;
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    27
+    socklen_t len = sizeof(tcpi);
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    28
+    memset(&tcpi, 0, sizeof(tcpi));
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    29
+
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    30
+   /*
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    31
+    * Get TCP connection info.
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    32
+    */
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    33
+    if (getsockopt(cg->http->fd, IPPROTO_TCP, TCP_INFO, &tcpi, &len) == 0)
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    34
+    {
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    35
+     /*
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    36
+      * Successfully got TCP connection state. Check it.
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    37
+      */
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    38
+      if (tcpi.tcpi_state != TCPS_ESTABLISHED)
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    39
+      {
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    40
+       /*
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    41
+        * Need to close the current connection.
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    42
+        */
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    43
+        httpClose(cg->http);
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    44
+        cg->http = NULL;
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    45
+      }
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    46
+    }
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    47
+  }
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    48
+#endif
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    49
 
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    50
  /*
a4a5919f480b 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    51
   * (Re)connect as needed...