Blocking code for Windows Pipes.
George S. Lockwood
gslockwood
Wed Aug 23 07:15:24 PDT 2006
Hello, I have implemented the new s/w code for the windows named pipe
resource and it works fine for using the single wpa_ctrl (and
attached) to send msgs.
However, when I implemented a second wpa_ctrl (and attached to it
instead of the first) to monitor the unsolicited msg and using the
same code I set up to create a thread and block for the msgs for when
the s/w code was using udp sockets, it seems to block that thread and
never receive a msg to process.
Have you already tested this out? Perhaps I need to adjust my code in some way?
What exactly should I block for?
Here's my the code my thread starts as is today (I pass a pointer to
my object so I can access the wpa_ctrl member):
LPTHREAD_START_ROUTINE receiveMsgs( LPVOID lpParam )
{
char buf[256];
size_t len;
CPPCWPA* pThis = NULL;
if (lpParam)
pThis = (CPPCWPA*)lpParam;
while( TRUE )
{
cout << "inside true" << endl;
DWORD dwResult = WaitForSingleObject( (HANDLE)wpa_ctrl_get_fd(
pThis->m_pWpa_ctrlMonitor ), INFINITE );//m_pWpa_ctrlMonitor
DWORD dwError = GetLastError();
if (dwResult == WAIT_OBJECT_0)
{
if (pThis)
{
// don't need wpa_ctrl_pending with the WaitForSingleObject
//while( wpa_ctrl_pending( pThis->m_pWpa_ctrlMonitor ) ) //monitor_conn
{
len = sizeof(buf) - 1;
if (wpa_ctrl_recv( pThis->m_pWpa_ctrlMonitor, buf, &len) == 0)
//monitor_conn
{
buf[len] = '\0';
pThis->EventMessageHandler( buf, len );
}
}// end while
}
}
}
return 0;
}
thanks!
More information about the Hostap
mailing list