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.
