diff options
author | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-18 01:44:40 +0000 |
---|---|---|
committer | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-18 01:44:40 +0000 |
commit | df31da4e2dd3d87ebf45ea8c67fe739b5a680f74 (patch) | |
tree | 4b9fa243597bc37955b10ec10b15971daa9c23af /net/udp/udp_socket_libevent.cc | |
parent | 46b78da34109059413e43febbe1b48385f1f92f1 (diff) | |
download | chromium_src-df31da4e2dd3d87ebf45ea8c67fe739b5a680f74.zip chromium_src-df31da4e2dd3d87ebf45ea8c67fe739b5a680f74.tar.gz chromium_src-df31da4e2dd3d87ebf45ea8c67fe739b5a680f74.tar.bz2 |
Set send buffer size for P2P UDP sockets.
On windows the default send buffer is too small. Set it explicitly to prevent packets from being lost when sending.
BUG=None
TEST=None
Review URL: http://codereview.chromium.org/8304008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@105995 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/udp/udp_socket_libevent.cc')
-rw-r--r-- | net/udp/udp_socket_libevent.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/net/udp/udp_socket_libevent.cc b/net/udp/udp_socket_libevent.cc index 33f9edd..1e790df 100644 --- a/net/udp/udp_socket_libevent.cc +++ b/net/udp/udp_socket_libevent.cc @@ -218,6 +218,7 @@ int UDPSocketLibevent::SendToOrWrite(IOBuffer* buf, } int UDPSocketLibevent::Connect(const IPEndPoint& address) { + DCHECK(CalledOnValidThread()); DCHECK(!is_connected()); DCHECK(!remote_address_.get()); int rv = CreateSocket(address); @@ -246,6 +247,7 @@ int UDPSocketLibevent::Connect(const IPEndPoint& address) { } int UDPSocketLibevent::Bind(const IPEndPoint& address) { + DCHECK(CalledOnValidThread()); DCHECK(!is_connected()); int rv = CreateSocket(address); if (rv < 0) @@ -257,6 +259,22 @@ int UDPSocketLibevent::Bind(const IPEndPoint& address) { return rv; } +bool UDPSocketLibevent::SetReceiveBufferSize(int32 size) { + DCHECK(CalledOnValidThread()); + int rv = setsockopt(socket_, SOL_SOCKET, SO_RCVBUF, + reinterpret_cast<const char*>(&size), sizeof(size)); + DCHECK(!rv) << "Could not set socket receive buffer size: " << errno; + return rv == 0; +} + +bool UDPSocketLibevent::SetSendBufferSize(int32 size) { + DCHECK(CalledOnValidThread()); + int rv = setsockopt(socket_, SOL_SOCKET, SO_SNDBUF, + reinterpret_cast<const char*>(&size), sizeof(size)); + DCHECK(!rv) << "Could not set socket send buffer size: " << errno; + return rv == 0; +} + void UDPSocketLibevent::DoReadCallback(int rv) { DCHECK_NE(rv, ERR_IO_PENDING); DCHECK(read_callback_); |