Rebase against 35180d368a94156cb77b09560b24d3af428b988b.

This commit is contained in:
Alistair Leslie-Hughes 2021-05-29 13:53:27 +10:00
parent d4e9192632
commit 2ebe0e23aa
6 changed files with 159 additions and 199 deletions

View File

@ -1,46 +0,0 @@
From a4cf8d9241b8dd94937408c9a1d20aacfb9dd2e3 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 28 May 2019 14:37:25 +1000
Subject: [PATCH 2/2] dinput: Improved tracing of Semantic value.
---
dlls/dinput/dinput_main.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/dlls/dinput/dinput_main.c b/dlls/dinput/dinput_main.c
index cf050cb71ed..79ef9620de9 100644
--- a/dlls/dinput/dinput_main.c
+++ b/dlls/dinput/dinput_main.c
@@ -290,6 +290,20 @@ static void _dump_EnumDevices_dwFlags(DWORD dwFlags)
TRACE("\n");
}
+static const char *dump_semantic(DWORD semantic)
+{
+ if((semantic & 0xff000000) == 0xff000000)
+ return "Any AXIS";
+ else if((semantic & 0x82000000) == 0x82000000)
+ return "Mouse";
+ else if((semantic & 0x81000000) == 0x81000000)
+ return "Keybaord";
+ else if((semantic & DIVIRTUAL_FLYING_HELICOPTER) == DIVIRTUAL_FLYING_HELICOPTER)
+ return "Helicopter";
+
+ return "Unknown";
+}
+
static void _dump_diactionformatA(LPDIACTIONFORMATA lpdiActionFormat)
{
unsigned int i;
@@ -312,7 +326,7 @@ static void _dump_diactionformatA(LPDIACTIONFORMATA lpdiActionFormat)
{
TRACE("diaf.rgoAction[%u]:\n", i);
TRACE("\tuAppData=0x%lx\n", lpdiActionFormat->rgoAction[i].uAppData);
- TRACE("\tdwSemantic=0x%08x\n", lpdiActionFormat->rgoAction[i].dwSemantic);
+ TRACE("\tdwSemantic=0x%08x (%s)\n", lpdiActionFormat->rgoAction[i].dwSemantic, dump_semantic(lpdiActionFormat->rgoAction[i].dwSemantic));
TRACE("\tdwFlags=0x%x\n", lpdiActionFormat->rgoAction[i].dwFlags);
TRACE("\tszActionName=%s\n", debugstr_a(lpdiActionFormat->rgoAction[i].u.lptszActionName));
TRACE("\tguidInstance=%s\n", debugstr_guid(&lpdiActionFormat->rgoAction[i].guidInstance));
--
2.20.1

View File

@ -1,17 +1,60 @@
From ed590782f6149f56c0e4c6747cea5a297543047b Mon Sep 17 00:00:00 2001
From c9ecf258a9186bb31a18f8a4728e20bb25b4e9cf Mon Sep 17 00:00:00 2001
From: Jetro Jormalainen <jje-wine@jv.jetro.fi>
Date: Tue, 30 Apr 2019 09:21:24 +1000
Subject: [PATCH] dinput: Support username in Config dialog.
---
dlls/dinput/ansi.c | 26 +++++
dlls/dinput/config.c | 187 ++++++++++++++++++++++++-----------
dlls/dinput/device.c | 2 +-
dlls/dinput/device_private.h | 1 +
dlls/dinput/dinput_main.c | 28 ++++++
4 files changed, 161 insertions(+), 57 deletions(-)
dlls/dinput/dinput_main.c | 1 +
5 files changed, 160 insertions(+), 57 deletions(-)
diff --git a/dlls/dinput/ansi.c b/dlls/dinput/ansi.c
index 431b812aeb2..270fe6f1498 100644
--- a/dlls/dinput/ansi.c
+++ b/dlls/dinput/ansi.c
@@ -840,11 +840,37 @@ static HRESULT WINAPI dinput8_a_ConfigureDevices( IDirectInput8A *iface_a, LPDIC
{
hr = diactionformat_atow( format_a, &format_w, TRUE );
params_w.lprgFormats = &format_w;
+ params_w.dwcUsers = params_a->dwcUsers;
+
+ if (params_a->lptszUserNames) {
+ char *start = params_a->lptszUserNames;
+ WCHAR *to = NULL;
+ int total_len = 0;
+ for (i = 0; i < params_a->dwcUsers; i++)
+ {
+ char *end = start + 1;
+ int len;
+ while (*(end++));
+ len = MultiByteToWideChar(CP_ACP, 0, start, end - start, NULL, 0);
+ total_len += len + 2; /* length of string and two null char */
+ if (to)
+ to = HeapReAlloc(GetProcessHeap(), 0, to, sizeof(WCHAR) * total_len);
+ else
+ to = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR) * total_len);
+
+ MultiByteToWideChar(CP_ACP, 0, start, end - start, to + (total_len - len - 2), len);
+ to[total_len] = 0;
+ to[total_len - 1] = 0;
+ }
+ params_w.lptszUserNames = to;
+ }
if (SUCCEEDED(hr)) hr = IDirectInput8_ConfigureDevices( iface_w, callback, &params_w, flags, ref );
if (!format_w.hInstString) for (i = 0; i < format_w.dwNumActions; ++i) HeapFree( GetProcessHeap(), 0, (void *)format_w.rgoAction[i].lptszActionName );
HeapFree( GetProcessHeap(), 0, format_w.rgoAction );
+ HeapFree( GetProcessHeap(), 0, params_w.lptszUserNames);
+
}
HeapFree( GetProcessHeap(), 0, params_w.lptszUserNames );
diff --git a/dlls/dinput/config.c b/dlls/dinput/config.c
index bf44898589..c7a33d2da0 100644
index bf448985893..c7a33d2da02 100644
--- a/dlls/dinput/config.c
+++ b/dlls/dinput/config.c
@@ -18,17 +18,23 @@
@ -366,10 +409,10 @@ index bf44898589..c7a33d2da0 100644
return DI_OK;
}
diff --git a/dlls/dinput/device.c b/dlls/dinput/device.c
index 6107ab2653..30483fe691 100644
index 05a1dbbb2a1..daaaebdc0d0 100644
--- a/dlls/dinput/device.c
+++ b/dlls/dinput/device.c
@@ -692,7 +692,7 @@ static HKEY get_mapping_key(const WCHAR *device, const WCHAR *username, const WC
@@ -704,7 +704,7 @@ static HKEY get_mapping_key(const WCHAR *device, const WCHAR *username, const WC
return hkey;
}
@ -379,10 +422,10 @@ index 6107ab2653..30483fe691 100644
WCHAR *guid_str = NULL;
DIDEVICEINSTANCEW didev;
diff --git a/dlls/dinput/device_private.h b/dlls/dinput/device_private.h
index ea794d7396..114e3971ed 100644
index 8d3425483c2..a6f22b28bf3 100644
--- a/dlls/dinput/device_private.h
+++ b/dlls/dinput/device_private.h
@@ -125,6 +125,7 @@ extern const char *_dump_dinput_GUID(const GUID *guid) DECLSPEC_HIDDEN;
@@ -132,6 +132,7 @@ extern const char *_dump_dinput_GUID(const GUID *guid) DECLSPEC_HIDDEN;
extern LPDIOBJECTDATAFORMAT dataformat_to_odf_by_type(LPCDIDATAFORMAT df, int n, DWORD type) DECLSPEC_HIDDEN;
@ -391,7 +434,7 @@ index ea794d7396..114e3971ed 100644
extern HRESULT _build_action_map(LPDIRECTINPUTDEVICE8W iface, LPDIACTIONFORMATW lpdiaf, LPCWSTR lpszUserName, DWORD dwFlags, DWORD devMask, LPCDIDATAFORMAT df) DECLSPEC_HIDDEN;
diff --git a/dlls/dinput/dinput_main.c b/dlls/dinput/dinput_main.c
index 0855cb41cd..7af377026c 100644
index 85de9f79b81..2f40bfbca96 100644
--- a/dlls/dinput/dinput_main.c
+++ b/dlls/dinput/dinput_main.c
@@ -39,6 +39,7 @@
@ -402,50 +445,6 @@ index 0855cb41cd..7af377026c 100644
#include "wine/unicode.h"
#include "wine/asm.h"
#include "windef.h"
@@ -1253,9 +1254,34 @@ static HRESULT WINAPI IDirectInput8AImpl_ConfigureDevices(
/* Copy parameters */
diCDParamsW.dwSize = sizeof(DICONFIGUREDEVICESPARAMSW);
+ diCDParamsW.dwcUsers = lpdiCDParams->dwcUsers;
diCDParamsW.dwcFormats = lpdiCDParams->dwcFormats;
diCDParamsW.lprgFormats = &diafW;
diCDParamsW.hwnd = lpdiCDParams->hwnd;
+ diCDParamsW.lptszUserNames = NULL;
+
+ if (lpdiCDParams->lptszUserNames) {
+ char *start = lpdiCDParams->lptszUserNames;
+ WCHAR *to = NULL;
+ int total_len = 0;
+ for (i = 0; i < lpdiCDParams->dwcUsers; i++)
+ {
+ char *end = start + 1;
+ int len;
+ while (*(end++));
+ len = MultiByteToWideChar(CP_ACP, 0, start, end - start, NULL, 0);
+ total_len += len + 2; /* length of string and two null char */
+ if (to)
+ to = HeapReAlloc(GetProcessHeap(), 0, to, sizeof(WCHAR) * total_len);
+ else
+ to = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR) * total_len);
+
+ MultiByteToWideChar(CP_ACP, 0, start, end - start, to + (total_len - len - 2), len);
+ to[total_len] = 0;
+ to[total_len - 1] = 0;
+ }
+ diCDParamsW.lptszUserNames = to;
+ }
diafW.rgoAction = HeapAlloc(GetProcessHeap(), 0, sizeof(DIACTIONW)*lpdiCDParams->lprgFormats->dwNumActions);
_copy_diactionformatAtoW(&diafW, lpdiCDParams->lprgFormats);
@@ -1283,6 +1309,8 @@ static HRESULT WINAPI IDirectInput8AImpl_ConfigureDevices(
HeapFree(GetProcessHeap(), 0, diafW.rgoAction);
+ heap_free((void*) diCDParamsW.lptszUserNames);
+
return hr;
}
--
2.17.1
2.30.2

