components/cups/patches/7187280.patch
author Mike Sullivan <Mike.Sullivan@Oracle.COM>
Thu, 26 Jan 2017 16:44:14 -0800
changeset 7617 14b1a4293086
parent 992 ffbecef92713
permissions -rw-r--r--
Close of build 117.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
992
ffbecef92713 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
ffbecef92713 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
ffbecef92713 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 @@
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
     4
 #  include <unistd.h>
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
     5
 #endif /* WIN32 || __EMX__ */
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
     6
 
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
     7
+#if defined(__sun)
ffbecef92713 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 ... */
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
     9
+#endif
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    10
 
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    11
 /*
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    12
  * Local functions...
ffbecef92713 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 @@
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    14
       cg->http = NULL;
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    15
     }
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    16
   }
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    17
+
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    18
+#if defined(__sun)
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    19
+ /*
ffbecef92713 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.
ffbecef92713 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.
ffbecef92713 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.
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    23
+  */
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    24
+  if (cg->http)
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    25
+  {
ffbecef92713 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;
ffbecef92713 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);
ffbecef92713 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));
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    29
+
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    30
+   /*
ffbecef92713 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.
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    32
+    */
ffbecef92713 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)
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    34
+    {
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    35
+     /*
ffbecef92713 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.
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    37
+      */
ffbecef92713 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)
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    39
+      {
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    40
+       /*
ffbecef92713 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.
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    42
+        */
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    43
+        httpClose(cg->http);
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    44
+        cg->http = NULL;
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    45
+      }
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    46
+    }
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    47
+  }
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    48
+#endif
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    49
 
ffbecef92713 7187280 Printer dialog print list is empty when printing concurrent jobs
Petr Cvachoucek <petr.cvachoucek@oracle.com>
parents:
diff changeset
    50
  /*
ffbecef92713 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...