Thomas Mullaly : urlmon: Implemented support for determining what port value to use in IUriBuilder.
Alexandre Julliard
julliard at winehq.org
Tue Sep 28 11:13:31 CDT 2010
Module: wine
Branch: master
Commit: cbea4e2a855a1cd442853888772fadd3376af537
URL: http://source.winehq.org/git/wine.git/?a=commit;h=cbea4e2a855a1cd442853888772fadd3376af537
Author: Thomas Mullaly <thomas.mullaly at 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;
}
More information about the wine-cvs
mailing list