Commit dc96b58c authored by jan.koester's avatar jan.koester
Browse files

some fixes

parent 8e966dfa
Loading
Loading
Loading
Loading
+22 −16
Original line number Diff line number Diff line
@@ -329,7 +329,7 @@ namespace netplus {
            return(sdSocket);
        }

        bool CreateAcceptSocket(BOOL fUpdateIOCP) {
        bool CreateAcceptSocket(bool fUpdateIOCP) {

            int nRet = 0;
            DWORD dwRecvNumBytes = 0;
@@ -345,11 +345,12 @@ namespace netplus {
            //socket for client connection. 
            //
            if (fUpdateIOCP) {
                try {
                    g_pCtxtListenSocket = UpdateCompletionPort(g_serversocket->fd(), ClientIoAccept, false);
                if (g_pCtxtListenSocket == nullptr) {
                } catch (NetException &e) {
                    std::cerr << "UpdateCompletionPort: " << e.what() << std::endl;
                    return false;
                }

                // Load the AcceptEx extension function from the provider for this socket
                nRet = WSAIoctl(
                    g_serversocket->fd(),
@@ -363,25 +364,28 @@ namespace netplus {
                    NULL
                );
                if (nRet == SOCKET_ERROR){
                    return (FALSE);
                    return false;
                }
            }

            try{
                g_pCtxtListenSocket->pIOContext->SocketAccept = CreateSocket();
            if (g_pCtxtListenSocket->pIOContext->SocketAccept == INVALID_SOCKET) {
            } catch (NetException& e) {
                std::cerr << "CreateSocket: " << e.what() << std::endl;
                return false;
            }

            //
            // pay close attention to these parameters and buffer lengths
            //
            try {
                nRet = g_pCtxtListenSocket->fnAcceptEx(g_serversocket->fd(), g_pCtxtListenSocket->pIOContext->SocketAccept,
                    (LPVOID)(g_pCtxtListenSocket->pIOContext->Buffer),
                    BLOCKSIZE - (2 * (sizeof(SOCKADDR_STORAGE) + 16)),
                    sizeof(SOCKADDR_STORAGE) + 16, sizeof(SOCKADDR_STORAGE) + 16,
                    &dwRecvNumBytes,
                    (LPOVERLAPPED) & (g_pCtxtListenSocket->pIOContext->Overlapped));
            if (nRet == SOCKET_ERROR && (ERROR_IO_PENDING != WSAGetLastError())) {
            } catch (NetException& e) {
                std::cerr << "fnAcceptEx" << e.what() << std::endl;
                return false;
            }

@@ -719,7 +723,7 @@ namespace netplus {
    void event::runEventloop(void* args) {
        NetException exception;

        HANDLE iocp = ::CreateIoCompletionPort((HANDLE)_ServerSocket->fd(),nullptr,0, threads);
        HANDLE iocp = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0);

        if (!iocp) {
            NetException exp;
@@ -769,6 +773,8 @@ namespace netplus {
            }
        }

        _ServerSocket->listen();

        if (!evpoll.CreateAcceptSocket(true)) {
            NetException exp;
            exp[NetException::Critical] << "event: CreateAcceptSocket couldn't create socket !";