Rebase against 01bacebba418bf6f58a644b1aab41be215bd200a.

This commit is contained in:
Zebediah Figura
2020-09-11 23:05:50 -05:00
parent d34ff18679
commit 7fc716aa5f
12 changed files with 26 additions and 358 deletions

View File

@@ -1,21 +1,21 @@
From 9565c624d9d70dc5433a89be22ea14ae58e52d28 Mon Sep 17 00:00:00 2001
From 89a20d7e379e9be6da4230e303b830d190ab1b2c Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Thu, 16 Jan 2014 19:08:30 -0700
Subject: [PATCH] ws2_32: Add support for TF_REUSE_SOCKET to TransmitFile.
---
dlls/ws2_32/socket.c | 13 +++++++++-
dlls/ws2_32/socket.c | 13 ++++++++-
dlls/ws2_32/tests/sock.c | 1 -
include/winsock.h | 1 +
server/protocol.def | 6 +++++
server/sock.c | 63 ++++++++++++++++++++++++++++++++++++++++++------
server/protocol.def | 6 ++++
server/sock.c | 63 +++++++++++++++++++++++++++++++++++-----
5 files changed, 74 insertions(+), 10 deletions(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index 6be4324..3cdd76b 100644
index fed5329b37a..ee449cce581 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -3103,6 +3103,17 @@ static NTSTATUS WS2_transmitfile_base( int fd, struct ws2_transmitfile_async *ws
@@ -3147,6 +3147,17 @@ static NTSTATUS WS2_transmitfile_base( int fd, struct ws2_transmitfile_async *ws
if (status != STATUS_SUCCESS)
return status;
@@ -33,7 +33,7 @@ index 6be4324..3cdd76b 100644
if (wsa->flags & TF_DISCONNECT)
{
/* we can't use WS_closesocket because it modifies the last error */
@@ -3145,7 +3156,7 @@ static BOOL WINAPI WS2_TransmitFile( SOCKET s, HANDLE h, DWORD file_bytes, DWORD
@@ -3189,7 +3200,7 @@ static BOOL WINAPI WS2_TransmitFile( SOCKET s, HANDLE h, DWORD file_bytes, DWORD
LPOVERLAPPED overlapped, LPTRANSMIT_FILE_BUFFERS buffers,
DWORD flags )
{
@@ -43,10 +43,10 @@ index 6be4324..3cdd76b 100644
socklen_t uaddrlen = sizeof(uaddr);
struct ws2_transmitfile_async *wsa;
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index dbcb2b2..c14f5f9 100644
index 3d338741e0e..492d68e037c 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -9095,7 +9095,6 @@ static void test_TransmitFile(void)
@@ -8874,7 +8874,6 @@ static void test_TransmitFile(void)
err, WSAENOTSOCK);
/* Test TransmitFile with a UDP datagram socket */
@@ -55,10 +55,10 @@ index dbcb2b2..c14f5f9 100644
bret = pTransmitFile(client, NULL, 0, 0, NULL, NULL, 0);
err = WSAGetLastError();
diff --git a/include/winsock.h b/include/winsock.h
index 789e1da..86ce4ff 100644
index a8bb35a4c41..42d8f751094 100644
--- a/include/winsock.h
+++ b/include/winsock.h
@@ -829,6 +829,7 @@ typedef struct WS(WSAData)
@@ -835,6 +835,7 @@ typedef struct WS(WSAData)
/* internal per-socket flags */
#ifdef __WINESRC__
@@ -67,10 +67,10 @@ index 789e1da..86ce4ff 100644
#define FD_WINE_NONBLOCKING 0x20000000
#define FD_WINE_CONNECTED 0x40000000
diff --git a/server/protocol.def b/server/protocol.def
index 8795c67..94c1535 100644
index 92290af701c..77b823caad8 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -1382,6 +1382,12 @@ enum server_fd_type
@@ -1410,6 +1410,12 @@ enum server_fd_type
@END
@@ -84,7 +84,7 @@ index 8795c67..94c1535 100644
@REQ(set_socket_event)
obj_handle_t handle; /* handle to the socket */
diff --git a/server/sock.c b/server/sock.c
index 77c3db8..8b85e59 100644
index 1a53ce4b091..03e4ca2eec5 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -86,6 +86,7 @@
@@ -103,16 +103,16 @@ index 77c3db8..8b85e59 100644
static int sock_get_ntstatus( int err );
static unsigned int sock_get_error( int err );
@@ -157,7 +159,7 @@ static const struct object_ops sock_ops =
@@ -155,7 +157,7 @@ static const struct object_ops sock_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
no_alloc_handle, /* alloc_handle */
- fd_close_handle, /* close_handle */
+ sock_close_handle, /* close_handle */
sock_destroy /* destroy */
};
@@ -609,6 +611,46 @@ static struct fd *sock_get_fd( struct object *obj )
@@ -607,6 +609,46 @@ static struct fd *sock_get_fd( struct object *obj )
return (struct fd *)grab_object( sock->fd );
}
@@ -159,7 +159,7 @@ index 77c3db8..8b85e59 100644
static void sock_destroy( struct object *obj )
{
struct sock *sock = (struct sock *)obj;
@@ -662,14 +704,8 @@ static struct object *create_socket( int family, int type, int protocol, unsigne
@@ -660,14 +702,8 @@ static struct object *create_socket( int family, int type, int protocol, unsigne
struct sock *sock;
int sockfd;
@@ -175,7 +175,7 @@ index 77c3db8..8b85e59 100644
if (!(sock = alloc_object( &sock_ops )))
{
close( sockfd );
@@ -1222,6 +1258,17 @@ DECL_HANDLER(accept_into_socket)
@@ -1218,6 +1254,17 @@ DECL_HANDLER(accept_into_socket)
release_object( sock );
}
@@ -194,5 +194,5 @@ index 77c3db8..8b85e59 100644
DECL_HANDLER(set_socket_event)
{
--
1.9.1
2.28.0

View File

@@ -1,2 +1 @@
# Fixes: [5048] Support for TransmitFile
Depends: server-Desktop_Refcount