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: