From ec68aa303e89398ba34bbe01f3fbd1ac1fc441f3 Mon Sep 17 00:00:00 2001 From: Thomas Kriechbaumer Date: Tue, 16 Jun 2015 11:33:10 +0200 Subject: [PATCH] http2: implement error response --- libpathod/language/http2.py | 18 ++++++------------ libpathod/pathod.py | 7 +++++-- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/libpathod/language/http2.py b/libpathod/language/http2.py index 1d2517d37..c28b904ea 100644 --- a/libpathod/language/http2.py +++ b/libpathod/language/http2.py @@ -179,7 +179,7 @@ class Response(message.Message): body = self.body if body: - body = body.values(settings) + body = body.string() self.rendered_values = settings.protocol.create_response( self.code.string(), @@ -192,17 +192,11 @@ class Response(message.Message): return ":".join([i.spec() for i in self.tokens]) def make_error_response(reason, body=None): - raise NotImplementedError - # tokens = [ - # Code("800"), - # Header( - # base.TokValueLiteral("Content-Type"), - # base.TokValueLiteral("text/plain") - # ), - # Reason(base.TokValueLiteral(reason)), - # Body(base.TokValueLiteral("pathod error: " + (body or reason))), - # ] - # return Response(tokens) + tokens = [ + Code("800"), + Body(base.TokValueLiteral("pathod error: " + (body or reason))), + ] + return Response(tokens) # class Frame(message.Message): # pass diff --git a/libpathod/pathod.py b/libpathod/pathod.py index 535340cbb..b6f04b923 100644 --- a/libpathod/pathod.py +++ b/libpathod/pathod.py @@ -306,8 +306,11 @@ class PathodHandler(tcp.BaseHandler): )]) else: if self.use_http2: - raise NotImplementedError(\ - "HTTP/2 only supports request/response with the craft anchor point.") + anchor_gen = iter([self.make_http_error_response( + "Spec Error", + "HTTP/2 only supports request/response with the craft anchor point: %s" % + self.server.craftanchor + )]) if anchor_gen: