You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by co...@apache.org on 2014/12/19 23:21:59 UTC

svn commit: r1646891 - in /apr/apr/trunk: CHANGES poll/unix/z_asio.c

Author: covener
Date: Fri Dec 19 22:21:59 2014
New Revision: 1646891

URL: http://svn.apache.org/r1646891
Log:
apr_pollset state fixes for z/OS

Submitted By: Pat Odonnell <patod us ibm com>
Committed By: covener


Modified:
    apr/apr/trunk/CHANGES
    apr/apr/trunk/poll/unix/z_asio.c

Modified: apr/apr/trunk/CHANGES
URL: http://svn.apache.org/viewvc/apr/apr/trunk/CHANGES?rev=1646891&r1=1646890&r2=1646891&view=diff
==============================================================================
--- apr/apr/trunk/CHANGES [utf-8] (original)
+++ apr/apr/trunk/CHANGES [utf-8] Fri Dec 19 22:21:59 2014
@@ -1,6 +1,10 @@
                                                      -*- coding: utf-8 -*-
 Changes for APR 2.0.0
 
+  *) apr_pollset: On z/OS, threadsafe apr_pollset_poll() may return
+     "EDC8102I Operation would block" under load.
+     [Pat Odonnell patod us.ibm.com ]
+
   *) apr_escape: Correctly calculate the size of the returned string in
      apr_escape_path and set the correct return value in case we actually
      escape the string. [<aduryagin gmail.com>] PR 57230.

Modified: apr/apr/trunk/poll/unix/z_asio.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/poll/unix/z_asio.c?rev=1646891&r1=1646890&r2=1646891&view=diff
==============================================================================
--- apr/apr/trunk/poll/unix/z_asio.c (original)
+++ apr/apr/trunk/poll/unix/z_asio.c Fri Dec 19 22:21:59 2014
@@ -379,6 +379,7 @@ static apr_status_t asio_pollset_add(apr
             APR_RING_REMOVE(elem, link);
             DBG1(3, "used recycled memory at %08p\n", elem);
             elem->state = ASIO_INIT;
+            elem->a.aio_cflags = 0;
         }
         else {
             elem = (asio_elem_t *) apr_pcalloc(pollset->pool, sizeof(asio_elem_t));
@@ -659,6 +660,7 @@ static apr_status_t asio_pollset_poll(ap
             if (ret == 1) {
                 DBG(4, "asyncio() completed inline\n");
                 /* it's ready now */
+                elem->state = ASIO_COMPLETE;
                 APR_RING_INSERT_TAIL(&(priv->ready_ring), elem, asio_elem_t,
                                      link);
             }