Commit bbe5a751 authored by Jim Jagielski's avatar Jim Jagielski
Browse files

Merge r1758310 from trunk:

mpm_winnt: clear OVERLAPPED structs before reuse

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.)
Submitted by: jchampion
Reviewed/backported by: jim


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1759470 13f79535-47bb-0310-9956-ffa450edef68
parent c6f08a39
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -126,11 +126,6 @@ PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
     2.4.x patch: trunk works (modulo CHANGES and APLOGNO's next-number)
     +1: jchampion, wrowe, covener

   * mpm_winnt: always zero out OVERLAPPED structs when recycling them.
     trunk patch: http://svn.apache.org/r1758310
     2.4.x patch: trunk works
     +1: jchampion, wrowe, covener

PATCHES PROPOSED TO BACKPORT FROM TRUNK:
  [ New proposals should be added at the end of the list ]

+7 −0
Original line number Diff line number Diff line
@@ -136,10 +136,17 @@ static void mpm_recycle_completion_context(winnt_conn_ctx_t *context)
     * 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;