X-Git-Url: http://www.dolda2000.com/gitweb/?p=ashd.git;a=blobdiff_plain;f=python%2Fserve-ssi;h=abdb7017aa9fa6bdab68c3d9c107f17ffab7293b;hp=bbf7188cd17ea538fd5b84602a51a6dea6058321;hb=d43312387d7f7841101e7a600c2072dd076643aa;hpb=2d32a33cd845c860f1cbdc4ab26d369438ded43f diff --git a/python/serve-ssi b/python/serve-ssi index bbf7188..abdb701 100755 --- a/python/serve-ssi +++ b/python/serve-ssi @@ -151,16 +151,22 @@ if rest != "": sys.exit(0) try: - f = ssifile(open(path), url, path) -except Exception: - simpleerror(sys.stdout, 500, "Server Error", "The server could not access its data.") + try: + f = ssifile(open(path), url, path) + except Exception: + simpleerror(sys.stdout, 500, "Server Error", "The server could not access its data.") + sys.exit(1) + try: + sys.stdout.write("HTTP/1.1 200 OK\n") + sys.stdout.write("Content-Type: text/html\n") + sys.stdout.write("\n") + f.initvars(ssivars) + f.process() + finally: + f.close() +except IOError: + # This is for catching EPIPE, when the client has closed the + # connection. This shouldn't *really* be necessary since the + # process should terminate with SIGPIPE, but apparently Python + # ignores that. sys.exit(1) -try: - sys.stdout.write("HTTP/1.1 200 OK\n") - sys.stdout.write("Content-Type: text/html\n") - sys.stdout.write("\n") - f.initvars(ssivars) - f.process() -finally: - f.close() -