View File

@ -1,15 +1,15 @@
From ff99f88bc6aabaa9ab5b7e4b44092f39a6079541 Mon Sep 17 00:00:00 2001
From 80eb290cf245dcca259049a5bd948a5632d54608 Mon Sep 17 00:00:00 2001
From: Andrew Church <achurch@achurch.org>
Date: Mon, 25 Feb 2019 11:23:12 +1100
Subject: [PATCH] dinput: Allow reconnecting to disconnected joysticks
Wine-bug: https://bugs.winehq.org/show_bug.cgi?id=34297
---
dlls/dinput/joystick_linuxinput.c | 152 ++++++++++++++++++++++--------
1 file changed, 115 insertions(+), 37 deletions(-)
dlls/dinput/joystick_linuxinput.c | 148 +++++++++++++++++++++++-------
1 file changed, 113 insertions(+), 35 deletions(-)
diff --git a/dlls/dinput/joystick_linuxinput.c b/dlls/dinput/joystick_linuxinput.c
index 307b447d237..fcd60724853 100644
index 3bc6114322f..3b5ad7c532a 100644
--- a/dlls/dinput/joystick_linuxinput.c
+++ b/dlls/dinput/joystick_linuxinput.c
@@ -84,6 +84,13 @@ struct wine_input_absinfo {
@ -25,7 +25,7 @@ index 307b447d237..fcd60724853 100644
+
/* implemented in effect_linuxinput.c */
HRESULT linuxinput_create_effect(int* fd, REFGUID rguid, struct list *parent_list_entry, LPDIRECTINPUTEFFECT* peff);
HRESULT linuxinput_get_info_W(int fd, REFGUID rguid, LPDIEFFECTINFOW info);
HRESULT linuxinput_get_info_A(int fd, REFGUID rguid, LPDIEFFECTINFOA info);
@@ -122,6 +129,7 @@ struct JoystickImpl
/* joystick private */
@ -34,106 +34,114 @@ index 307b447d237..fcd60724853 100644
int dev_axes_to_di[ABS_MAX];
POINTL povs[4];
@@ -467,6 +475,7 @@ static JoystickImpl *alloc_device(REFGUID rguid, IDirectInputImpl *dinput, unsig
newDevice->generic.base.dinput = dinput;
@@ -459,6 +467,7 @@ static HRESULT alloc_device( REFGUID rguid, IDirectInputImpl *dinput, JoystickIm
newDevice->generic.joy_polldev = joy_polldev;
newDevice->joyfd = -1;
+ newDevice->joyfd_state = WINE_FD_STATE_CLOSED;
newDevice->joydev = &joydevs[index];
newDevice->generic.name = newDevice->joydev->name;
list_init(&newDevice->ff_effects);
@@ -674,6 +683,44 @@ static HRESULT joydev_create_device(IDirectInputImpl *dinput, REFGUID rguid, REF
@@ -663,38 +672,15 @@ static HRESULT joydev_create_device(IDirectInputImpl *dinput, REFGUID rguid, REF
return DIERR_DEVICENOTREG;
}
-
-const struct dinput_device joystick_linuxinput_device = {
- "Wine Linux-input joystick driver",
- joydev_enum_deviceA,
- joydev_enum_deviceW,
- joydev_create_device
-};
-
-/******************************************************************************
- * Acquire : gets exclusive control of the joystick
- */
-static HRESULT WINAPI JoystickWImpl_Acquire(LPDIRECTINPUTDEVICE8W iface)
+static int joydev_open_evdev(JoystickImpl *This)
+{
{
- JoystickImpl *This = impl_from_IDirectInputDevice8W(iface);
- HRESULT res;
-
- TRACE("(this=%p)\n",This);
+ int fd;
+
- if ((res = IDirectInputDevice2WImpl_Acquire(iface)) != DI_OK)
+ if ((fd = open(This->joydev->device, O_RDWR)) == -1)
+ {
+ if ((fd = open(This->joydev->device, O_RDONLY)) == -1)
+ {
+ /* Couldn't open the device at all */
+ }
+ else
+ {
+ /* Couldn't open in r/w but opened in read-only. */
+ WARN("Could not open %s in read-write mode. Force feedback will be disabled.\n", This->joydev->device);
+ }
+ }
+ else
+ {
+ struct input_event event;
+
+ event.type = EV_FF;
+ event.code = FF_GAIN;
+ event.value = This->ff_gain;
+ if (write(fd, &event, sizeof(event)) == -1)
+ ERR("Failed to set gain (%i): %d %s\n", This->ff_gain, errno, strerror(errno));
+ if (!This->ff_autocenter)
+ {
+ /* Disable autocenter. */
+ event.code = FF_AUTOCENTER;
+ event.value = 0;
+ if (write(fd, &event, sizeof(event)) == -1)
+ ERR("Failed disabling autocenter: %d %s\n", errno, strerror(errno));
+ }
+ }
+
+ return fd;
+}
+
const struct dinput_device joystick_linuxinput_device = {
"Wine Linux-input joystick driver",
@@ -698,40 +745,14 @@ static HRESULT WINAPI JoystickWImpl_Acquire(LPDIRECTINPUTDEVICE8W iface)
return res;
}
- if ((This->joyfd = open(This->joydev->device, O_RDWR)) == -1)
+ if ((This->joyfd = joydev_open_evdev(This)) == -1)
{
- WARN("Failed to acquire: %x\n", res);
- return res;
- }
-
- if ((This->joyfd = open(This->joydev->device, O_RDWR)) == -1)
- {
- if ((This->joyfd = open(This->joydev->device, O_RDONLY)) == -1)
- {
- /* Couldn't open the device at all */
+ if ((fd = open(This->joydev->device, O_RDONLY)) == -1)
{
/* Couldn't open the device at all */
- ERR("Failed to open device %s: %d %s\n", This->joydev->device, errno, strerror(errno));
- IDirectInputDevice2WImpl_Unacquire(iface);
- return DIERR_NOTFOUND;
- }
- else
- {
- /* Couldn't open in r/w but opened in read-only. */
- WARN("Could not open %s in read-write mode. Force feedback will be disabled.\n", This->joydev->device);
- }
- }
- else
- {
- struct input_event event;
-
- event.type = EV_FF;
- event.code = FF_GAIN;
- event.value = This->ff_gain;
}
else
{
@@ -709,18 +695,53 @@ static HRESULT WINAPI JoystickWImpl_Acquire(LPDIRECTINPUTDEVICE8W iface)
event.type = EV_FF;
event.code = FF_GAIN;
event.value = This->ff_gain;
- if (write(This->joyfd, &event, sizeof(event)) == -1)
- ERR("Failed to set gain (%i): %d %s\n", This->ff_gain, errno, strerror(errno));
- if (!This->ff_autocenter)
- {
- /* Disable autocenter. */
- event.code = FF_AUTOCENTER;
- event.value = 0;
+ if (write(fd, &event, sizeof(event)) == -1)
ERR("Failed to set gain (%i): %d %s\n", This->ff_gain, errno, strerror(errno));
if (!This->ff_autocenter)
{
/* Disable autocenter. */
event.code = FF_AUTOCENTER;
event.value = 0;
- if (write(This->joyfd, &event, sizeof(event)) == -1)
- ERR("Failed disabling autocenter: %d %s\n", errno, strerror(errno));
- }
+ if (write(fd, &event, sizeof(event)) == -1)
ERR("Failed disabling autocenter: %d %s\n", errno, strerror(errno));
}
}
+ return fd;
+}
+
+
+const struct dinput_device joystick_linuxinput_device = {
+ "Wine Linux-input joystick driver",
+ joydev_enum_deviceA,
+ joydev_enum_deviceW,
+ joydev_create_device
+};
+
+/******************************************************************************
+ * Acquire : gets exclusive control of the joystick
+ */
+static HRESULT WINAPI JoystickWImpl_Acquire(LPDIRECTINPUTDEVICE8W iface)
+{
+ JoystickImpl *This = impl_from_IDirectInputDevice8W(iface);
+ HRESULT res;
+
+ TRACE("(this=%p)\n",This);
+
+ if ((res = IDirectInputDevice2WImpl_Acquire(iface)) != DI_OK)
+ {
+ WARN("Failed to acquire: %x\n", res);
+ return res;
+ }
+
+ if ((This->joyfd = joydev_open_evdev(This)) == -1)
+ {
+ ERR("Failed to open device %s: %d %s\n", This->joydev->device, errno, strerror(errno));
+ IDirectInputDevice2WImpl_Unacquire(iface);
+ return DIERR_NOTFOUND;
}
+ }
+
+ This->joyfd_state = WINE_FD_STATE_OK;
return DI_OK;
}
@@ -763,6 +784,7 @@ static HRESULT WINAPI JoystickWImpl_Unacquire(LPDIRECTINPUTDEVICE8W iface)
@@ -752,6 +773,7 @@ static HRESULT WINAPI JoystickWImpl_Unacquire(LPDIRECTINPUTDEVICE8W iface)
close(This->joyfd);
This->joyfd = -1;
@ -141,7 +149,7 @@ index 307b447d237..fcd60724853 100644
}
return res;
}
@@ -801,23 +823,79 @@ static void joy_polldev( IDirectInputDevice8W *iface )
@@ -790,23 +812,79 @@ static void joy_polldev( IDirectInputDevice8W *iface )
struct input_event ie;
JoystickImpl *This = impl_from_IDirectInputDevice8W( iface );

View File

@ -51,7 +51,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "ce151dd681fe5ee80daba96dce12e37d6846e152"
echo "35180d368a94156cb77b09560b24d3af428b988b"
}
# Show version information
@ -1840,7 +1840,7 @@ fi
# | * [#34108] dinput: Improve support for user Joystick configuration.
# |
# | Modified files:
# | * dlls/dinput/config.c, dlls/dinput/device.c, dlls/dinput/device_private.h, dlls/dinput/dinput_main.c,
# | * dlls/dinput/ansi.c, dlls/dinput/config.c, dlls/dinput/device.c, dlls/dinput/device_private.h, dlls/dinput/dinput_main.c,
# | dlls/dinput/joystick.c, dlls/dinput8/tests/device.c
# |
if test "$enable_dinput_joy_mappings" -eq 1; then
@ -1859,11 +1859,10 @@ fi
# | * [#47326] dinput: Allow mapping of controls based of genre type.
# |
# | Modified files:
# | * dlls/dinput/device.c, dlls/dinput/dinput_main.c
# | * dlls/dinput/device.c
# |
if test "$enable_dinput_SetActionMap_genre" -eq 1; then
patch_apply dinput-SetActionMap-genre/0001-dinput-Allow-mapping-of-controls-based-of-Genre-type.patch
patch_apply dinput-SetActionMap-genre/0002-dinput-Improved-tracing-of-Semantic-value.patch
fi
# Patchset dinput-axis-recalc

View File

@ -1,4 +1,4 @@
From 02727b15297b66c66d622cc28dfa5f6cf1b044ac Mon Sep 17 00:00:00 2001
From f9b83aeeeebe3c48fbc9d02c46ed78502a6a7733 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 20 Nov 2014 13:27:24 +0100
Subject: [PATCH] ws2_32: Implement returning the proper time with
@ -16,11 +16,11 @@ Needs tools/make_requests.
4 files changed, 38 insertions(+), 5 deletions(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index 4568e7f1bae..60c243d14f0 100644
index ff24cc8f57c..25112eb0ef8 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -1344,6 +1344,21 @@ static DWORD sock_is_blocking(SOCKET s, BOOL *ret)
return err;
@@ -898,6 +898,21 @@ static void _enable_event( HANDLE s, unsigned int event,
SERVER_END_REQ;
}
+static DWORD _get_connect_time(SOCKET s)
@ -41,7 +41,7 @@ index 4568e7f1bae..60c243d14f0 100644
static unsigned int _get_sock_mask(SOCKET s)
{
unsigned int ret;
@@ -3969,7 +3984,6 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level,
@@ -2755,7 +2770,6 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level,
case WS_SO_CONNECT_TIME:
{
@ -49,7 +49,7 @@ index 4568e7f1bae..60c243d14f0 100644
struct WS_sockaddr addr;
int len = sizeof(addr);
@@ -3981,10 +3995,7 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level,
@@ -2767,10 +2781,7 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level,
if (WS_getpeername(s, &addr, &len) == SOCKET_ERROR)
*(DWORD *)optval = ~0u;
else
@ -62,10 +62,10 @@ index 4568e7f1bae..60c243d14f0 100644
return ret;
}
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index ba03e16ebb1..134433c4b6d 100644
index 33ab1e1b576..6e5c29608ee 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -4801,11 +4801,15 @@ static void test_send(void)
@@ -4131,11 +4131,15 @@ static void test_send(void)
OVERLAPPED ov;
BOOL bret;
DWORD id, bytes_sent, dwRet;
@ -81,7 +81,7 @@ index ba03e16ebb1..134433c4b6d 100644
set_blocking(dst, FALSE);
/* force disable buffering so we can get a pending overlapped request */
ret = setsockopt(dst, SOL_SOCKET, SO_SNDBUF, (char *) &zero, sizeof(zero));
@@ -4878,6 +4882,22 @@ static void test_send(void)
@@ -4208,6 +4212,22 @@ static void test_send(void)
ok(ret == SOCKET_ERROR && WSAGetLastError() == ERROR_IO_PENDING,
"Failed to start overlapped send %d - %d\n", ret, WSAGetLastError());
@ -105,10 +105,10 @@ index ba03e16ebb1..134433c4b6d 100644
if (src != INVALID_SOCKET)
closesocket(src);
diff --git a/server/protocol.def b/server/protocol.def
index 8360b2611a1..f5f505d69fb 100644
index 57abacdf16b..5c236400dca 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -1433,6 +1433,7 @@ enum server_fd_type
@@ -1453,6 +1453,7 @@ enum server_fd_type
int family; /* family, see socket manpage */
int type; /* type, see socket manpage */
int protocol; /* protocol, see socket manpage */
@ -117,10 +117,10 @@ index 8360b2611a1..f5f505d69fb 100644
diff --git a/server/sock.c b/server/sock.c
index 4f97fe72080..07e1cf3a2ca 100644
index 228f987959b..e6d0fb7d6c0 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -1565,6 +1565,7 @@ DECL_HANDLER(get_socket_info)
@@ -2414,6 +2414,7 @@ DECL_HANDLER(get_socket_info)
reply->family = sock->family;
reply->type = sock->type;
reply->protocol = sock->proto;
@ -129,5 +129,5 @@ index 4f97fe72080..07e1cf3a2ca 100644
release_object( &sock->obj );
}
--
2.28.0
2.30.2

View File

@ -1 +1 @@
ce151dd681fe5ee80daba96dce12e37d6846e152
35180d368a94156cb77b09560b24d3af428b988b