Sebastian Lackner : webservices: Fix handling of duplicate headers in WsRemoveCustomHeader.

Alexandre Julliard julliard at winehq.org
Thu Sep 1 09:55:29 CDT 2016


Module: wine
Branch: master
Commit: 0238d470316a7ee60abe695fef089580464b4891
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=0238d470316a7ee60abe695fef089580464b4891

Author: Sebastian Lackner <sebastian at fds-team.de>
Date:   Wed Aug 31 21:09:04 2016 +0200

webservices: Fix handling of duplicate headers in WsRemoveCustomHeader.

Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/webservices/msg.c       |  2 +-
 dlls/webservices/tests/msg.c | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/dlls/webservices/msg.c b/dlls/webservices/msg.c
index 01b6625..6fcd046 100644
--- a/dlls/webservices/msg.c
+++ b/dlls/webservices/msg.c
@@ -1062,7 +1062,7 @@ HRESULT WINAPI WsRemoveCustomHeader( WS_MESSAGE *handle, const WS_XML_STRING *na
         {
             remove_header( msg, i );
             removed = TRUE;
-            break;
+            i--;
         }
     }
 
diff --git a/dlls/webservices/tests/msg.c b/dlls/webservices/tests/msg.c
index b78c52e..5d0901e 100644
--- a/dlls/webservices/tests/msg.c
+++ b/dlls/webservices/tests/msg.c
@@ -839,8 +839,15 @@ static void test_WsRemoveCustomHeader(void)
         "xmlns:s=\"http://www.w3.org/2003/05/soap-envelope\"><s:Header>"
         "<a:MessageID>urn:uuid:00000000-0000-0000-0000-000000000000</a:MessageID>"
         "</s:Header><s:Body/></s:Envelope>";
+    static const char expected3[] =
+        "<s:Envelope xmlns:a=\"http://www.w3.org/2005/08/addressing\" "
+        "xmlns:s=\"http://www.w3.org/2003/05/soap-envelope\"><s:Header>"
+        "<a:MessageID>urn:uuid:00000000-0000-0000-0000-000000000000</a:MessageID>"
+        "<test xmlns=\"ns\">value</test><test xmlns=\"ns\">value2</test>"
+        "</s:Header><s:Body/></s:Envelope>";
     static WS_XML_STRING localname = {4, (BYTE *)"test"}, ns = {2, (BYTE *)"ns"};
     static const WS_XML_STRING value = {5, (BYTE *)"value"};
+    static const WS_XML_STRING value2 = {6, (BYTE *)"value2"};
     HRESULT hr;
     WS_MESSAGE *msg;
     WS_ELEMENT_DESCRIPTION desc;
@@ -866,6 +873,10 @@ static void test_WsRemoveCustomHeader(void)
     ok( hr == S_OK, "got %08x\n", hr );
     check_output_header( msg, expected, -1, strstr(expected, "urn:uuid:") - expected, 46, __LINE__ );
 
+    hr = WsAddCustomHeader( msg, &desc, WS_WRITE_REQUIRED_VALUE, &value2, sizeof(value2), 0, NULL );
+    ok( hr == S_OK, "got %08x\n", hr );
+    check_output_header( msg, expected3, -1, strstr(expected3, "urn:uuid:") - expected3, 46, __LINE__ );
+
     hr = WsRemoveCustomHeader( msg, NULL, NULL, NULL );
     ok( hr == E_INVALIDARG, "got %08x\n", hr );
 




More information about the wine-cvs mailing list