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 library safe_http_server; | 5 library safe_http_server; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:io'; | 8 import 'dart:io'; |
9 | 9 |
10 // TODO(nweiz): remove this when issue 9140 is fixed. | 10 // TODO(nweiz): remove this when issue 9140 is fixed. |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 StreamSubscription<HttpRequest> listen(void onData(HttpRequest value), | 43 StreamSubscription<HttpRequest> listen(void onData(HttpRequest value), |
44 {void onError(error), void onDone(), | 44 {void onError(error), void onDone(), |
45 bool cancelOnError: false}) { | 45 bool cancelOnError: false}) { |
46 var subscription; | 46 var subscription; |
47 subscription = super.listen((request) { | 47 subscription = super.listen((request) { |
48 onData(new _HttpRequestWrapper(request)); | 48 onData(new _HttpRequestWrapper(request)); |
49 }, onError: (error) { | 49 }, onError: (error) { |
50 // Ignore socket error 104, which is caused by a request being cancelled | 50 // Ignore socket error 104, which is caused by a request being cancelled |
51 // before it writes any headers. There's no reason to care about such | 51 // before it writes any headers. There's no reason to care about such |
52 // requests. | 52 // requests. |
53 if (error is SocketIOException && error.osError.errorCode == 104) return; | 53 if (error is SocketException && error.osError.errorCode == 104) return; |
54 // Ignore any parsing errors, which come from malformed requests. | 54 // Ignore any parsing errors, which come from malformed requests. |
55 if (error is HttpParserException) return; | 55 if (error is HttpException) return; |
56 // Manually handle cancelOnError so the above (ignored) errors don't | 56 // Manually handle cancelOnError so the above (ignored) errors don't |
57 // cause unsubscription. | 57 // cause unsubscription. |
58 if (cancelOnError) subscription.cancel(); | 58 if (cancelOnError) subscription.cancel(); |
59 if (onError != null) onError(error); | 59 if (onError != null) onError(error); |
60 }, onDone: onDone); | 60 }, onDone: onDone); |
61 return subscription; | 61 return subscription; |
62 } | 62 } |
63 } | 63 } |
64 | 64 |
65 /// A wrapper around [HttpRequest] for the sole purpose of swallowing errors on | 65 /// A wrapper around [HttpRequest] for the sole purpose of swallowing errors on |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 Future<HttpResponse> addStream(Stream<List<int>> stream) => | 132 Future<HttpResponse> addStream(Stream<List<int>> stream) => |
133 _inner.addStream(stream); | 133 _inner.addStream(stream); |
134 Future close() => _inner.close(); | 134 Future close() => _inner.close(); |
135 void write(Object obj) => _inner.write(obj); | 135 void write(Object obj) => _inner.write(obj); |
136 void writeAll(Iterable objects, [String separator = ""]) => | 136 void writeAll(Iterable objects, [String separator = ""]) => |
137 _inner.writeAll(objects, separator); | 137 _inner.writeAll(objects, separator); |
138 void writeCharCode(int charCode) => _inner.writeCharCode(charCode); | 138 void writeCharCode(int charCode) => _inner.writeCharCode(charCode); |
139 void writeln([Object obj = ""]) => _inner.writeln(obj); | 139 void writeln([Object obj = ""]) => _inner.writeln(obj); |
140 void addError(error) => _inner.addError(error); | 140 void addError(error) => _inner.addError(error); |
141 } | 141 } |
OLD | NEW |