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
3b4ca69e
Commit
3b4ca69e
authored
Mar 02, 2008
by
Jacek Caban
Committed by
Alexandre Julliard
Mar 03, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wininet: Move InternetReadFile to vtbl.
parent
9a5c0461
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
77 additions
and
23 deletions
+77
-23
ftp.c
dlls/wininet/ftp.c
+18
-0
http.c
dlls/wininet/http.c
+42
-0
internet.c
dlls/wininet/internet.c
+16
-23
internet.h
dlls/wininet/internet.h
+1
-0
No files found.
dlls/wininet/ftp.c
View file @
3b4ca69e
...
...
@@ -1174,6 +1174,21 @@ static void FTPFILE_Destroy(WININETHANDLEHEADER *hdr)
HeapFree
(
GetProcessHeap
(),
0
,
lpwh
);
}
static
DWORD
FTPFILE_ReadFile
(
WININETHANDLEHEADER
*
hdr
,
void
*
buffer
,
DWORD
size
,
DWORD
*
read
)
{
WININETFTPFILE
*
file
=
(
WININETFTPFILE
*
)
hdr
;
int
res
;
if
(
file
->
nDataSocket
==
-
1
)
return
ERROR_INTERNET_DISCONNECTED
;
/* FIXME: FTP should use NETCON_ stuff */
res
=
recv
(
file
->
nDataSocket
,
buffer
,
size
,
MSG_WAITALL
);
*
read
=
res
>
0
?
res
:
0
;
return
res
>=
0
?
ERROR_SUCCESS
:
INTERNET_ERROR_BASE
;
/* FIXME*/
}
static
BOOL
FTPFILE_WriteFile
(
WININETHANDLEHEADER
*
hdr
,
const
void
*
buffer
,
DWORD
size
,
DWORD
*
written
)
{
LPWININETFTPFILE
lpwh
=
(
LPWININETFTPFILE
)
hdr
;
...
...
@@ -1189,6 +1204,7 @@ static const HANDLEHEADERVtbl FTPFILEVtbl = {
FTPFILE_Destroy
,
NULL
,
NULL
,
FTPFILE_ReadFile
,
FTPFILE_WriteFile
,
NULL
,
NULL
...
...
@@ -2111,6 +2127,7 @@ static const HANDLEHEADERVtbl FTPSESSIONVtbl = {
NULL
,
NULL
,
NULL
,
NULL
,
NULL
};
...
...
@@ -3197,6 +3214,7 @@ static const HANDLEHEADERVtbl FTPFINDNEXTVtbl = {
NULL
,
NULL
,
NULL
,
NULL
,
FTPFINDNEXT_FindNextFileW
};
...
...
dlls/wininet/http.c
View file @
3b4ca69e
...
...
@@ -1410,6 +1410,46 @@ static DWORD HTTPREQ_SetOption(WININETHANDLEHEADER *hdr, DWORD option, void *buf
return
ERROR_INTERNET_INVALID_OPTION
;
}
DWORD
HTTPREQ_Read
(
WININETHTTPREQW
*
req
,
void
*
buffer
,
DWORD
size
,
DWORD
*
read
,
BOOL
sync
)
{
int
bytes_read
;
if
(
!
NETCON_recv
(
&
req
->
netConnection
,
buffer
,
min
(
size
,
req
->
dwContentLength
-
req
->
dwContentRead
),
sync
?
MSG_WAITALL
:
0
,
&
bytes_read
))
{
if
(
req
->
dwContentLength
!=
-
1
&&
req
->
dwContentRead
!=
req
->
dwContentLength
)
ERR
(
"not all data received %d/%d
\n
"
,
req
->
dwContentRead
,
req
->
dwContentLength
);
/* always returns TRUE, even if the network layer returns an
* error */
*
read
=
0
;
HTTP_FinishedReading
(
req
);
return
ERROR_SUCCESS
;
}
req
->
dwContentRead
+=
bytes_read
;
*
read
=
bytes_read
;
if
(
req
->
lpszCacheFile
)
{
BOOL
res
;
res
=
WriteFile
(
req
->
hCacheFile
,
buffer
,
bytes_read
,
NULL
,
NULL
);
if
(
!
res
)
WARN
(
"WriteFile failed: %u
\n
"
,
GetLastError
());
}
if
(
!
bytes_read
&&
(
req
->
dwContentRead
==
req
->
dwContentLength
))
HTTP_FinishedReading
(
req
);
return
ERROR_SUCCESS
;
}
static
DWORD
HTTPREQ_ReadFile
(
WININETHANDLEHEADER
*
hdr
,
void
*
buffer
,
DWORD
size
,
DWORD
*
read
)
{
WININETHTTPREQW
*
req
=
(
WININETHTTPREQW
*
)
hdr
;
return
HTTPREQ_Read
(
req
,
buffer
,
size
,
read
,
TRUE
);
}
static
BOOL
HTTPREQ_WriteFile
(
WININETHANDLEHEADER
*
hdr
,
const
void
*
buffer
,
DWORD
size
,
DWORD
*
written
)
{
LPWININETHTTPREQW
lpwhr
=
(
LPWININETHTTPREQW
)
hdr
;
...
...
@@ -1471,6 +1511,7 @@ static const HANDLEHEADERVtbl HTTPREQVtbl = {
HTTPREQ_Destroy
,
HTTPREQ_CloseConnection
,
HTTPREQ_SetOption
,
HTTPREQ_ReadFile
,
HTTPREQ_WriteFile
,
HTTPREQ_QueryDataAvailable
,
NULL
...
...
@@ -2999,6 +3040,7 @@ static const HANDLEHEADERVtbl HTTPSESSIONVtbl = {
NULL
,
NULL
,
NULL
,
NULL
,
NULL
};
...
...
dlls/wininet/internet.c
View file @
3b4ca69e
...
...
@@ -477,6 +477,7 @@ static const HANDLEHEADERVtbl APPINFOVtbl = {
NULL
,
NULL
,
NULL
,
NULL
,
NULL
};
...
...
@@ -1703,11 +1704,9 @@ BOOL INTERNET_ReadFile(LPWININETHANDLEHEADER lpwh, LPVOID lpBuffer,
DWORD
dwNumOfBytesToRead
,
LPDWORD
pdwNumOfBytesRead
,
BOOL
bWait
)
{
BOOL
retval
=
FALSE
;
int
nSocket
=
-
1
;
int
bytes_read
;
LPWININETHTTPREQW
lpwhr
;
/* FIXME: this should use NETCON functions! */
switch
(
lpwh
->
htype
)
{
case
WH_HHTTPREQ
:
...
...
@@ -1749,17 +1748,6 @@ BOOL INTERNET_ReadFile(LPWININETHANDLEHEADER lpwh, LPVOID lpBuffer,
}
break
;
case
WH_HFILE
:
/* FIXME: FTP should use NETCON_ stuff */
nSocket
=
((
LPWININETFTPFILE
)
lpwh
)
->
nDataSocket
;
if
(
nSocket
!=
-
1
)
{
int
res
=
recv
(
nSocket
,
lpBuffer
,
dwNumOfBytesToRead
,
bWait
?
MSG_WAITALL
:
0
);
retval
=
(
res
>=
0
);
*
pdwNumOfBytesRead
=
retval
?
res
:
0
;
}
break
;
default:
break
;
}
...
...
@@ -1778,25 +1766,30 @@ BOOL INTERNET_ReadFile(LPWININETHANDLEHEADER lpwh, LPVOID lpBuffer,
*
*/
BOOL
WINAPI
InternetReadFile
(
HINTERNET
hFile
,
LPVOID
lpBuffer
,
DWORD
dwNumOfBytesToRead
,
LPDWORD
pdwNumOfBytesRead
)
DWORD
dwNumOfBytesToRead
,
LPDWORD
pdwNumOfBytesRead
)
{
LPWININETHANDLEHEADER
lpwh
;
BOOL
retval
;
LPWININETHANDLEHEADER
hdr
;
DWORD
res
=
ERROR_INTERNET_INCORRECT_HANDLE_TYPE
;
TRACE
(
"%p %p %d %p
\n
"
,
hFile
,
lpBuffer
,
dwNumOfBytesToRead
,
pdwNumOfBytesRead
);
lpwh
=
WININET_GetObject
(
hFile
);
if
(
!
lpwh
)
{
hdr
=
WININET_GetObject
(
hFile
);
if
(
!
hdr
)
{
INTERNET_SetLastError
(
ERROR_INVALID_HANDLE
);
return
FALSE
;
}
retval
=
INTERNET_ReadFile
(
lpwh
,
lpBuffer
,
dwNumOfBytesToRead
,
pdwNumOfBytesRead
,
TRUE
);
WININET_Release
(
lpwh
);
if
(
hdr
->
vtbl
->
ReadFile
)
res
=
hdr
->
vtbl
->
ReadFile
(
hdr
,
lpBuffer
,
dwNumOfBytesToRead
,
pdwNumOfBytesRead
);
TRACE
(
"-- %s (bytes read: %d)
\n
"
,
retval
?
"TRUE"
:
"FALSE"
,
pdwNumOfBytesRead
?
*
pdwNumOfBytesRead
:
-
1
);
return
retval
;
WININET_Release
(
hdr
);
TRACE
(
"-- %s (%u) (bytes read: %d)
\n
"
,
res
==
ERROR_SUCCESS
?
"TRUE"
:
"FALSE"
,
res
,
pdwNumOfBytesRead
?
*
pdwNumOfBytesRead
:
-
1
);
if
(
res
!=
ERROR_SUCCESS
)
SetLastError
(
res
);
return
res
==
ERROR_SUCCESS
;
}
/***********************************************************************
...
...
dlls/wininet/internet.h
View file @
3b4ca69e
...
...
@@ -139,6 +139,7 @@ typedef struct {
void
(
*
Destroy
)(
WININETHANDLEHEADER
*
);
void
(
*
CloseConnection
)(
WININETHANDLEHEADER
*
);
DWORD
(
*
SetOption
)(
WININETHANDLEHEADER
*
,
DWORD
,
void
*
,
DWORD
);
DWORD
(
*
ReadFile
)(
WININETHANDLEHEADER
*
,
void
*
,
DWORD
,
DWORD
*
);
BOOL
(
*
WriteFile
)(
WININETHANDLEHEADER
*
,
const
void
*
,
DWORD
,
DWORD
*
);
DWORD
(
*
QueryDataAvailable
)(
WININETHANDLEHEADER
*
,
DWORD
*
,
DWORD
,
DWORD_PTR
);
DWORD
(
*
FindNextFileW
)(
WININETHANDLEHEADER
*
,
void
*
);
...
...
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