# HG changeset patch # User paulb # Date 1098041469 0 # Node ID a143740f19fa2cdc7c1cf70677345365a1f8aa84 # Parent 95238b92498feaf47ba639495734ae570ab0be36 [project @ 2004-10-17 19:31:09 by paulb] Added an EndOfResponse exception which terminates request handling without error. diff -r 95238b92498f -r a143740f19fa WebStack/Adapters/BaseHTTPRequestHandler.py --- a/WebStack/Adapters/BaseHTTPRequestHandler.py Sun Oct 17 19:31:04 2004 +0000 +++ b/WebStack/Adapters/BaseHTTPRequestHandler.py Sun Oct 17 19:31:09 2004 +0000 @@ -6,6 +6,7 @@ import WebStack.BaseHTTPRequestHandler import BaseHTTPServer +from WebStack.Generic import EndOfResponse class HandlerFactory: @@ -55,7 +56,10 @@ trans = WebStack.BaseHTTPRequestHandler.Transaction(self) if self.webstack_authenticator is None or self.webstack_authenticator.authenticate(trans): - self.webstack_resource.respond(trans) + try: + self.webstack_resource.respond(trans) + except EndOfResponse: + pass else: trans.set_response_code(401) # Unauthorized trans.set_header_value("WWW-Authenticate", '%s realm="%s"' % ( diff -r 95238b92498f -r a143740f19fa WebStack/Adapters/CGI.py --- a/WebStack/Adapters/CGI.py Sun Oct 17 19:31:04 2004 +0000 +++ b/WebStack/Adapters/CGI.py Sun Oct 17 19:31:09 2004 +0000 @@ -5,6 +5,7 @@ """ import WebStack.CGI +from WebStack.Generic import EndOfResponse import sys, os def respond(resource, authenticator=None, input=None, output=None, env=None): @@ -23,7 +24,10 @@ try: if authenticator is None or authenticator.authenticate(trans): - resource.respond(trans) + try: + resource.respond(trans) + except EndOfResponse: + pass else: trans.set_response_code(401) # Unauthorized trans.set_header_value("WWW-Authenticate", '%s realm="%s"' % ( diff -r 95238b92498f -r a143740f19fa WebStack/Adapters/JavaServlet.py --- a/WebStack/Adapters/JavaServlet.py Sun Oct 17 19:31:04 2004 +0000 +++ b/WebStack/Adapters/JavaServlet.py Sun Oct 17 19:31:09 2004 +0000 @@ -5,6 +5,7 @@ """ import WebStack.JavaServlet +from WebStack.Generic import EndOfResponse class Dispatcher: @@ -28,7 +29,10 @@ trans = WebStack.JavaServlet.Transaction(request, response) if self.webstack_authenticator is None or self.webstack_authenticator.authenticate(trans): - self.webstack_resource.respond(trans) + try: + self.webstack_resource.respond(trans) + except EndOfResponse: + pass else: trans.set_response_code(401) # Unauthorized #trans.set_header_value("WWW-Authenticate", '%s realm="%s"' % ( diff -r 95238b92498f -r a143740f19fa WebStack/Adapters/ModPython.py --- a/WebStack/Adapters/ModPython.py Sun Oct 17 19:31:04 2004 +0000 +++ b/WebStack/Adapters/ModPython.py Sun Oct 17 19:31:09 2004 +0000 @@ -5,6 +5,7 @@ """ import WebStack.ModPython +from WebStack.Generic import EndOfResponse from mod_python import apache def respond(request, resource, debug=0): @@ -20,7 +21,10 @@ # NOTE: Resource pooling may be appropriate. try: - resource.respond(trans) + try: + resource.respond(trans) + except EndOfResponse: + pass trans.commit() return trans.get_response_code() except: diff -r 95238b92498f -r a143740f19fa WebStack/Adapters/Twisted.py --- a/WebStack/Adapters/Twisted.py Sun Oct 17 19:31:04 2004 +0000 +++ b/WebStack/Adapters/Twisted.py Sun Oct 17 19:31:09 2004 +0000 @@ -5,6 +5,7 @@ """ import WebStack.Twisted +from WebStack.Generic import EndOfResponse import twisted.web.resource class Dispatcher(twisted.web.resource.Resource): @@ -33,7 +34,10 @@ trans = WebStack.Twisted.Transaction(request) if self.webstack_authenticator is None or self.webstack_authenticator.authenticate(trans): - self.webstack_resource.respond(trans) + try: + self.webstack_resource.respond(trans) + except EndOfResponse: + pass else: trans.set_response_code(401) # Unauthorized trans.set_header_value("WWW-Authenticate", '%s realm="%s"' % ( diff -r 95238b92498f -r a143740f19fa WebStack/Adapters/Webware.py --- a/WebStack/Adapters/Webware.py Sun Oct 17 19:31:04 2004 +0000 +++ b/WebStack/Adapters/Webware.py Sun Oct 17 19:31:09 2004 +0000 @@ -5,6 +5,7 @@ """ import WebStack.Webware +from WebStack.Generic import EndOfResponse # For Webware releases later than 0.8.1, employ special URLParsers in contexts # for each application in the application server; such parsers create servlets @@ -132,7 +133,10 @@ new_trans = WebStack.Webware.Transaction(trans) if self.webstack_authenticator is None or self.webstack_authenticator.authenticate(new_trans): - self.webstack_resource.respond(new_trans) + try: + self.webstack_resource.respond(new_trans) + except EndOfResponse: + pass else: new_trans.set_response_code(401) # Unauthorized new_trans.set_header_value("WWW-Authenticate", '%s realm="%s"' % ( diff -r 95238b92498f -r a143740f19fa WebStack/Adapters/Zope.py --- a/WebStack/Adapters/Zope.py Sun Oct 17 19:31:04 2004 +0000 +++ b/WebStack/Adapters/Zope.py Sun Oct 17 19:31:09 2004 +0000 @@ -5,6 +5,7 @@ """ import WebStack.Zope +from WebStack.Generic import EndOfResponse from Globals import Persistent from OFS.SimpleItem import Item @@ -49,7 +50,10 @@ raise "Internal Error" if self.webstack_authenticator is None or self.webstack_authenticator.authenticate(trans): - self.webstack_resource.respond(trans) + try: + self.webstack_resource.respond(trans) + except EndOfResponse: + pass else: #trans.set_header_value("WWW-Authenticate", '%s realm="%s"' % ( # self.webstack_authenticator.get_auth_type(), self.webstack_authenticator.get_realm()))