components/apr/patches/port_getn_rc.patch
author Kristina Tripp <Kristina.Tripp@oracle.com>
Mon, 20 Oct 2014 13:13:15 -0700
branchs11u2-sru
changeset 3407 e5c7eb70e0b8
parent 203 887f23af6934
permissions -rw-r--r--
18354422 facter cannot parse the output of GNU uptime 18960283 problem in UTILITY/PUPPET 18960296 Update Facter to 2.1.0 19357281 facter --help doesn't work 19402424 puppet error when no swap devices configured 19646677 facter-19 package not installed if ruby-19 not installed 19596952 Update facter 2.1.0 license 17797881 Add facter support for ldoms
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
203
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     1
=== Patch is taken from
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     2
=== http://svn.apache.org/viewvc?view=revision&revision=836111
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     3
--- poll/unix/port.c.orig	2009-11-18 15:04:29.000000000 -0500
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     4
+++ poll/unix/port.c	2009-11-18 15:02:28.000000000 -0500
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     5
@@ -100,18 +100,27 @@
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     6
         tvptr = &tv;
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     7
     }
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     8
 
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     9
+    list[0].portev_user = (void *)-1; /* so we can double check that an
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    10
+                                       * event was returned
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    11
+                                       */
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    12
+
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    13
     ret = port_getn(port, list, max, nget, tvptr);
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    14
+    /* Note: 32-bit port_getn() on Solaris 10 x86 returns large negative 
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    15
+     * values instead of 0 when returning immediately.
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    16
+     */
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    17
 
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    18
-    if (ret < 0) {
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    19
+    if (ret == -1) {
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    20
         rv = apr_get_netos_error();
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    21
 
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    22
         switch(rv) {
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    23
         case EINTR:
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    24
         case ETIME:
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    25
-            if (*nget > 0) {
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    26
+            if (*nget > 0 && list[0].portev_user != (void *)-1) {
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    27
                 /* This confusing API can return an event at the same time
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    28
                  * that it reports EINTR or ETIME.  If that occurs, just
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    29
-                 * report the event.
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    30
+                 * report the event.  With EINTR, nget can be > 0 without
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    31
+                 * any event, so check that portev_user was filled in.
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    32
+                 *
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    33
                  * (Maybe it will be simplified; see thread
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    34
                  *   http://mail.opensolaris.org
887f23af6934 7035055 move apr and apr-util to userland
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    35
                  *   /pipermail/networking-discuss/2009-August/011979.html