Module: wine Branch: master Commit: cbea4e2a855a1cd442853888772fadd3376af537 URL: http://source.winehq.org/git/wine.git/?a=commit;h=cbea4e2a855a1cd44285388877...
Author: Thomas Mullaly thomas.mullaly@gmail.com Date: Tue Sep 21 22:25:24 2010 -0400
urlmon: Implemented support for determining what port value to use in IUriBuilder.
---
dlls/urlmon/uri.c | 21 ++++++++++++++++++++- 1 files changed, 20 insertions(+), 1 deletions(-)
diff --git a/dlls/urlmon/uri.c b/dlls/urlmon/uri.c index 070ec70..44e37b1 100644 --- a/dlls/urlmon/uri.c +++ b/dlls/urlmon/uri.c @@ -160,9 +160,10 @@ typedef struct { BOOL has_ipv6; ipv6_address ipv6_address;
+ BOOL has_port; const WCHAR *port; DWORD port_len; - USHORT port_value; + DWORD port_value;
const WCHAR *path; DWORD path_len; @@ -1435,6 +1436,7 @@ static BOOL parse_port(const WCHAR **ptr, parse_data *data, DWORD flags) { ++(*ptr); }
+ data->has_port = TRUE; data->port_value = port; data->port_len = *ptr - data->port;
@@ -3696,6 +3698,21 @@ static HRESULT validate_host(const UriBuilder *builder, parse_data *data, DWORD return S_OK; }
+static void setup_port(const UriBuilder *builder, parse_data *data, DWORD flags) { + if(builder->modified_props & Uri_HAS_PORT) { + if(builder->has_port) { + data->has_port = TRUE; + data->port_value = builder->port; + } + } else if(builder->uri && builder->uri->has_port) { + data->has_port = TRUE; + data->port_value = builder->uri->port; + } + + if(data->has_port) + TRACE("(%p %p %x): Using %u as port for IUri.\n", builder, data, flags, data->port_value); +} + static HRESULT validate_components(const UriBuilder *builder, parse_data *data, DWORD flags) { HRESULT hr;
@@ -3728,6 +3745,8 @@ static HRESULT validate_components(const UriBuilder *builder, parse_data *data, /* The URI is opaque if it doesn't have an authority component. */ data->is_opaque = !data->username && !data->password && !data->host;
+ setup_port(builder, data, flags); + return E_NOTIMPL; }