Ticket #9122: win_iocp_socket_service_base.ipp.patch
File win_iocp_socket_service_base.ipp.patch, 3.1 KB (added by , 9 years ago) |
---|
-
win_iocp_socket_service_base.ipp
351 351 iocp_service_.on_completion(op, boost::asio::error::bad_descriptor); 352 352 else 353 353 { 354 DWORD bytes_transferred = 0;355 354 int result = ::WSASend(impl.socket_, buffers, 356 static_cast<DWORD>(buffer_count), &bytes_transferred, flags, op, 0);355 static_cast<DWORD>(buffer_count), NULL, flags, op, 0); 357 356 DWORD last_error = ::WSAGetLastError(); 358 357 if (last_error == ERROR_PORT_UNREACHABLE) 359 358 last_error = WSAECONNREFUSED; 360 359 if (result != 0 && last_error != WSA_IO_PENDING) 361 iocp_service_.on_completion(op, last_error, bytes_transferred);360 iocp_service_.on_completion(op, last_error, 0); 362 361 else 363 362 iocp_service_.on_pending(op); 364 363 } … … 377 376 iocp_service_.on_completion(op, boost::asio::error::bad_descriptor); 378 377 else 379 378 { 380 DWORD bytes_transferred = 0;381 379 int result = ::WSASendTo(impl.socket_, buffers, 382 380 static_cast<DWORD>(buffer_count), 383 &bytes_transferred, flags, addr, addrlen, op, 0);381 NULL, flags, addr, addrlen, op, 0); 384 382 DWORD last_error = ::WSAGetLastError(); 385 383 if (last_error == ERROR_PORT_UNREACHABLE) 386 384 last_error = WSAECONNREFUSED; 387 385 if (result != 0 && last_error != WSA_IO_PENDING) 388 iocp_service_.on_completion(op, last_error, bytes_transferred);386 iocp_service_.on_completion(op, last_error, 0); 389 387 else 390 388 iocp_service_.on_pending(op); 391 389 } … … 405 403 iocp_service_.on_completion(op, boost::asio::error::bad_descriptor); 406 404 else 407 405 { 408 DWORD bytes_transferred = 0;409 406 DWORD recv_flags = flags; 410 407 int result = ::WSARecv(impl.socket_, buffers, 411 408 static_cast<DWORD>(buffer_count), 412 &bytes_transferred, &recv_flags, op, 0);409 NULL, &recv_flags, op, 0); 413 410 DWORD last_error = ::WSAGetLastError(); 414 411 if (last_error == ERROR_NETNAME_DELETED) 415 412 last_error = WSAECONNRESET; 416 413 else if (last_error == ERROR_PORT_UNREACHABLE) 417 414 last_error = WSAECONNREFUSED; 418 415 if (result != 0 && last_error != WSA_IO_PENDING) 419 iocp_service_.on_completion(op, last_error, bytes_transferred);416 iocp_service_.on_completion(op, last_error, 0); 420 417 else 421 418 iocp_service_.on_pending(op); 422 419 } … … 454 451 iocp_service_.on_completion(op, boost::asio::error::bad_descriptor); 455 452 else 456 453 { 457 DWORD bytes_transferred = 0;458 454 DWORD recv_flags = flags; 459 455 int result = ::WSARecvFrom(impl.socket_, buffers, 460 456 static_cast<DWORD>(buffer_count), 461 &bytes_transferred, &recv_flags, addr, addrlen, op, 0);457 NULL, &recv_flags, addr, addrlen, op, 0); 462 458 DWORD last_error = ::WSAGetLastError(); 463 459 if (last_error == ERROR_PORT_UNREACHABLE) 464 460 last_error = WSAECONNREFUSED; 465 461 if (result != 0 && last_error != WSA_IO_PENDING) 466 iocp_service_.on_completion(op, last_error, bytes_transferred);462 iocp_service_.on_completion(op, last_error, 0); 467 463 else 468 464 iocp_service_.on_pending(op); 469 465 }