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;
}

