Signed-off-by: Hans Leidekker hans@codeweavers.com --- dlls/webservices/msg.c | 27 +++++++++++++++++++++++++++ dlls/webservices/webservices.spec | 2 +- include/webservices.h | 1 + 3 files changed, 29 insertions(+), 1 deletion(-)
diff --git a/dlls/webservices/msg.c b/dlls/webservices/msg.c index e28baa2693..ada549c773 100644 --- a/dlls/webservices/msg.c +++ b/dlls/webservices/msg.c @@ -999,6 +999,33 @@ HRESULT WINAPI WsReadBody( WS_MESSAGE *handle, const WS_ELEMENT_DESCRIPTION *des }
/************************************************************************** + * WsFillBody [webservices.@] + */ +HRESULT WINAPI WsFillBody( WS_MESSAGE *handle, ULONG size, const WS_ASYNC_CONTEXT *ctx, WS_ERROR *error ) +{ + struct msg *msg = (struct msg *)handle; + HRESULT hr; + + TRACE( "%p %u %p %p\n", handle, size, ctx, error ); + + if (!msg) return E_INVALIDARG; + + EnterCriticalSection( &msg->cs ); + + if (msg->magic != MSG_MAGIC) + { + LeaveCriticalSection( &msg->cs ); + return E_INVALIDARG; + } + + hr = WsFillReader( msg->reader_body, size, ctx, error ); + + LeaveCriticalSection( &msg->cs ); + TRACE( "returning %08x\n", hr ); + return hr; +} + +/************************************************************************** * WsInitializeMessage [webservices.@] */ HRESULT WINAPI WsInitializeMessage( WS_MESSAGE *handle, WS_MESSAGE_INITIALIZATION init, diff --git a/dlls/webservices/webservices.spec b/dlls/webservices/webservices.spec index 30c97e3473..adad68dbdd 100644 --- a/dlls/webservices/webservices.spec +++ b/dlls/webservices/webservices.spec @@ -43,7 +43,7 @@ @ stub WsEndReaderCanonicalization @ stub WsEndWriterCanonicalization @ stdcall WsFileTimeToDateTime(ptr ptr ptr) -@ stub WsFillBody +@ stdcall WsFillBody(ptr long ptr ptr) @ stdcall WsFillReader(ptr long ptr ptr) @ stdcall WsFindAttribute(ptr ptr ptr long ptr ptr) @ stub WsFlushBody diff --git a/include/webservices.h b/include/webservices.h index 6cafcc63d6..69e3c8a276 100644 --- a/include/webservices.h +++ b/include/webservices.h @@ -1622,6 +1622,7 @@ HRESULT WINAPI WsDateTimeToFileTime(const WS_DATETIME*, FILETIME*, WS_ERROR*); HRESULT WINAPI WsDecodeUrl(const WS_STRING*, ULONG, WS_HEAP*, WS_URL**, WS_ERROR*); HRESULT WINAPI WsEncodeUrl(const WS_URL*, ULONG, WS_HEAP*, WS_STRING*, WS_ERROR*); HRESULT WINAPI WsFileTimeToDateTime(const FILETIME*, WS_DATETIME*, WS_ERROR*); +HRESULT WINAPI WsFillBody(WS_MESSAGE*, ULONG, const WS_ASYNC_CONTEXT*, WS_ERROR*); HRESULT WINAPI WsFillReader(WS_XML_READER*, ULONG, const WS_ASYNC_CONTEXT*, WS_ERROR*); HRESULT WINAPI WsFindAttribute(WS_XML_READER*, const WS_XML_STRING*, const WS_XML_STRING*, BOOL, ULONG*, WS_ERROR*);