Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
fd9aa244
Commit
fd9aa244
authored
Jul 14, 2009
by
Juan Lang
Committed by
Alexandre Julliard
Jul 15, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winhttp: Implement WinHttpGetDefaultProxyConfiguration.
parent
3469a021
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
87 additions
and
4 deletions
+87
-4
session.c
dlls/winhttp/session.c
+87
-4
No files found.
dlls/winhttp/session.c
View file @
fd9aa244
...
...
@@ -669,17 +669,100 @@ struct winhttp_settings_header
DWORD
flags
;
/* one of WINHTTP_PROXY_TYPE_* */
};
static
inline
void
copy_char_to_wchar_sz
(
const
BYTE
*
src
,
DWORD
len
,
WCHAR
*
dst
)
{
const
BYTE
*
begin
;
for
(
begin
=
src
;
src
-
begin
<
len
;
src
++
,
dst
++
)
*
dst
=
*
src
;
*
dst
=
0
;
}
/***********************************************************************
* WinHttpGetDefaultProxyConfiguration (winhttp.@)
*/
BOOL
WINAPI
WinHttpGetDefaultProxyConfiguration
(
WINHTTP_PROXY_INFO
*
info
)
{
FIXME
(
"%p
\n
"
,
info
);
LONG
l
;
HKEY
key
;
BOOL
direct
=
TRUE
;
info
->
dwAccessType
=
WINHTTP_ACCESS_TYPE_NO_PROXY
;
info
->
lpszProxy
=
NULL
;
info
->
lpszProxyBypass
=
NULL
;
TRACE
(
"%p
\n
"
,
info
);
l
=
RegOpenKeyExW
(
HKEY_LOCAL_MACHINE
,
Connections
,
0
,
KEY_READ
,
&
key
);
if
(
!
l
)
{
DWORD
type
,
size
=
0
;
l
=
RegQueryValueExW
(
key
,
WinHttpSettings
,
NULL
,
&
type
,
NULL
,
&
size
);
if
(
!
l
&&
type
==
REG_BINARY
&&
size
>=
sizeof
(
struct
winhttp_settings_header
)
+
2
*
sizeof
(
DWORD
))
{
BYTE
*
buf
=
heap_alloc
(
size
);
if
(
buf
)
{
struct
winhttp_settings_header
*
hdr
=
(
struct
winhttp_settings_header
*
)
buf
;
DWORD
*
len
=
(
DWORD
*
)(
hdr
+
1
);
l
=
RegQueryValueExW
(
key
,
WinHttpSettings
,
NULL
,
NULL
,
buf
,
&
size
);
if
(
!
l
&&
hdr
->
magic
==
WINHTTPSETTINGS_MAGIC
&&
hdr
->
unknown
==
0
)
{
if
(
hdr
->
flags
&
WINHTTP_PROXY_TYPE_PROXY
)
{
BOOL
sane
=
FALSE
;
/* Sanity-check length of proxy string */
if
((
BYTE
*
)
len
-
buf
+
*
len
<=
size
)
{
sane
=
TRUE
;
info
->
lpszProxy
=
GlobalAlloc
(
0
,
(
*
len
+
1
)
*
sizeof
(
WCHAR
)
);
if
(
info
->
lpszProxy
)
copy_char_to_wchar_sz
(
(
BYTE
*
)(
len
+
1
),
*
len
,
(
LPWSTR
)
info
->
lpszProxy
);
len
=
(
DWORD
*
)((
BYTE
*
)(
len
+
1
)
+
*
len
);
}
if
(
sane
)
{
/* Sanity-check length of proxy bypass string */
if
((
BYTE
*
)
len
-
buf
+
*
len
<=
size
)
{
info
->
lpszProxyBypass
=
GlobalAlloc
(
0
,
(
*
len
+
1
)
*
sizeof
(
WCHAR
)
);
if
(
info
->
lpszProxyBypass
)
copy_char_to_wchar_sz
(
(
BYTE
*
)(
len
+
1
),
*
len
,
(
LPWSTR
)
info
->
lpszProxyBypass
);
}
else
{
sane
=
FALSE
;
GlobalFree
(
(
LPWSTR
)
info
->
lpszProxy
);
info
->
lpszProxy
=
NULL
;
}
}
if
(
sane
)
{
direct
=
FALSE
;
info
->
dwAccessType
=
WINHTTP_ACCESS_TYPE_NAMED_PROXY
;
}
}
}
heap_free
(
buf
);
}
}
RegCloseKey
(
key
);
}
if
(
direct
)
{
info
->
dwAccessType
=
WINHTTP_ACCESS_TYPE_NO_PROXY
;
info
->
lpszProxy
=
NULL
;
info
->
lpszProxyBypass
=
NULL
;
}
return
TRUE
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment