c++ - OpenVPN TAP I/O operations blocks forever -



c++ - OpenVPN TAP I/O operations blocks forever -

following code hangs forever when getoverlappedresult gets called, have not much experience in windows async io operations, implemented per understanding. have used access virtual network interface (by openvpn - tap/tun interface kernel driver installed properly).

i found place hangs, don't know reason why hangs ?

nread = 0; memset(data_buffer, '\0', nread); overlapped overlapped_read; memset(&overlapped_read, 0, sizeof(overlapped_read)); overlapped_read.offset = 0; overlapped_read.hevent = createevent(null, false, false, null); if ( readfile(fd, data_buffer, len, &nread, &overlapped_read) == false ) { if (getlasterror() != error_io_pending) { std::cerr << "readfile failed : " << getlasterror() << std::endl; homecoming false; } else { dword dwres = waitforsingleobject(overlapped_read.hevent, infinite); if(dwres == wait_object_0) { if (!getoverlappedresult(fd, &overlapped_read, &nread, false)) { std::cout << "getoverlappedresult failed : errorcode = " << getlasterror() << std::endl; closehandle(overlapped_read.hevent); homecoming false; } else { std:cout << "read successfull." << std::endl; } } else { std::cout << "waitforsingleobject failed : errorcode = " << getlasterror() << std::endl; closehandle(overlapped_read.hevent); homecoming false; } } std::cout << "bytes read = " << nread << std::endl; closehandle(overlapped_read.hevent); homecoming true; }

above code executed in infinite while loop within thread created using createthread api.

do have implemented async operation correctly ?

what possible cases when getoverlappedresult gets hangs ?

ps: few readfile calls successfull, can read ethernet frame successfully, hangs after approx. 15-20 calls.

c++ readfile msdn openvpn createthread

Comments

Popular posts from this blog

xslt - DocBook 5 to PDF transform failing with error: "fo:flow" is missing child elements. Required content model: marker* -

mediawiki - How do I insert tables inside infoboxes on Wikia pages? -

Local Service User Logged into Windows -