Module: wine Branch: master Commit: 52ad4d0e6624041ccc8c13504e4d8480fc92ff9c URL: http://source.winehq.org/git/wine.git/?a=commit;h=52ad4d0e6624041ccc8c13504e...
Author: Owen Rudge orudge@codeweavers.com Date: Wed Jun 28 22:13:18 2017 +0100
wsdapi: Implement IWSDUdpAddress_Get/SetPort.
Signed-off-by: Owen Rudge orudge@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/wsdapi/address.c | 22 ++++++++++++++++++---- dlls/wsdapi/tests/address.c | 22 +++++++++++----------- 2 files changed, 29 insertions(+), 15 deletions(-)
diff --git a/dlls/wsdapi/address.c b/dlls/wsdapi/address.c index 05c4bb9..f225930 100644 --- a/dlls/wsdapi/address.c +++ b/dlls/wsdapi/address.c @@ -37,6 +37,7 @@ typedef struct IWSDUdpAddressImpl { SOCKADDR_STORAGE sockAddr; WCHAR ipv4Address[25]; WCHAR ipv6Address[64]; + WORD port; } IWSDUdpAddressImpl;
static inline IWSDUdpAddressImpl *impl_from_IWSDUdpAddress(IWSDUdpAddress *iface) @@ -113,14 +114,27 @@ static HRESULT WINAPI IWSDUdpAddressImpl_Deserialize(IWSDUdpAddress *This, LPCWS
static HRESULT WINAPI IWSDUdpAddressImpl_GetPort(IWSDUdpAddress *This, WORD *pwPort) { - FIXME("(%p, %p)\n", This, pwPort); - return E_NOTIMPL; + IWSDUdpAddressImpl *impl = impl_from_IWSDUdpAddress(This); + + TRACE("(%p, %p)\n", This, pwPort); + + if (pwPort == NULL) + { + return E_POINTER; + } + + *pwPort = impl->port; + return S_OK; }
static HRESULT WINAPI IWSDUdpAddressImpl_SetPort(IWSDUdpAddress *This, WORD wPort) { - FIXME("(%p, %d)\n", This, wPort); - return E_NOTIMPL; + IWSDUdpAddressImpl *impl = impl_from_IWSDUdpAddress(This); + + TRACE("(%p, %d)\n", This, wPort); + + impl->port = wPort; + return S_OK; }
static HRESULT WINAPI IWSDUdpAddressImpl_GetTransportAddressEx(IWSDUdpAddress *This, BOOL fSafe, LPCWSTR *ppszAddress) diff --git a/dlls/wsdapi/tests/address.c b/dlls/wsdapi/tests/address.c index 2142045..1a18f02 100644 --- a/dlls/wsdapi/tests/address.c +++ b/dlls/wsdapi/tests/address.c @@ -164,32 +164,32 @@ static void GetSetPort_udp_tests(void) /* No test for GetPort(NULL) as this causes an access violation exception on Windows */
rc = IWSDUdpAddress_GetPort(udpAddress, &actualPort); - todo_wine ok(rc == S_OK, "GetPort returned unexpected result: %08x\n", rc); + ok(rc == S_OK, "GetPort returned unexpected result: %08x\n", rc); ok(actualPort == 0, "GetPort returned unexpected port: %d\n", actualPort);
/* Try setting a zero port */ rc = IWSDUdpAddress_SetPort(udpAddress, 0); - todo_wine ok(rc == S_OK, "SetPort returned unexpected result: %08x\n", rc); + ok(rc == S_OK, "SetPort returned unexpected result: %08x\n", rc);
rc = IWSDUdpAddress_GetPort(udpAddress, &actualPort); - todo_wine ok(rc == S_OK, "GetPort returned unexpected result: %08x\n", rc); + ok(rc == S_OK, "GetPort returned unexpected result: %08x\n", rc); ok(actualPort == 0, "GetPort returned unexpected port: %d\n", actualPort);
/* Set a real port */ rc = IWSDUdpAddress_SetPort(udpAddress, expectedPort1); - todo_wine ok(rc == S_OK, "SetPort returned unexpected result: %08x\n", rc); + ok(rc == S_OK, "SetPort returned unexpected result: %08x\n", rc);
rc = IWSDUdpAddress_GetPort(udpAddress, &actualPort); - todo_wine ok(rc == S_OK, "GetPort returned unexpected result: %08x\n", rc); - todo_wine ok(actualPort == expectedPort1, "GetPort returned unexpected port: %d\n", actualPort); + ok(rc == S_OK, "GetPort returned unexpected result: %08x\n", rc); + ok(actualPort == expectedPort1, "GetPort returned unexpected port: %d\n", actualPort);
/* Now set a different port */ rc = IWSDUdpAddress_SetPort(udpAddress, expectedPort2); - todo_wine ok(rc == S_OK, "SetPort returned unexpected result: %08x\n", rc); + ok(rc == S_OK, "SetPort returned unexpected result: %08x\n", rc);
rc = IWSDUdpAddress_GetPort(udpAddress, &actualPort); - todo_wine ok(rc == S_OK, "GetPort returned unexpected result: %08x\n", rc); - todo_wine ok(actualPort == expectedPort2, "GetPort returned unexpected port: %d\n", actualPort); + ok(rc == S_OK, "GetPort returned unexpected result: %08x\n", rc); + ok(actualPort == expectedPort2, "GetPort returned unexpected port: %d\n", actualPort);
/* Release the object */ ret = IWSDUdpAddress_Release(udpAddress); @@ -330,7 +330,7 @@ static void GetSetSockaddr_udp_tests(void)
/* Check that GetPort doesn't return the port set via the socket */ rc = IWSDUdpAddress_GetPort(udpAddress, &port); - todo_wine ok(rc == S_OK, "GetPort returned unexpected result: %08x\n", rc); + ok(rc == S_OK, "GetPort returned unexpected result: %08x\n", rc); ok(port == 0, "GetPort returned unexpected port: %d\n", port);
/* Try setting an IPv4 address without a port */ @@ -370,7 +370,7 @@ static void GetSetSockaddr_udp_tests(void)
/* Check that GetPort doesn't return the port set via the socket */ rc = IWSDUdpAddress_GetPort(udpAddress, &port); - todo_wine ok(rc == S_OK, "GetPort returned unexpected result: %08x\n", rc); + ok(rc == S_OK, "GetPort returned unexpected result: %08x\n", rc); ok(port == 0, "GetPort returned unexpected port: %d\n", port);
/* Try setting an IPv6 address without a port */