diff --git a/doc-src/pathoc.html b/doc-src/pathoc.html
index 38b153e71..6f25e19d0 100644
--- a/doc-src/pathoc.html
+++ b/doc-src/pathoc.html
@@ -5,5 +5,6 @@
+pathoc hostname get:/foo/bar:h"foo"="bar" get:/wah:b@1m
-
+pathoc --ssl hostname get:/foo/bar:h"foo"="bar" get:/wah:b@1m
diff --git a/libpathod/pathod.py b/libpathod/pathod.py
index aed956753..ef37d5ad6 100644
--- a/libpathod/pathod.py
+++ b/libpathod/pathod.py
@@ -26,7 +26,7 @@ class PathodHandler(tcp.BaseHandler):
if path.startswith(self.server.prefix):
spec = urllib.unquote(path)[len(self.server.prefix):]
try:
- presp = rparse.parse({}, spec)
+ presp = rparse.parse(self.server.request_settings, spec)
except rparse.ParseException, v:
presp = rparse.InternalResponse(
800,
@@ -34,8 +34,7 @@ class PathodHandler(tcp.BaseHandler):
)
ret = presp.serve(self.wfile)
if ret["disconnect"]:
- self.close()
-
+ self.finish()
ret["request"] = dict(
path = path,
method = method,
@@ -65,6 +64,7 @@ class Pathod(tcp.TCPServer):
def __init__(self, addr, ssloptions=None, prefix="/p/", staticdir=None, anchors=None):
tcp.TCPServer.__init__(self, addr)
self.ssloptions = ssloptions
+ self.staticdir = staticdir
self.prefix = prefix
self.app = app.app
self.app.config["pathod"] = self
@@ -73,7 +73,9 @@ class Pathod(tcp.TCPServer):
@property
def request_settings(self):
- return {}
+ return dict(
+ staticdir = self.staticdir
+ )
def handle_connection(self, request, client_address):
PathodHandler(request, client_address, self)
diff --git a/libpathod/rparse.py b/libpathod/rparse.py
index 92d0a54b8..8a4073883 100644
--- a/libpathod/rparse.py
+++ b/libpathod/rparse.py
@@ -2,8 +2,6 @@ import operator, string, random, mmap, os, time
import contrib.pyparsing as pp
from netlib import http_status
-TESTING = False
-
class ParseException(Exception):
def __init__(self, msg, s, col):
Exception.__init__(self)
diff --git a/test/test_test.py b/test/test_test.py
index 36d77fd5f..7053bd730 100644
--- a/test/test_test.py
+++ b/test/test_test.py
@@ -44,12 +44,28 @@ class TestDaemon:
def tearDownAll(self):
self.d.shutdown()
+ def setUp(self):
+ self.d.clear_log()
+
+ def get(self, spec):
+ return requests.get("http://localhost:%s/p/%s"%(self.d.port, spec))
+
def test_info(self):
assert tuple(self.d.info()["version"]) == version.IVERSION
def test_logs(self):
- rsp = requests.get("http://localhost:%s/p/202"%self.d.port)
+ rsp = self.get("202")
assert len(self.d.log()) == 1
assert self.d.clear_log()
assert len(self.d.log()) == 0
+ def test_disconnect(self):
+ rsp = self.get("202:b@100k:d200")
+ assert len(rsp.content) < 200
+
+ def test_parserr(self):
+ rsp = self.get("400:msg,b:")
+ assert rsp.status_code == 800
+
+
+