summaryrefslogtreecommitdiffstats
path: root/net/udp/udp_socket_libevent.cc
diff options
context:
space:
mode:
authorsergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-18 01:44:40 +0000
committersergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-18 01:44:40 +0000
commitdf31da4e2dd3d87ebf45ea8c67fe739b5a680f74 (patch)
tree4b9fa243597bc37955b10ec10b15971daa9c23af /net/udp/udp_socket_libevent.cc
parent46b78da34109059413e43febbe1b48385f1f92f1 (diff)
downloadchromium_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.cc18
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_);