OLD | NEW |
---|---|
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 @patch class RawServerSocket { | 5 @patch class RawServerSocket { |
6 @patch static Future<RawServerSocket> bind(address, | 6 @patch static Future<RawServerSocket> bind(address, |
7 int port, | 7 int port, |
8 {int backlog: 0, | 8 {int backlog: 0, |
9 bool v6Only: false, | 9 bool v6Only: false, |
10 bool shared: false}) { | 10 bool shared: false}) { |
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
380 name, () => new _NetworkInterface(name, index)); | 380 name, () => new _NetworkInterface(name, index)); |
381 map[name].addresses.add(address); | 381 map[name].addresses.add(address); |
382 return map; | 382 return map; |
383 }); | 383 }); |
384 return map.values.toList(); | 384 return map.values.toList(); |
385 } | 385 } |
386 }); | 386 }); |
387 } | 387 } |
388 | 388 |
389 static Future<_NativeSocket> connect(host, int port, sourceAddress) { | 389 static Future<_NativeSocket> connect(host, int port, sourceAddress) { |
390 if ((port == null) || (port < 0) || (port > 0xffff)) { | |
391 throw new ArgumentError("Invalid port $port"); | |
392 } | |
390 if (sourceAddress != null && sourceAddress is! _InternetAddress) { | 393 if (sourceAddress != null && sourceAddress is! _InternetAddress) { |
391 if (sourceAddress is String) { | 394 if (sourceAddress is String) { |
392 sourceAddress = new InternetAddress(sourceAddress); | 395 sourceAddress = new InternetAddress(sourceAddress); |
393 } | 396 } |
394 } | 397 } |
395 return new Future.value(host) | 398 return new Future.value(host) |
396 .then((host) { | 399 .then((host) { |
397 if (host is _InternetAddress) return [host]; | 400 if (host is _InternetAddress) return [host]; |
398 return lookup(host) | 401 return lookup(host) |
399 .then((addresses) { | 402 .then((addresses) { |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
481 connectNext(); | 484 connectNext(); |
482 return completer.future; | 485 return completer.future; |
483 }); | 486 }); |
484 } | 487 } |
485 | 488 |
486 static Future<_NativeSocket> bind(host, | 489 static Future<_NativeSocket> bind(host, |
487 int port, | 490 int port, |
488 int backlog, | 491 int backlog, |
489 bool v6Only, | 492 bool v6Only, |
490 bool shared) { | 493 bool shared) { |
494 if ((port == null) || (port < 0) || (port > 0xffff)) { | |
495 throw new ArgumentError("Invalid port $port"); | |
496 } | |
491 return new Future.value(host) | 497 return new Future.value(host) |
492 .then((host) { | 498 .then((host) { |
493 if (host is _InternetAddress) return host; | 499 if (host is _InternetAddress) return host; |
494 return lookup(host) | 500 return lookup(host) |
495 .then((list) { | 501 .then((list) { |
496 if (list.length == 0) { | 502 if (list.length == 0) { |
497 throw createError(response, "Failed host lookup: '$host'"); | 503 throw createError(response, "Failed host lookup: '$host'"); |
498 } | 504 } |
499 return list[0]; | 505 return list[0]; |
500 }); | 506 }); |
(...skipping 18 matching lines...) Expand all Loading... | |
519 return socket; | 525 return socket; |
520 }); | 526 }); |
521 } | 527 } |
522 | 528 |
523 static void setupResourceInfo(_NativeSocket socket) { | 529 static void setupResourceInfo(_NativeSocket socket) { |
524 socket.resourceInfo = new _SocketResourceInfo(socket); | 530 socket.resourceInfo = new _SocketResourceInfo(socket); |
525 } | 531 } |
526 | 532 |
527 static Future<_NativeSocket> bindDatagram( | 533 static Future<_NativeSocket> bindDatagram( |
528 host, int port, bool reuseAddress) { | 534 host, int port, bool reuseAddress) { |
535 if ((port == null) || (port < 0) || (port > 0xffff)) { | |
Cutch
2016/09/23 18:05:45
this could be factored into:
_throwOnBadPort(port
zra
2016/09/23 18:12:49
Done.
| |
536 throw new ArgumentError("Invalid port $port"); | |
537 } | |
529 return new Future.value(host) | 538 return new Future.value(host) |
530 .then((host) { | 539 .then((host) { |
531 if (host is _InternetAddress) return host; | 540 if (host is _InternetAddress) return host; |
532 return lookup(host) | 541 return lookup(host) |
533 .then((list) { | 542 .then((list) { |
534 if (list.length == 0) { | 543 if (list.length == 0) { |
535 throw createError(response, "Failed host lookup: '$host'"); | 544 throw createError(response, "Failed host lookup: '$host'"); |
536 } | 545 } |
537 return list[0]; | 546 return list[0]; |
538 }); | 547 }); |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
669 // TODO(ricow): Remove when we track internal and pipe uses. | 678 // TODO(ricow): Remove when we track internal and pipe uses. |
670 assert(resourceInfo != null || isPipe || isInternal); | 679 assert(resourceInfo != null || isPipe || isInternal); |
671 if (resourceInfo != null) { | 680 if (resourceInfo != null) { |
672 resourceInfo.addWrite(result); | 681 resourceInfo.addWrite(result); |
673 } | 682 } |
674 return result; | 683 return result; |
675 } | 684 } |
676 | 685 |
677 int send(List<int> buffer, int offset, int bytes, | 686 int send(List<int> buffer, int offset, int bytes, |
678 InternetAddress address, int port) { | 687 InternetAddress address, int port) { |
688 if ((port == null) || (port < 0) || (port > 0xffff)) { | |
689 throw new ArgumentError("Invalid port $port"); | |
690 } | |
679 if (isClosing || isClosed) return 0; | 691 if (isClosing || isClosed) return 0; |
680 _BufferAndStart bufferAndStart = | 692 _BufferAndStart bufferAndStart = |
681 _ensureFastAndSerializableByteData( | 693 _ensureFastAndSerializableByteData( |
682 buffer, offset, bytes); | 694 buffer, offset, bytes); |
683 var result = nativeSendTo( | 695 var result = nativeSendTo( |
684 bufferAndStart.buffer, bufferAndStart.start, bytes, | 696 bufferAndStart.buffer, bufferAndStart.start, bytes, |
685 address._in_addr, port); | 697 address._in_addr, port); |
686 if (result is OSError) { | 698 if (result is OSError) { |
687 scheduleMicrotask(() => reportError(result, "Send failed")); | 699 scheduleMicrotask(() => reportError(result, "Send failed")); |
688 result = 0; | 700 result = 0; |
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1109 final _NativeSocket _socket; | 1121 final _NativeSocket _socket; |
1110 StreamController<RawSocket> _controller; | 1122 StreamController<RawSocket> _controller; |
1111 ReceivePort _referencePort; | 1123 ReceivePort _referencePort; |
1112 bool _v6Only; | 1124 bool _v6Only; |
1113 | 1125 |
1114 static Future<_RawServerSocket> bind(address, | 1126 static Future<_RawServerSocket> bind(address, |
1115 int port, | 1127 int port, |
1116 int backlog, | 1128 int backlog, |
1117 bool v6Only, | 1129 bool v6Only, |
1118 bool shared) { | 1130 bool shared) { |
1119 if (port < 0 || port > 0xFFFF) | 1131 if ((port == null) || (port < 0) || (port > 0xFFFF)) { |
1120 throw new ArgumentError("Invalid port $port"); | 1132 throw new ArgumentError("Invalid port $port"); |
1133 } | |
1121 if (backlog < 0) throw new ArgumentError("Invalid backlog $backlog"); | 1134 if (backlog < 0) throw new ArgumentError("Invalid backlog $backlog"); |
1122 return _NativeSocket.bind(address, port, backlog, v6Only, shared) | 1135 return _NativeSocket.bind(address, port, backlog, v6Only, shared) |
1123 .then((socket) => new _RawServerSocket(socket, v6Only)); | 1136 .then((socket) => new _RawServerSocket(socket, v6Only)); |
1124 } | 1137 } |
1125 | 1138 |
1126 _RawServerSocket(this._socket, this._v6Only); | 1139 _RawServerSocket(this._socket, this._v6Only); |
1127 | 1140 |
1128 StreamSubscription<RawSocket> listen(void onData(RawSocket event), | 1141 StreamSubscription<RawSocket> listen(void onData(RawSocket event), |
1129 {Function onError, | 1142 {Function onError, |
1130 void onDone(), | 1143 void onDone(), |
(...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1755 }, | 1768 }, |
1756 error: zone.bindUnaryCallback((e) { | 1769 error: zone.bindUnaryCallback((e) { |
1757 _controller.addError(e); | 1770 _controller.addError(e); |
1758 _socket.close(); | 1771 _socket.close(); |
1759 }) | 1772 }) |
1760 ); | 1773 ); |
1761 } | 1774 } |
1762 | 1775 |
1763 static Future<RawDatagramSocket> bind( | 1776 static Future<RawDatagramSocket> bind( |
1764 host, int port, bool reuseAddress) { | 1777 host, int port, bool reuseAddress) { |
1765 if (port < 0 || port > 0xffff) | 1778 if ((port == null) || (port < 0) || (port > 0xffff)) { |
1766 throw new ArgumentError("Invalid port $port"); | 1779 throw new ArgumentError("Invalid port $port"); |
1780 } | |
1767 return _NativeSocket.bindDatagram(host, port, reuseAddress) | 1781 return _NativeSocket.bindDatagram(host, port, reuseAddress) |
1768 .then((socket) => new _RawDatagramSocket(socket)); | 1782 .then((socket) => new _RawDatagramSocket(socket)); |
1769 } | 1783 } |
1770 | 1784 |
1771 StreamSubscription<RawSocketEvent> listen(void onData(RawSocketEvent event), | 1785 StreamSubscription<RawSocketEvent> listen(void onData(RawSocketEvent event), |
1772 {Function onError, | 1786 {Function onError, |
1773 void onDone(), | 1787 void onDone(), |
1774 bool cancelOnError}) { | 1788 bool cancelOnError}) { |
1775 return _controller.stream.listen( | 1789 return _controller.stream.listen( |
1776 onData, | 1790 onData, |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1864 Datagram _makeDatagram(List<int> data, | 1878 Datagram _makeDatagram(List<int> data, |
1865 String address, | 1879 String address, |
1866 List<int> in_addr, | 1880 List<int> in_addr, |
1867 int port) { | 1881 int port) { |
1868 return new Datagram( | 1882 return new Datagram( |
1869 data, | 1883 data, |
1870 new _InternetAddress(address, null, in_addr), | 1884 new _InternetAddress(address, null, in_addr), |
1871 port); | 1885 port); |
1872 } | 1886 } |
1873 | 1887 |
OLD | NEW |