ap_create_pipe was changed to return a pipe with both handles
blocking (previously, both handles were non-blocking). ap_set_pipe_timeout() is now the only way to manipulate the blocking state of the pipe. Pass -1 for timeout to make it blocking; pass 0 for timeout to make it non-blocking. ap_block_pipe() is gone. A few minor bugs were fixed along the way. OS-specific notes: non-Unix in general: Only Unix/BeOS currently has the optimization to keep track of the blocking state. This is used to avoid syscalls as well as to handle ap_put_os_file(), which is a case where we don't know the blocking state of the handle we are given. OS/2: ap_set_pipe_timeout() with timeout value > 0: The code didn't play with the blocking state before and it doesn't still. I did add logic for special timeout values 0 and -1 to play with the blocking state. ap_create_pipe(): old logic didn't do anything with the blocking state of the second handle; it still doesn't; hopefully it is blocking pre-BONE BEOS: old code to make a pipe non-blocking was a no-op; now it returns APR_ENOTIMPL BONE: old code to make a pipe non-blocking; it passed &zero as the parm to FIONBIO instead of &one; this bug was fixed Win32: The pipe was always created blocking before; no change previously, ap_setprocattr_io() ignored the blocking flag; now it respects it like other platforms and calls ap_set_pipe_timeout(p,0) on appropriate pipe handles (Bill Stoddard was just working in ap_set_pipe_timeout(), so I presume this is golden) git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@85637 13f79535-47bb-0310-9956-ffa450edef68
Please register or sign in to comment