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

Side by Side Diff: net/tools/quic/end_to_end_test.cc

Issue 297213009: Open a new port before closing the original in QUIC's port migration (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <stddef.h> 5 #include <stddef.h>
6 #include <string> 6 #include <string>
7 #include <sys/epoll.h> 7 #include <sys/epoll.h>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 982 matching lines...) Expand 10 before | Expand all | Expand 10 after
993 EXPECT_EQ(kFooResponseBody, client_->SendSynchronousRequest("/foo")); 993 EXPECT_EQ(kFooResponseBody, client_->SendSynchronousRequest("/foo"));
994 EXPECT_EQ(200u, client_->response_headers()->parsed_response_code()); 994 EXPECT_EQ(200u, client_->response_headers()->parsed_response_code());
995 995
996 // Store the client address which was used to send the first request. 996 // Store the client address which was used to send the first request.
997 IPEndPoint old_address = client_->client()->client_address(); 997 IPEndPoint old_address = client_->client()->client_address();
998 998
999 // Stop listening on the old FD. 999 // Stop listening on the old FD.
1000 EpollServer* eps = client_->client()->epoll_server(); 1000 EpollServer* eps = client_->client()->epoll_server();
1001 int old_fd = client_->client()->fd(); 1001 int old_fd = client_->client()->fd();
1002 eps->UnregisterFD(old_fd); 1002 eps->UnregisterFD(old_fd);
1003 // Create a new socket before closing the old one, which will result in a new
1004 // ephemeral port.
1005 QuicClientPeer::CreateUDPSocket(client_->client());
1003 close(old_fd); 1006 close(old_fd);
1004 1007
1005 // Create a new socket, which will result in a new ephemeral port.
1006 QuicClientPeer::CreateUDPSocket(client_->client());
1007
1008 // The packet writer needs to be updated to use the new FD. 1008 // The packet writer needs to be updated to use the new FD.
1009 client_->client()->CreateQuicPacketWriter(); 1009 client_->client()->CreateQuicPacketWriter();
1010 1010
1011 // Change the internal state of the client and connection to use the new port, 1011 // Change the internal state of the client and connection to use the new port,
1012 // this is done because in a real NAT rebinding the client wouldn't see any 1012 // this is done because in a real NAT rebinding the client wouldn't see any
1013 // port change, and so expects no change to incoming port. 1013 // port change, and so expects no change to incoming port.
1014 // This is kind of ugly, but needed as we are simply swapping out the client 1014 // This is kind of ugly, but needed as we are simply swapping out the client
1015 // FD rather than any more complex NAT rebinding simulation. 1015 // FD rather than any more complex NAT rebinding simulation.
1016 int new_port = client_->client()->client_address().port(); 1016 int new_port = client_->client()->client_address().port();
1017 QuicClientPeer::SetClientPort(client_->client(), new_port); 1017 QuicClientPeer::SetClientPort(client_->client(), new_port);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1065 QuicSession* session = dispatcher->session_map().begin()->second; 1065 QuicSession* session = dispatcher->session_map().begin()->second;
1066 EXPECT_EQ(kClientIFCW, 1066 EXPECT_EQ(kClientIFCW,
1067 session->config()->ReceivedInitialFlowControlWindowBytes()); 1067 session->config()->ReceivedInitialFlowControlWindowBytes());
1068 server_thread_->Resume(); 1068 server_thread_->Resume();
1069 } 1069 }
1070 1070
1071 } // namespace 1071 } // namespace
1072 } // namespace test 1072 } // namespace test
1073 } // namespace tools 1073 } // namespace tools
1074 } // namespace net 1074 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698