mirror of
https://github.com/PowerShell/Win32-OpenSSH.git
synced 2025-07-22 21:45:09 +02:00
3-4 C3
This commit is contained in:
parent
2caf350f29
commit
d0f61c3dc5
@ -107,7 +107,7 @@
|
|||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<AdditionalLibraryDirectories>$(SolutionDir)bin\lib\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>$(SolutionDir)bin\lib\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>Ws2_32.lib;win32posix.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>Mswsock.lib;Ws2_32.lib;win32posix.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
@ -121,7 +121,7 @@
|
|||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<AdditionalDependencies>Ws2_32.lib;win32posix.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>Mswsock.lib;Ws2_32.lib;win32posix.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<AdditionalLibraryDirectories>$(SolutionDir)bin\lib\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>$(SolutionDir)bin\lib\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
@ -140,7 +140,7 @@
|
|||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<AdditionalDependencies>Ws2_32.lib;win32posix.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>Mswsock.lib;Ws2_32.lib;win32posix.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<AdditionalLibraryDirectories>$(SolutionDir)bin\lib\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>$(SolutionDir)bin\lib\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
@ -159,7 +159,7 @@
|
|||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<AdditionalDependencies>Ws2_32.lib;win32posix.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>Mswsock.lib;Ws2_32.lib;win32posix.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<AdditionalLibraryDirectories>$(SolutionDir)bin\lib\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>$(SolutionDir)bin\lib\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
|
@ -52,6 +52,7 @@ struct acceptEx_context {
|
|||||||
char lpOutputBuf[1024];
|
char lpOutputBuf[1024];
|
||||||
SOCKET accept_socket;
|
SOCKET accept_socket;
|
||||||
LPFN_ACCEPTEX lpfnAcceptEx;
|
LPFN_ACCEPTEX lpfnAcceptEx;
|
||||||
|
LPFN_GETACCEPTEXSOCKADDRS lpfnGuidGetAcceptExSockaddrs;
|
||||||
DWORD bytes_received;
|
DWORD bytes_received;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -63,6 +64,7 @@ socketio_acceptEx(struct w32_io* pio) {
|
|||||||
debug2("io:%p", pio);
|
debug2("io:%p", pio);
|
||||||
if (pio->internal.context == NULL) {
|
if (pio->internal.context == NULL) {
|
||||||
GUID GuidAcceptEx = WSAID_ACCEPTEX;
|
GUID GuidAcceptEx = WSAID_ACCEPTEX;
|
||||||
|
GUID GuidGetAcceptExSockaddrs = WSAID_GETACCEPTEXSOCKADDRS;
|
||||||
DWORD dwBytes;
|
DWORD dwBytes;
|
||||||
|
|
||||||
context =
|
context =
|
||||||
@ -85,6 +87,20 @@ socketio_acceptEx(struct w32_io* pio) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (SOCKET_ERROR == WSAIoctl(pio->sock,
|
||||||
|
SIO_GET_EXTENSION_FUNCTION_POINTER,
|
||||||
|
&GuidGetAcceptExSockaddrs, sizeof(GuidGetAcceptExSockaddrs),
|
||||||
|
&context->lpfnGuidGetAcceptExSockaddrs, sizeof(context->lpfnGuidGetAcceptExSockaddrs),
|
||||||
|
&dwBytes, NULL, NULL))
|
||||||
|
{
|
||||||
|
free(context);
|
||||||
|
errno = errno_from_WSALastError();
|
||||||
|
debug("ERROR:%d, io:%p", errno, pio);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
context->accept_socket = INVALID_SOCKET;
|
context->accept_socket = INVALID_SOCKET;
|
||||||
pio->internal.context = context;
|
pio->internal.context = context;
|
||||||
}
|
}
|
||||||
@ -114,8 +130,8 @@ socketio_acceptEx(struct w32_io* pio) {
|
|||||||
context->accept_socket,
|
context->accept_socket,
|
||||||
context->lpOutputBuf,
|
context->lpOutputBuf,
|
||||||
0,
|
0,
|
||||||
sizeof(struct sockaddr_in6) + 16,
|
sizeof(SOCKADDR_STORAGE) + 16,
|
||||||
sizeof(struct sockaddr_in6) + 16,
|
sizeof(SOCKADDR_STORAGE) + 16,
|
||||||
&context->bytes_received,
|
&context->bytes_received,
|
||||||
&pio->read_overlapped))
|
&pio->read_overlapped))
|
||||||
{
|
{
|
||||||
@ -616,6 +632,8 @@ socketio_accept(struct w32_io* pio, struct sockaddr* addr, int* addrlen) {
|
|||||||
struct w32_io *accept_io = NULL;
|
struct w32_io *accept_io = NULL;
|
||||||
int iResult = 0;
|
int iResult = 0;
|
||||||
struct acceptEx_context* context;
|
struct acceptEx_context* context;
|
||||||
|
struct sockaddr *local_address,*remote_address;
|
||||||
|
int local_address_len, remote_address_len;
|
||||||
|
|
||||||
debug2("io:%p", pio);
|
debug2("io:%p", pio);
|
||||||
/* start io if not already started */
|
/* start io if not already started */
|
||||||
@ -676,7 +694,16 @@ socketio_accept(struct w32_io* pio, struct sockaddr* addr, int* addrlen) {
|
|||||||
context->accept_socket = INVALID_SOCKET;
|
context->accept_socket = INVALID_SOCKET;
|
||||||
debug2("accept io:%p", accept_io);
|
debug2("accept io:%p", accept_io);
|
||||||
|
|
||||||
/* TODO : fill in addr */
|
if ((addr != NULL) && (addrlen != NULL)) {
|
||||||
|
context->lpfnGuidGetAcceptExSockaddrs(context->lpOutputBuf, 0,
|
||||||
|
sizeof(SOCKADDR_STORAGE) + 16,
|
||||||
|
sizeof(SOCKADDR_STORAGE) + 16, &local_address,
|
||||||
|
&local_address_len, &remote_address, &remote_address_len);
|
||||||
|
if (remote_address_len) {
|
||||||
|
memcpy(addr, remote_address, remote_address_len);
|
||||||
|
addrlen = remote_address_len;
|
||||||
|
}
|
||||||
|
}
|
||||||
return accept_io;
|
return accept_io;
|
||||||
|
|
||||||
on_error:
|
on_error:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user