GetQueuedCompletionStatus und IPv6



  • Hallo!
    Beim Portieren meiner TCP/IP-Serveranwendung auf IPv6 bin ich auf ein neues Problem mit GetQueuedCompletionStatus gekommen. Sobald ich das Socket-Handle mit AF_INET6 und SOCK_STREAM erstelle, wird beim Warten auf eine AcceptEx-Completion der Fehler ERROR_INSUFFICIENT_BUFFER genau dann von GetQueuedCompletionStatus zurückgegeben, wenn sich ein IPv6-Client (bei mir Firefox per http://[::1]/) verbindet. Ich kann das leider gar nicht nachvollziehen, mit Sockets auf AF_INET (IPv4) klappt alles wunderbar, und die MSDN sagt auch nichts zu ERROR_INSUFFICIENT_BUFFER mit GetQueuedCompletionStatus. 😞



  • Wäre sinnvoll den AcceptEx-Aufruf zu zeigen



  • if(acceptex_(listen_socket_->handle(), 
    		accept_socket->handle(), 
    		op->buffer.storage()->buf, 
    		op->buffer.storage()->len - (2 * (sizeof(sockaddr) + 16)),
    		sizeof(sockaddr) + 16, sizeof(sockaddr) + 16, &op->bytes_transferred, &op->overlapped) == FALSE)
    


  • ich glaube den fehler kannst du selbst sehen: sizeof(sockaddr)

    nimm sizeof(SOCKADDR_STORAGE)



  • Jep, genau das wars. Vielen Dank, hab ich vollkommen übersehen. 🙂


Anmelden zum Antworten