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

Side by Side Diff: runtime/bin/vmservice/server.dart

Issue 2515023002: Allow binding the vm service to IPv6 addresses. (Closed)
Patch Set: . Created 4 years, 1 month 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
« no previous file with comments | « runtime/bin/main.cc ('k') | 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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of vmservice_io; 5 part of vmservice_io;
6 6
7 class WebSocketClient extends Client { 7 class WebSocketClient extends Client {
8 static const int PARSE_ERROR_CODE = 4000; 8 static const int PARSE_ERROR_CODE = 4000;
9 static const int BINARY_MESSAGE_ERROR_CODE = 4001; 9 static const int BINARY_MESSAGE_ERROR_CODE = 4001;
10 static const int NOT_MAP_ERROR_CODE = 4002; 10 static const int NOT_MAP_ERROR_CODE = 4002;
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 bool get running => _server != null; 128 bool get running => _server != null;
129 129
130 /// Returns the server address including the auth token. 130 /// Returns the server address including the auth token.
131 Uri get serverAddress { 131 Uri get serverAddress {
132 if (!running) { 132 if (!running) {
133 return null; 133 return null;
134 } 134 }
135 var ip = _server.address.address; 135 var ip = _server.address.address;
136 var port = _server.port; 136 var port = _server.port;
137 if (useAuthToken) { 137 if (useAuthToken) {
138 return Uri.parse('http://$ip:$port/$serviceAuthToken/'); 138 return new Uri(scheme: 'http', host: ip, port: port,
139 path: serviceAuthToken);
139 } else { 140 } else {
140 return Uri.parse('http://$ip:$port/'); 141 return new Uri(scheme: 'http', host: ip, port: port);
141 } 142 }
142 } 143 }
143 144
144 Server(this._service, this._ip, this._port, this._originCheckDisabled); 145 Server(this._service, this._ip, this._port, this._originCheckDisabled);
145 146
146 bool _isAllowedOrigin(String origin) { 147 bool _isAllowedOrigin(String origin) {
147 Uri uri; 148 Uri uri;
148 try { 149 try {
149 uri = Uri.parse(origin); 150 uri = Uri.parse(origin);
150 } catch (_) { 151 } catch (_) {
151 return false; 152 return false;
152 } 153 }
153 154
154 // Explicitly add localhost and 127.0.0.1 on any port (necessary for 155 // Explicitly add localhost and 127.0.0.1 on any port (necessary for
155 // adb port forwarding). 156 // adb port forwarding).
156 if ((uri.host == 'localhost') || 157 if ((uri.host == 'localhost') ||
158 (uri.host == '::1') ||
157 (uri.host == '127.0.0.1')) { 159 (uri.host == '127.0.0.1')) {
158 return true; 160 return true;
159 } 161 }
160 162
161 if ((uri.port == _server.port) && 163 if ((uri.port == _server.port) &&
162 ((uri.host == _server.address.address) || 164 ((uri.host == _server.address.address) ||
163 (uri.host == _server.address.host))) { 165 (uri.host == _server.address.host))) {
164 return true; 166 return true;
165 } 167 }
166 168
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 var client = new HttpRequestClient(request, _service); 295 var client = new HttpRequestClient(request, _service);
294 var message = new Message.fromUri(client, request.uri); 296 var message = new Message.fromUri(client, request.uri);
295 client.onMessage(null, message); 297 client.onMessage(null, message);
296 } catch (e) { 298 } catch (e) {
297 print('Unexpected error processing HTTP request uri: ' 299 print('Unexpected error processing HTTP request uri: '
298 '${request.uri}\n$e\n'); 300 '${request.uri}\n$e\n');
299 rethrow; 301 rethrow;
300 } 302 }
301 } 303 }
302 304
303 Future startup() { 305 Future startup() async {
304 if (_server != null) { 306 if (_server != null) {
305 // Already running. 307 // Already running.
306 return new Future.value(this); 308 return this;
307 } 309 }
308 310
309 var address = new InternetAddress(_ip);
310 // Startup HTTP server. 311 // Startup HTTP server.
311 return HttpServer.bind(address, _port).then((s) { 312 try {
312 _server = s; 313 var address = (await InternetAddress.lookup(_ip))[0];
rmacnak 2016/11/18 23:50:33 On my workstation, the IPv6 result comes back firs
Cutch 2016/11/19 22:21:37 This code should stay consistent with the existing
rmacnak 2016/11/22 04:00:52 Done.
314 _server = await HttpServer.bind(address, _port);
313 _server.listen(_requestHandler, cancelOnError: true); 315 _server.listen(_requestHandler, cancelOnError: true);
314 print('Observatory listening on $serverAddress'); 316 print('Observatory listening on $serverAddress');
315 // Server is up and running. 317 // Server is up and running.
316 _notifyServerState(serverAddress.toString()); 318 _notifyServerState(serverAddress.toString());
317 onServerAddressChange('$serverAddress'); 319 onServerAddressChange('$serverAddress');
318 return this; 320 return this;
319 }).catchError((e, st) { 321 } catch (e, st) {
320 print('Could not start Observatory HTTP server:\n$e\n$st\n'); 322 print('Could not start Observatory HTTP server:\n$e\n$st\n');
321 _notifyServerState(""); 323 _notifyServerState("");
322 onServerAddressChange(null); 324 onServerAddressChange(null);
323 return this; 325 return this;
324 }); 326 }
325 } 327 }
326 328
327 Future cleanup(bool force) { 329 Future cleanup(bool force) {
328 if (_server == null) { 330 if (_server == null) {
329 return new Future.value(null); 331 return new Future.value(null);
330 } 332 }
331 return _server.close(force: force); 333 return _server.close(force: force);
332 } 334 }
333 335
334 Future shutdown(bool forced) { 336 Future shutdown(bool forced) {
(...skipping 16 matching lines...) Expand all
351 _notifyServerState(""); 353 _notifyServerState("");
352 onServerAddressChange(null); 354 onServerAddressChange(null);
353 return this; 355 return this;
354 }); 356 });
355 } 357 }
356 358
357 } 359 }
358 360
359 void _notifyServerState(String uri) 361 void _notifyServerState(String uri)
360 native "VMServiceIO_NotifyServerState"; 362 native "VMServiceIO_NotifyServerState";
OLDNEW
« no previous file with comments | « runtime/bin/main.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698