Index: net/curvecp/server_packetizer.cc |
diff --git a/net/curvecp/server_packetizer.cc b/net/curvecp/server_packetizer.cc |
index d5d9d67325472030647ed74a447f370ac7aea7a4..d3879335d86749d355f3e4b142b40dfed48fcf69 100644 |
--- a/net/curvecp/server_packetizer.cc |
+++ b/net/curvecp/server_packetizer.cc |
@@ -15,11 +15,7 @@ ServerPacketizer::ServerPacketizer() |
: Packetizer(), |
state_(NONE), |
listener_(NULL), |
- read_buffer_(new IOBuffer(kMaxPacketLength)), |
- ALLOW_THIS_IN_INITIALIZER_LIST( |
- read_callback_(this, &ServerPacketizer::OnReadComplete)), |
- ALLOW_THIS_IN_INITIALIZER_LIST( |
- write_callback_(this, &ServerPacketizer::OnWriteComplete)) { |
+ read_buffer_(new IOBuffer(kMaxPacketLength)) { |
} |
ServerPacketizer::~ServerPacketizer() { |
@@ -46,7 +42,7 @@ bool ServerPacketizer::Open(ConnectionKey key, Packetizer::Listener* listener) { |
int ServerPacketizer::SendMessage(ConnectionKey key, |
const char* data, |
size_t length, |
- OldCompletionCallback* callback) { |
+ const CompletionCallback& callback) { |
DCHECK(socket_.get()); |
DCHECK_LT(0u, length); |
DCHECK_GT(kMaxPacketLength - sizeof(ServerMessagePacket), length); |
@@ -137,7 +133,8 @@ void ServerPacketizer::HandleHelloPacket(Packet* packet, int length) { |
// XXXMB - Can't have two pending writes at the same time... |
int rv = socket_->SendTo(buffer, sizeof(struct CookiePacket), recv_address_, |
- &write_callback_); |
+ base::Bind(&ServerPacketizer::OnWriteComplete, |
+ base::Unretained(this))); |
DCHECK(rv == ERR_IO_PENDING || rv == sizeof(struct CookiePacket)); |
} |
@@ -220,7 +217,8 @@ int ServerPacketizer::ReadPackets() { |
rv = socket_->RecvFrom(read_buffer_, |
kMaxPacketLength, |
&recv_address_, |
- &read_callback_); |
+ base::Bind(&ServerPacketizer::OnReadComplete, |
+ base::Unretained(this))); |
if (rv <= 0) { |
if (rv != ERR_IO_PENDING) |
LOG(ERROR) << "Error reading listen socket: " << rv; |