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
7243156b
Commit
7243156b
authored
Mar 01, 2011
by
Juan Lang
Committed by
Alexandre Julliard
Mar 02, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wininet: De-Hungarian appinfo member names.
parent
2c6ad546
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
66 additions
and
66 deletions
+66
-66
dialogs.c
dlls/wininet/dialogs.c
+5
-5
ftp.c
dlls/wininet/ftp.c
+3
-3
http.c
dlls/wininet/http.c
+13
-13
internet.c
dlls/wininet/internet.c
+39
-39
internet.h
dlls/wininet/internet.h
+6
-6
No files found.
dlls/wininet/dialogs.c
View file @
7243156b
...
...
@@ -82,7 +82,7 @@ static BOOL WININET_GetProxyServer( HINTERNET hRequest, LPWSTR szBuf, DWORD sz )
if
(
NULL
==
hIC
)
goto
done
;
lstrcpynW
(
szBuf
,
hIC
->
lpszP
roxy
,
sz
);
lstrcpynW
(
szBuf
,
hIC
->
p
roxy
,
sz
);
/* FIXME: perhaps it would be better to use InternetCrackUrl here */
p
=
strchrW
(
szBuf
,
':'
);
...
...
@@ -272,11 +272,11 @@ static BOOL WININET_SetAuthorization( HINTERNET hRequest, LPWSTR username,
{
appinfo_t
*
hIC
=
session
->
lpAppInfo
;
HeapFree
(
GetProcessHeap
(),
0
,
hIC
->
lpszP
roxyUsername
);
hIC
->
lpszP
roxyUsername
=
p
;
HeapFree
(
GetProcessHeap
(),
0
,
hIC
->
p
roxyUsername
);
hIC
->
p
roxyUsername
=
p
;
HeapFree
(
GetProcessHeap
(),
0
,
hIC
->
lpszP
roxyPassword
);
hIC
->
lpszP
roxyPassword
=
q
;
HeapFree
(
GetProcessHeap
(),
0
,
hIC
->
p
roxyPassword
);
hIC
->
p
roxyPassword
=
q
;
}
else
{
...
...
dlls/wininet/ftp.c
View file @
7243156b
...
...
@@ -2478,10 +2478,10 @@ HINTERNET FTP_Connect(appinfo_t *hIC, LPCWSTR lpszServerName,
lpwfs
->
lpAppInfo
=
hIC
;
list_add_head
(
&
hIC
->
hdr
.
children
,
&
lpwfs
->
hdr
.
entry
);
if
(
hIC
->
lpszProxy
&&
hIC
->
dwA
ccessType
==
INTERNET_OPEN_TYPE_PROXY
)
{
if
(
strchrW
(
hIC
->
lpszP
roxy
,
' '
))
if
(
hIC
->
proxy
&&
hIC
->
a
ccessType
==
INTERNET_OPEN_TYPE_PROXY
)
{
if
(
strchrW
(
hIC
->
p
roxy
,
' '
))
FIXME
(
"Several proxies not implemented.
\n
"
);
if
(
hIC
->
lpszP
roxyBypass
)
if
(
hIC
->
p
roxyBypass
)
FIXME
(
"Proxy bypass is ignored.
\n
"
);
}
if
(
!
lpszUserName
||
!
strlenW
(
lpszUserName
))
{
...
...
dlls/wininet/http.c
View file @
7243156b
...
...
@@ -1464,7 +1464,7 @@ static BOOL HTTP_DealWithProxy(appinfo_t *hIC, http_session_t *session, http_req
UrlComponents
.
lpszHostName
=
buf
;
UrlComponents
.
dwHostNameLength
=
MAXHOSTNAME
;
if
(
!
INTERNET_FindProxyForProtocol
(
hIC
->
lpszP
roxy
,
protoHttp
,
protoProxy
,
&
protoProxyLen
))
if
(
!
INTERNET_FindProxyForProtocol
(
hIC
->
p
roxy
,
protoHttp
,
protoProxy
,
&
protoProxyLen
))
return
FALSE
;
if
(
CSTR_EQUAL
!=
CompareStringW
(
LOCALE_SYSTEM_DEFAULT
,
NORM_IGNORECASE
,
protoProxy
,
strlenW
(
szHttp
),
szHttp
,
strlenW
(
szHttp
))
)
...
...
@@ -1671,7 +1671,7 @@ static DWORD HTTPREQ_QueryOption(object_header_t *hdr, DWORD option, void *buffe
info
->
Flags
=
0
;
if
(
HTTP_KeepAlive
(
req
))
info
->
Flags
|=
IDSI_FLAG_KEEP_ALIVE
;
if
(
session
->
lpAppInfo
->
lpszProxy
&&
session
->
lpAppInfo
->
lpszP
roxy
[
0
]
!=
0
)
if
(
session
->
lpAppInfo
->
proxy
&&
session
->
lpAppInfo
->
p
roxy
[
0
]
!=
0
)
info
->
Flags
|=
IDSI_FLAG_PROXY
;
if
(
req
->
netConnection
.
useSSL
)
info
->
Flags
|=
IDSI_FLAG_SECURE
;
...
...
@@ -2662,7 +2662,7 @@ static DWORD HTTP_HttpOpenRequestW(http_session_t *session,
INTERNET_DEFAULT_HTTPS_PORT
:
INTERNET_DEFAULT_HTTP_PORT
);
if
(
NULL
!=
hIC
->
lpszProxy
&&
hIC
->
lpszP
roxy
[
0
]
!=
0
)
if
(
NULL
!=
hIC
->
proxy
&&
hIC
->
p
roxy
[
0
]
!=
0
)
HTTP_DealWithProxy
(
hIC
,
session
,
request
);
INTERNET_SendCallback
(
&
session
->
hdr
,
dwContext
,
...
...
@@ -3318,7 +3318,7 @@ static DWORD HTTP_HandleRedirect(http_request_t *request, LPCWSTR lpszUrl)
{
http_session_t
*
session
=
request
->
lpHttpSession
;
appinfo_t
*
hIC
=
session
->
lpAppInfo
;
BOOL
using_proxy
=
hIC
->
lpszProxy
&&
hIC
->
lpszP
roxy
[
0
];
BOOL
using_proxy
=
hIC
->
proxy
&&
hIC
->
p
roxy
[
0
];
WCHAR
path
[
INTERNET_MAX_URL_LENGTH
];
int
index
;
...
...
@@ -3607,15 +3607,15 @@ static DWORD HTTP_HttpSendRequestW(http_request_t *request, LPCWSTR lpszHeaders,
HTTP_HttpAddRequestHeadersW
(
request
,
contentLengthStr
,
-
1L
,
HTTP_ADDREQ_FLAG_REPLACE
);
request
->
dwBytesToWrite
=
dwContentLength
;
}
if
(
request
->
lpHttpSession
->
lpAppInfo
->
lpszA
gent
)
if
(
request
->
lpHttpSession
->
lpAppInfo
->
a
gent
)
{
WCHAR
*
agent_header
;
static
const
WCHAR
user_agent
[]
=
{
'U'
,
's'
,
'e'
,
'r'
,
'-'
,
'A'
,
'g'
,
'e'
,
'n'
,
't'
,
':'
,
' '
,
'%'
,
's'
,
'\r'
,
'\n'
,
0
};
int
len
;
len
=
strlenW
(
request
->
lpHttpSession
->
lpAppInfo
->
lpszA
gent
)
+
strlenW
(
user_agent
);
len
=
strlenW
(
request
->
lpHttpSession
->
lpAppInfo
->
a
gent
)
+
strlenW
(
user_agent
);
agent_header
=
HeapAlloc
(
GetProcessHeap
(),
0
,
len
*
sizeof
(
WCHAR
));
sprintfW
(
agent_header
,
user_agent
,
request
->
lpHttpSession
->
lpAppInfo
->
lpszA
gent
);
sprintfW
(
agent_header
,
user_agent
,
request
->
lpHttpSession
->
lpAppInfo
->
a
gent
);
HTTP_HttpAddRequestHeadersW
(
request
,
agent_header
,
strlenW
(
agent_header
),
HTTP_ADDREQ_FLAG_ADD_IF_NEW
);
HeapFree
(
GetProcessHeap
(),
0
,
agent_header
);
...
...
@@ -3673,7 +3673,7 @@ static DWORD HTTP_HttpSendRequestW(http_request_t *request, LPCWSTR lpszHeaders,
HTTP_ADDREQ_FLAG_ADD
|
HTTP_ADDHDR_FLAG_REPLACE
);
}
if
(
request
->
lpHttpSession
->
lpAppInfo
->
lpszProxy
&&
request
->
lpHttpSession
->
lpAppInfo
->
lpszP
roxy
[
0
])
if
(
request
->
lpHttpSession
->
lpAppInfo
->
proxy
&&
request
->
lpHttpSession
->
lpAppInfo
->
p
roxy
[
0
])
{
WCHAR
*
url
=
HTTP_BuildProxyRequestUrl
(
request
);
requestString
=
HTTP_BuildHeaderRequestString
(
request
,
request
->
lpszVerb
,
url
,
request
->
lpszVersion
);
...
...
@@ -3818,8 +3818,8 @@ static DWORD HTTP_HttpSendRequestW(http_request_t *request, LPCWSTR lpszHeaders,
{
if
(
HTTP_DoAuthorization
(
request
,
szAuthValue
,
&
request
->
pProxyAuthInfo
,
request
->
lpHttpSession
->
lpAppInfo
->
lpszP
roxyUsername
,
request
->
lpHttpSession
->
lpAppInfo
->
lpszP
roxyPassword
,
request
->
lpHttpSession
->
lpAppInfo
->
p
roxyUsername
,
request
->
lpHttpSession
->
lpAppInfo
->
p
roxyPassword
,
NULL
))
{
loop_next
=
TRUE
;
...
...
@@ -4453,8 +4453,8 @@ DWORD HTTP_Connect(appinfo_t *hIC, LPCWSTR lpszServerName,
session
->
lpAppInfo
=
hIC
;
list_add_head
(
&
hIC
->
hdr
.
children
,
&
session
->
hdr
.
entry
);
if
(
hIC
->
lpszProxy
&&
hIC
->
dwA
ccessType
==
INTERNET_OPEN_TYPE_PROXY
)
{
if
(
hIC
->
lpszP
roxyBypass
)
if
(
hIC
->
proxy
&&
hIC
->
a
ccessType
==
INTERNET_OPEN_TYPE_PROXY
)
{
if
(
hIC
->
p
roxyBypass
)
FIXME
(
"Proxy bypass is ignored.
\n
"
);
}
session
->
lpszServerName
=
heap_strdupW
(
lpszServerName
);
...
...
@@ -4562,7 +4562,7 @@ static DWORD HTTP_OpenConnection(http_request_t *request)
* behaviour to be more correct and to not cause any incompatibilities
* because using a secure connection through a proxy server is a rare
* case that would be hard for anyone to depend on */
if
(
hIC
->
lpszP
roxy
&&
(
res
=
HTTP_SecureProxyConnect
(
request
))
!=
ERROR_SUCCESS
)
{
if
(
hIC
->
p
roxy
&&
(
res
=
HTTP_SecureProxyConnect
(
request
))
!=
ERROR_SUCCESS
)
{
HTTPREQ_CloseConnection
(
&
request
->
hdr
);
goto
lend
;
}
...
...
dlls/wininet/internet.c
View file @
7243156b
...
...
@@ -603,12 +603,12 @@ static BOOL INTERNET_ConfigureProxy( appinfo_t *lpwai )
if
(
wpi
.
dwProxyEnabled
)
{
lpwai
->
dwA
ccessType
=
INTERNET_OPEN_TYPE_PROXY
;
lpwai
->
lpszP
roxy
=
wpi
.
lpszProxyServer
;
lpwai
->
a
ccessType
=
INTERNET_OPEN_TYPE_PROXY
;
lpwai
->
p
roxy
=
wpi
.
lpszProxyServer
;
return
TRUE
;
}
lpwai
->
dwA
ccessType
=
INTERNET_OPEN_TYPE_DIRECT
;
lpwai
->
a
ccessType
=
INTERNET_OPEN_TYPE_DIRECT
;
return
FALSE
;
}
...
...
@@ -681,11 +681,11 @@ static VOID APPINFO_Destroy(object_header_t *hdr)
TRACE
(
"%p
\n
"
,
lpwai
);
HeapFree
(
GetProcessHeap
(),
0
,
lpwai
->
lpszA
gent
);
HeapFree
(
GetProcessHeap
(),
0
,
lpwai
->
lpszP
roxy
);
HeapFree
(
GetProcessHeap
(),
0
,
lpwai
->
lpszP
roxyBypass
);
HeapFree
(
GetProcessHeap
(),
0
,
lpwai
->
lpszP
roxyUsername
);
HeapFree
(
GetProcessHeap
(),
0
,
lpwai
->
lpszP
roxyPassword
);
HeapFree
(
GetProcessHeap
(),
0
,
lpwai
->
a
gent
);
HeapFree
(
GetProcessHeap
(),
0
,
lpwai
->
p
roxy
);
HeapFree
(
GetProcessHeap
(),
0
,
lpwai
->
p
roxyBypass
);
HeapFree
(
GetProcessHeap
(),
0
,
lpwai
->
p
roxyUsername
);
HeapFree
(
GetProcessHeap
(),
0
,
lpwai
->
p
roxyPassword
);
}
static
DWORD
APPINFO_QueryOption
(
object_header_t
*
hdr
,
DWORD
option
,
void
*
buffer
,
DWORD
*
size
,
BOOL
unicode
)
...
...
@@ -711,14 +711,14 @@ static DWORD APPINFO_QueryOption(object_header_t *hdr, DWORD option, void *buffe
bufsize
=
*
size
;
if
(
unicode
)
{
DWORD
len
=
ai
->
lpszAgent
?
strlenW
(
ai
->
lpszA
gent
)
:
0
;
DWORD
len
=
ai
->
agent
?
strlenW
(
ai
->
a
gent
)
:
0
;
*
size
=
(
len
+
1
)
*
sizeof
(
WCHAR
);
if
(
!
buffer
||
bufsize
<
*
size
)
return
ERROR_INSUFFICIENT_BUFFER
;
if
(
ai
->
lpszA
gent
)
strcpyW
(
buffer
,
ai
->
lpszA
gent
);
if
(
ai
->
a
gent
)
strcpyW
(
buffer
,
ai
->
a
gent
);
else
*
(
WCHAR
*
)
buffer
=
0
;
/* If the buffer is copied, the returned length doesn't include
...
...
@@ -726,15 +726,15 @@ static DWORD APPINFO_QueryOption(object_header_t *hdr, DWORD option, void *buffe
*/
*
size
=
len
*
sizeof
(
WCHAR
);
}
else
{
if
(
ai
->
lpszA
gent
)
*
size
=
WideCharToMultiByte
(
CP_ACP
,
0
,
ai
->
lpszA
gent
,
-
1
,
NULL
,
0
,
NULL
,
NULL
);
if
(
ai
->
a
gent
)
*
size
=
WideCharToMultiByte
(
CP_ACP
,
0
,
ai
->
a
gent
,
-
1
,
NULL
,
0
,
NULL
,
NULL
);
else
*
size
=
1
;
if
(
!
buffer
||
bufsize
<
*
size
)
return
ERROR_INSUFFICIENT_BUFFER
;
if
(
ai
->
lpszA
gent
)
WideCharToMultiByte
(
CP_ACP
,
0
,
ai
->
lpszA
gent
,
-
1
,
buffer
,
*
size
,
NULL
,
NULL
);
if
(
ai
->
a
gent
)
WideCharToMultiByte
(
CP_ACP
,
0
,
ai
->
a
gent
,
-
1
,
buffer
,
*
size
,
NULL
,
NULL
);
else
*
(
char
*
)
buffer
=
0
;
/* If the buffer is copied, the returned length doesn't include
...
...
@@ -752,10 +752,10 @@ static DWORD APPINFO_QueryOption(object_header_t *hdr, DWORD option, void *buffe
DWORD
proxyBytesRequired
=
0
,
proxyBypassBytesRequired
=
0
;
LPWSTR
proxy
,
proxy_bypass
;
if
(
ai
->
lpszP
roxy
)
proxyBytesRequired
=
(
lstrlenW
(
ai
->
lpszP
roxy
)
+
1
)
*
sizeof
(
WCHAR
);
if
(
ai
->
lpszP
roxyBypass
)
proxyBypassBytesRequired
=
(
lstrlenW
(
ai
->
lpszP
roxyBypass
)
+
1
)
*
sizeof
(
WCHAR
);
if
(
ai
->
p
roxy
)
proxyBytesRequired
=
(
lstrlenW
(
ai
->
p
roxy
)
+
1
)
*
sizeof
(
WCHAR
);
if
(
ai
->
p
roxyBypass
)
proxyBypassBytesRequired
=
(
lstrlenW
(
ai
->
p
roxyBypass
)
+
1
)
*
sizeof
(
WCHAR
);
if
(
*
size
<
sizeof
(
INTERNET_PROXY_INFOW
)
+
proxyBytesRequired
+
proxyBypassBytesRequired
)
{
*
size
=
sizeof
(
INTERNET_PROXY_INFOW
)
+
proxyBytesRequired
+
proxyBypassBytesRequired
;
...
...
@@ -764,16 +764,16 @@ static DWORD APPINFO_QueryOption(object_header_t *hdr, DWORD option, void *buffe
proxy
=
(
LPWSTR
)((
LPBYTE
)
buffer
+
sizeof
(
INTERNET_PROXY_INFOW
));
proxy_bypass
=
(
LPWSTR
)((
LPBYTE
)
buffer
+
sizeof
(
INTERNET_PROXY_INFOW
)
+
proxyBytesRequired
);
pi
->
dwAccessType
=
ai
->
dwA
ccessType
;
pi
->
dwAccessType
=
ai
->
a
ccessType
;
pi
->
lpszProxy
=
NULL
;
pi
->
lpszProxyBypass
=
NULL
;
if
(
ai
->
lpszP
roxy
)
{
lstrcpyW
(
proxy
,
ai
->
lpszP
roxy
);
if
(
ai
->
p
roxy
)
{
lstrcpyW
(
proxy
,
ai
->
p
roxy
);
pi
->
lpszProxy
=
proxy
;
}
if
(
ai
->
lpszP
roxyBypass
)
{
lstrcpyW
(
proxy_bypass
,
ai
->
lpszP
roxyBypass
);
if
(
ai
->
p
roxyBypass
)
{
lstrcpyW
(
proxy_bypass
,
ai
->
p
roxyBypass
);
pi
->
lpszProxyBypass
=
proxy_bypass
;
}
...
...
@@ -784,10 +784,10 @@ static DWORD APPINFO_QueryOption(object_header_t *hdr, DWORD option, void *buffe
DWORD
proxyBytesRequired
=
0
,
proxyBypassBytesRequired
=
0
;
LPSTR
proxy
,
proxy_bypass
;
if
(
ai
->
lpszP
roxy
)
proxyBytesRequired
=
WideCharToMultiByte
(
CP_ACP
,
0
,
ai
->
lpszP
roxy
,
-
1
,
NULL
,
0
,
NULL
,
NULL
);
if
(
ai
->
lpszP
roxyBypass
)
proxyBypassBytesRequired
=
WideCharToMultiByte
(
CP_ACP
,
0
,
ai
->
lpszP
roxyBypass
,
-
1
,
if
(
ai
->
p
roxy
)
proxyBytesRequired
=
WideCharToMultiByte
(
CP_ACP
,
0
,
ai
->
p
roxy
,
-
1
,
NULL
,
0
,
NULL
,
NULL
);
if
(
ai
->
p
roxyBypass
)
proxyBypassBytesRequired
=
WideCharToMultiByte
(
CP_ACP
,
0
,
ai
->
p
roxyBypass
,
-
1
,
NULL
,
0
,
NULL
,
NULL
);
if
(
*
size
<
sizeof
(
INTERNET_PROXY_INFOA
)
+
proxyBytesRequired
+
proxyBypassBytesRequired
)
{
...
...
@@ -797,16 +797,16 @@ static DWORD APPINFO_QueryOption(object_header_t *hdr, DWORD option, void *buffe
proxy
=
(
LPSTR
)((
LPBYTE
)
buffer
+
sizeof
(
INTERNET_PROXY_INFOA
));
proxy_bypass
=
(
LPSTR
)((
LPBYTE
)
buffer
+
sizeof
(
INTERNET_PROXY_INFOA
)
+
proxyBytesRequired
);
pi
->
dwAccessType
=
ai
->
dwA
ccessType
;
pi
->
dwAccessType
=
ai
->
a
ccessType
;
pi
->
lpszProxy
=
NULL
;
pi
->
lpszProxyBypass
=
NULL
;
if
(
ai
->
lpszP
roxy
)
{
WideCharToMultiByte
(
CP_ACP
,
0
,
ai
->
lpszP
roxy
,
-
1
,
proxy
,
proxyBytesRequired
,
NULL
,
NULL
);
if
(
ai
->
p
roxy
)
{
WideCharToMultiByte
(
CP_ACP
,
0
,
ai
->
p
roxy
,
-
1
,
proxy
,
proxyBytesRequired
,
NULL
,
NULL
);
pi
->
lpszProxy
=
proxy
;
}
if
(
ai
->
lpszP
roxyBypass
)
{
WideCharToMultiByte
(
CP_ACP
,
0
,
ai
->
lpszP
roxyBypass
,
-
1
,
proxy_bypass
,
if
(
ai
->
p
roxyBypass
)
{
WideCharToMultiByte
(
CP_ACP
,
0
,
ai
->
p
roxyBypass
,
-
1
,
proxy_bypass
,
proxyBypassBytesRequired
,
NULL
,
NULL
);
pi
->
lpszProxyBypass
=
proxy_bypass
;
}
...
...
@@ -883,16 +883,16 @@ HINTERNET WINAPI InternetOpenW(LPCWSTR lpszAgent, DWORD dwAccessType,
lpwai
->
hdr
.
htype
=
WH_HINIT
;
lpwai
->
hdr
.
dwFlags
=
dwFlags
;
lpwai
->
dwA
ccessType
=
dwAccessType
;
lpwai
->
lpszP
roxyUsername
=
NULL
;
lpwai
->
lpszP
roxyPassword
=
NULL
;
lpwai
->
a
ccessType
=
dwAccessType
;
lpwai
->
p
roxyUsername
=
NULL
;
lpwai
->
p
roxyPassword
=
NULL
;
lpwai
->
lpszA
gent
=
heap_strdupW
(
lpszAgent
);
lpwai
->
a
gent
=
heap_strdupW
(
lpszAgent
);
if
(
dwAccessType
==
INTERNET_OPEN_TYPE_PRECONFIG
)
INTERNET_ConfigureProxy
(
lpwai
);
else
lpwai
->
lpszP
roxy
=
heap_strdupW
(
lpszProxy
);
lpwai
->
lpszP
roxyBypass
=
heap_strdupW
(
lpszProxyBypass
);
lpwai
->
p
roxy
=
heap_strdupW
(
lpszProxy
);
lpwai
->
p
roxyBypass
=
heap_strdupW
(
lpszProxyBypass
);
TRACE
(
"returning %p
\n
"
,
lpwai
);
...
...
dlls/wininet/internet.h
View file @
7243156b
...
...
@@ -220,12 +220,12 @@ struct _object_header_t
typedef
struct
{
object_header_t
hdr
;
LPWSTR
lpszA
gent
;
LPWSTR
lpszP
roxy
;
LPWSTR
lpszP
roxyBypass
;
LPWSTR
lpszP
roxyUsername
;
LPWSTR
lpszP
roxyPassword
;
DWORD
dwA
ccessType
;
LPWSTR
a
gent
;
LPWSTR
p
roxy
;
LPWSTR
p
roxyBypass
;
LPWSTR
p
roxyUsername
;
LPWSTR
p
roxyPassword
;
DWORD
a
ccessType
;
}
appinfo_t
;
...
...
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