Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(350)

Side by Side Diff: net/udp/udp_socket_win.cc

Issue 185553013: Standardize error reporting of IPEndPoint::ToSockAddr and (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/udp/udp_socket_win.h" 5 #include "net/udp/udp_socket_win.h"
6 6
7 #include <mstcpip.h> 7 #include <mstcpip.h>
8 8
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 CHECK_NE(INVALID_SOCKET, socket_); 522 CHECK_NE(INVALID_SOCKET, socket_);
523 AssertEventNotSignaled(core_->read_overlapped_.hEvent); 523 AssertEventNotSignaled(core_->read_overlapped_.hEvent);
524 int rv = WSARecvFrom(socket_, &read_buffer, 1, &num, &flags, storage.addr, 524 int rv = WSARecvFrom(socket_, &read_buffer, 1, &num, &flags, storage.addr,
525 &storage.addr_len, &core_->read_overlapped_, NULL); 525 &storage.addr_len, &core_->read_overlapped_, NULL);
526 if (rv == 0) { 526 if (rv == 0) {
527 if (ResetEventIfSignaled(core_->read_overlapped_.hEvent)) { 527 if (ResetEventIfSignaled(core_->read_overlapped_.hEvent)) {
528 int result = num; 528 int result = num;
529 // Convert address. 529 // Convert address.
530 if (address && result >= 0) { 530 if (address && result >= 0) {
531 if (!ReceiveAddressToIPEndpoint(address)) 531 if (!ReceiveAddressToIPEndpoint(address))
532 result = ERR_FAILED; 532 result = ERR_ADDRESS_INVALID;
533 } 533 }
534 LogRead(result, buf->data()); 534 LogRead(result, buf->data());
535 return result; 535 return result;
536 } 536 }
537 } else { 537 } else {
538 int os_error = WSAGetLastError(); 538 int os_error = WSAGetLastError();
539 if (os_error != WSA_IO_PENDING) { 539 if (os_error != WSA_IO_PENDING) {
540 int result = MapSystemError(os_error); 540 int result = MapSystemError(os_error);
541 LogRead(result, NULL); 541 LogRead(result, NULL);
542 return result; 542 return result;
543 } 543 }
544 } 544 }
545 core_->WatchForRead(); 545 core_->WatchForRead();
546 core_->read_iobuffer_ = buf; 546 core_->read_iobuffer_ = buf;
547 return ERR_IO_PENDING; 547 return ERR_IO_PENDING;
548 } 548 }
549 549
550 int UDPSocketWin::InternalSendTo(IOBuffer* buf, int buf_len, 550 int UDPSocketWin::InternalSendTo(IOBuffer* buf, int buf_len,
551 const IPEndPoint* address) { 551 const IPEndPoint* address) {
552 DCHECK(!core_->write_iobuffer_); 552 DCHECK(!core_->write_iobuffer_);
553 SockaddrStorage storage; 553 SockaddrStorage storage;
554 struct sockaddr* addr = storage.addr; 554 struct sockaddr* addr = storage.addr;
555 // Convert address. 555 // Convert address.
556 if (!address) { 556 if (!address) {
557 addr = NULL; 557 addr = NULL;
558 storage.addr_len = 0; 558 storage.addr_len = 0;
559 } else { 559 } else {
560 if (!address->ToSockAddr(addr, &storage.addr_len)) { 560 if (!address->ToSockAddr(addr, &storage.addr_len)) {
561 int result = ERR_FAILED; 561 int result = ERR_ADDRESS_INVALID;
562 LogWrite(result, NULL, NULL); 562 LogWrite(result, NULL, NULL);
563 return result; 563 return result;
564 } 564 }
565 } 565 }
566 566
567 WSABUF write_buffer; 567 WSABUF write_buffer;
568 write_buffer.buf = buf->data(); 568 write_buffer.buf = buf->data();
569 write_buffer.len = buf_len; 569 write_buffer.len = buf_len;
570 570
571 DWORD flags = 0; 571 DWORD flags = 0;
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
804 return OK; 804 return OK;
805 } 805 }
806 806
807 // TODO(hubbe): Implement differentiated services for windows. 807 // TODO(hubbe): Implement differentiated services for windows.
808 // Note: setsockopt(IP_TOS) does not work on windows XP and later. 808 // Note: setsockopt(IP_TOS) does not work on windows XP and later.
809 int UDPSocketWin::SetDiffServCodePoint(DiffServCodePoint dscp) { 809 int UDPSocketWin::SetDiffServCodePoint(DiffServCodePoint dscp) {
810 return ERR_NOT_IMPLEMENTED; 810 return ERR_NOT_IMPLEMENTED;
811 } 811 }
812 812
813 } // namespace net 813 } // namespace net
OLDNEW
« net/socket/tcp_socket_libevent.cc ('K') | « net/udp/udp_socket_libevent.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698