[2/8] webservices: Protect messages with a critical section.

Hans Leidekker hans at codeweavers.com
Wed Mar 8 11:03:27 CST 2017


On Wed, 2017-03-08 at 17:13 +0100, Sebastian Lackner wrote:
> On 08.03.2017 11:25, Hans Leidekker wrote:
> > +        }
> >      }
> >  
> >      msg->is_addressed = TRUE;
> 
> Not sure if it matters, but previously this was skipped in case of a failure.

Thanks, I'll fix that.

> Also please note that depending on how many objects are used by an application,
> a separate CS for each might significantly increase memory usage.

It's 1 or 2 of each object type per SOAP call.

> > -    return S_OK;
> > +
> > +    LeaveCriticalSection( &msg->cs );
> > +    return hr;
> [...]
> > -    msg->init  = init;
> > -    msg->state = WS_MESSAGE_STATE_INITIALIZED;
> > -    return write_envelope( msg );
> > +    if ((hr = write_envelope( msg )) == S_OK)
> > +    {
> > +        msg->init  = init;
> > +        msg->state = WS_MESSAGE_STATE_INITIALIZED;
> > +    }
> 
> Here, the new code also does something else than the old one. Previously the
> msg fields were changed unconditionally.

That's actually an improvement.





More information about the wine-devel mailing list