MSDN documentation states that
Any unused members of [an OVERLAPPED] structure should always be
initialized to zero before the structure is used in a function call.
Otherwise, the function may fail and return ERROR_INVALID_PARAMETER.
Prior to this patch, the internal state left over from previous
overlapped I/O was passed into the next call. It's unclear what effect
this might have, if any. (I have not personally witnessed an
ERROR_INVALID_PARAMETER myself.)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@
1758310 13f79535-47bb-0310-9956-
ffa450edef68
* state so -don't- close it.
*/
if (context) {
+ HANDLE saved_event;
+
apr_pool_clear(context->ptrans);
context->ba = apr_bucket_alloc_create(context->ptrans);
context->next = NULL;
+
+ saved_event = context->overlapped.hEvent;
+ memset(&context->overlapped, 0, sizeof(context->overlapped));
+ context->overlapped.hEvent = saved_event;
ResetEvent(context->overlapped.hEvent);
+
apr_thread_mutex_lock(qlock);
if (qtail) {
qtail->next = context;