Commit cbea4e2a authored by Thomas Mullaly's avatar Thomas Mullaly Committed by Alexandre Julliard

urlmon: Implemented support for determining what port value to use in IUriBuilder.

parent bf82564b
......@@ -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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment