Index: pkg/shelf/lib/shelf_io.dart |
diff --git a/pkg/shelf/lib/shelf_io.dart b/pkg/shelf/lib/shelf_io.dart |
index c6853025bd94d39b665d319bef3a6dbc20474c82..878935f0a188a40d2a8df8675253414534ca2dda 100644 |
--- a/pkg/shelf/lib/shelf_io.dart |
+++ b/pkg/shelf/lib/shelf_io.dart |
@@ -53,7 +53,13 @@ void serveRequests(Stream<HttpRequest> requests, Handler handler) { |
/// |
/// Returns a [Future] which completes when the request has been handled. |
Future handleRequest(HttpRequest request, Handler handler) { |
- var shelfRequest = _fromHttpRequest(request); |
+ var shelfRequest; |
+ try { |
+ shelfRequest = _fromHttpRequest(request); |
+ } catch (error, stackTrace) { |
+ var response = _logError('Error parsing request.\n$error', stackTrace); |
+ return _writeResponse(response, request.response); |
+ } |
// TODO(nweiz): abstract out hijack handling to make it easier to implement an |
// adapter. |