Hans Leidekker : webservices: Implement WsGetChannelProperty(WS_CHANNEL_PROPERTY_STATE).

Alexandre Julliard julliard at winehq.org
Mon May 17 15:45:30 CDT 2021


Module: wine
Branch: master
Commit: 64254a0a808bace4ca21e812964135234e3cb21b
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=64254a0a808bace4ca21e812964135234e3cb21b

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Mon May 17 15:36:12 2021 +0200

webservices: Implement WsGetChannelProperty(WS_CHANNEL_PROPERTY_STATE).

Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/webservices/channel.c       |  5 +++++
 dlls/webservices/tests/channel.c | 11 +++++++++++
 2 files changed, 16 insertions(+)

diff --git a/dlls/webservices/channel.c b/dlls/webservices/channel.c
index fd7c8d6029d..8e902e5aed7 100644
--- a/dlls/webservices/channel.c
+++ b/dlls/webservices/channel.c
@@ -672,6 +672,11 @@ HRESULT WINAPI WsGetChannelProperty( WS_CHANNEL *handle, WS_CHANNEL_PROPERTY_ID
         else *(WS_ENCODING *)buf = channel->encoding;
         break;
 
+    case WS_CHANNEL_PROPERTY_STATE:
+        if (!buf || size != sizeof(channel->state)) hr = E_INVALIDARG;
+        else *(WS_CHANNEL_STATE *)buf = channel->state;
+        break;
+
     default:
         hr = prop_get( channel->prop, channel->prop_count, id, buf, size );
     }
diff --git a/dlls/webservices/tests/channel.c b/dlls/webservices/tests/channel.c
index d80f1f64cde..4f56b864271 100644
--- a/dlls/webservices/tests/channel.c
+++ b/dlls/webservices/tests/channel.c
@@ -117,6 +117,7 @@ static void test_WsOpenChannel(void)
 {
     HRESULT hr;
     WS_CHANNEL *channel;
+    WS_CHANNEL_STATE state;
     WS_ENDPOINT_ADDRESS addr;
 
     hr = WsCreateChannel( WS_CHANNEL_TYPE_REQUEST, WS_HTTP_CHANNEL_BINDING, NULL, 0, NULL, &channel, NULL );
@@ -141,12 +142,22 @@ static void test_WsOpenChannel(void)
     hr = WsOpenChannel( channel, &addr, NULL, NULL );
     ok( hr == S_OK, "got %08x\n", hr );
 
+    state = 0xdeadbeef;
+    hr = WsGetChannelProperty( channel, WS_CHANNEL_PROPERTY_STATE, &state, sizeof(state), NULL );
+    ok( hr == S_OK, "got %08x\n", hr );
+    ok( state == WS_CHANNEL_STATE_OPEN, "got %u\n", state );
+
     hr = WsOpenChannel( channel, &addr, NULL, NULL );
     ok( hr == WS_E_INVALID_OPERATION, "got %08x\n", hr );
 
     hr = WsCloseChannel( channel, NULL, NULL );
     ok( hr == S_OK, "got %08x\n", hr );
 
+    state = 0xdeadbeef;
+    hr = WsGetChannelProperty( channel, WS_CHANNEL_PROPERTY_STATE, &state, sizeof(state), NULL );
+    ok( hr == S_OK, "got %08x\n", hr );
+    ok( state == WS_CHANNEL_STATE_CLOSED, "got %u\n", state );
+
     hr = WsCloseChannel( channel, NULL, NULL );
     ok( hr == S_OK, "got %08x\n", hr );
 




More information about the wine-cvs mailing list