From 2dd2137d44d0bc7e3e25d4ce14610acfe88cb4f2 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Tue, 24 Jul 2012 00:00:55 +1200 Subject: [PATCH] Better handling of binary data output by pathoc. --- libpathod/pathoc.py | 10 +++++----- libpathod/utils.py | 4 ++++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/libpathod/pathoc.py b/libpathod/pathoc.py index 3e5204c21..8fe7b7f66 100644 --- a/libpathod/pathoc.py +++ b/libpathod/pathoc.py @@ -1,18 +1,18 @@ import sys, os from netlib import tcp, http -import rparse +import rparse, utils class PathocError(Exception): pass def print_short(fp, httpversion, code, msg, headers, content): - print >> fp, "<< %s %s: %s bytes"%(code, msg, len(content)) + print >> fp, "<< %s %s: %s bytes"%(code, utils.xrepr(msg), len(content)) def print_full(fp, httpversion, code, msg, headers, content): - print >> fp, "<< HTTP%s/%s %s %s"%(httpversion[0], httpversion[1], code, msg) - print >> fp, headers - print >> fp, content + print >> fp, "<< HTTP%s/%s %s %s"%(httpversion[0], httpversion[1], code, utils.xrepr(msg)) + print >> fp, utils.escape_unprintables(str(headers)) + print >> fp, utils.escape_unprintables(content) class Pathoc(tcp.TCPClient): diff --git a/libpathod/utils.py b/libpathod/utils.py index 40f37cab2..1ee50b830 100644 --- a/libpathod/utils.py +++ b/libpathod/utils.py @@ -41,6 +41,10 @@ def parse_anchor_spec(s): return tuple(s.split("=", 1)) +def xrepr(s): + return repr(s)[1:-1] + + def escape_unprintables(s): s = s.replace("\r\n", "PATHOD_MARKER_RN") s = s.replace("\n", "PATHOD_MARKER_N")