|
|
|
date: Thu, 13 Sep 2007 10:08:30 -0700,
group: microsoft.public.platformsdk.networking
back
LSP AcceptEx and getting the local and remote addresses
I am having a hard time trying to get the local and remote addresses
in my LSP which intercepts AcceptEx. When I call GetAcceptExSockaddrs
with the parameters passed to my AcceptEx function I get NULLs for all
the addresses. Does anyone have any ideas?
This is the basic jist of the code.
BOOL PASCAL FAR
ExtAcceptEx(
IN SOCKET sListenSocket,
IN SOCKET sAcceptSocket,
IN PVOID lpOutputBuffer,
IN DWORD dwReceiveDataLength,
IN DWORD dwLocalAddressLength,
IN DWORD dwRemoteAddressLength,
OUT LPDWORD lpdwBytesReceived,
IN LPOVERLAPPED lpOverlapped)
{
SOCKET_CONTEXT *ListenSocketContext = NULL;
SOCKET_CONTEXT *AcceptSocketContext = NULL;
sockaddr_in * localAddr = 0;
sockaddr_in * remoteAddr = 0;
int remote_addr_len = sizeof(sockaddr_in);
int local_addr_len = sizeof(sockaddr_in);
int rc = FALSE;
ListenSocketContext = FindSocketContext( sListenSocket );
...
AcceptSocketContext = FindSocketContext( sAcceptSocket );
...
GetAcceptExSockaddrs(lpOutputBuffer, dwReceiveDataLength,
dwLocalAddressLength, dwRemoteAddressLength, (sockaddr **) &localAddr,
&local_addr_len, (sockaddr **) &remoteAddr, &remote_addr_len);
//PROBLEM
//localAddr = 0
//remoteAddr = 0
....
rc = ListenSocketContext->Provider->NextProcTableExt.lpfnAcceptEx(
ListenSocketContext->Socket,
AcceptSocketContext->Socket,
lpOutputBuffer,
dwReceiveDataLength,
dwLocalAddressLength,
dwRemoteAddressLength,
lpdwBytesReceived,
lpOverlapped
);
...
return rc;
}
date: Thu, 13 Sep 2007 10:08:30 -0700
author: unknown
Re: LSP AcceptEx and getting the local and remote addresses
Just additional question : do you see any problems with connection when
your LSP work ? If you succeed to send/receive data, that IP/ports should be
seen in LSP, OTOH
you can just use GetTcpTable() for that
Arkady
wrote in message
news:1189703310.666540.11730@w3g2000hsg.googlegroups.com...
>I am having a hard time trying to get the local and remote addresses
> in my LSP which intercepts AcceptEx. When I call GetAcceptExSockaddrs
> with the parameters passed to my AcceptEx function I get NULLs for all
> the addresses. Does anyone have any ideas?
>
> This is the basic jist of the code.
>
> BOOL PASCAL FAR
> ExtAcceptEx(
> IN SOCKET sListenSocket,
> IN SOCKET sAcceptSocket,
> IN PVOID lpOutputBuffer,
> IN DWORD dwReceiveDataLength,
> IN DWORD dwLocalAddressLength,
> IN DWORD dwRemoteAddressLength,
> OUT LPDWORD lpdwBytesReceived,
> IN LPOVERLAPPED lpOverlapped)
> {
> SOCKET_CONTEXT *ListenSocketContext = NULL;
> SOCKET_CONTEXT *AcceptSocketContext = NULL;
> sockaddr_in * localAddr = 0;
> sockaddr_in * remoteAddr = 0;
> int remote_addr_len = sizeof(sockaddr_in);
> int local_addr_len = sizeof(sockaddr_in);
> int rc = FALSE;
>
> ListenSocketContext = FindSocketContext( sListenSocket );
> ...
> AcceptSocketContext = FindSocketContext( sAcceptSocket );
> ...
>
> GetAcceptExSockaddrs(lpOutputBuffer, dwReceiveDataLength,
> dwLocalAddressLength, dwRemoteAddressLength, (sockaddr **) &localAddr,
> &local_addr_len, (sockaddr **) &remoteAddr, &remote_addr_len);
>
> //PROBLEM
> //localAddr = 0
> //remoteAddr = 0
>
> ....
> rc = ListenSocketContext->Provider->NextProcTableExt.lpfnAcceptEx(
> ListenSocketContext->Socket,
> AcceptSocketContext->Socket,
> lpOutputBuffer,
> dwReceiveDataLength,
> dwLocalAddressLength,
> dwRemoteAddressLength,
> lpdwBytesReceived,
> lpOverlapped
> );
> ...
>
> return rc;
> }
>
date: Fri, 14 Sep 2007 07:29:19 +0300
author: Arkady Frenkel
|
|