Changeset 6effd50 for server


Ignore:
Timestamp:
Dec 20, 2011, 1:47:35 PM (12 years ago)
Author:
Jessica B. Hamrick <jhamrick@…>
Branches:
no-cups
Children:
cad7502
Parents:
f6c6897
git-author:
Jessica B. Hamrick <jhamrick@…> (12/20/11 13:47:35)
git-committer:
Jessica B. Hamrick <jhamrick@…> (12/20/11 13:47:35)
Message:

Fix some errors in server/, handle fatal errors better

Location:
server/lib/gutenbach/server
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • server/lib/gutenbach/server/__init__.py

    r7bd1035 r6effd50  
    22import BaseHTTPServer
    33import logging
     4import sys
    45
    56# configure logging
    6 logging.basicConfig(level=logging.INFO)
     7logging.basicConfig(level=logging.DEBUG)
     8
     9def error(self, request, client_address):
     10    sys.exit(1)
    711
    812def start():
    913    server_address = ('', 8000)
    1014    httpd = BaseHTTPServer.HTTPServer(server_address, GutenbachIPPServer)
     15    httpd.handle_error = error.__get__(httpd)
    1116    httpd.serve_forever()
    1217
  • server/lib/gutenbach/server/printer.py

    r5fe360e r6effd50  
    6161    def __getattr__(self, attr):
    6262        try:
    63             return super(Printer, self).__getattr__(attr)
     63            return self.__getattribute__(attr)
    6464        except AttributeError:
    6565            pass
    66 
    67         return super(Printer, self).__getattr__(
    68             attr.replace("-", "_"))
     66        return self.__getattribute__(attr.replace("-", "_"))
    6967
    7068    def __hasattr__(self, attr):
    71         has = super(Printer, self).__hasattr__(attr)
    72         if not has:
    73             has = super(Printer, self).__hasattr__(
    74                 attr.replace("-", "_"))
    75         return has
     69        try:
     70            getattr(self, attr)
     71            return True
     72        except AttributeError:
     73            return False
    7674
    7775    ## Printer attributes
     
    156154    def get_printer_attributes(self, request):
    157155        attributes = [(attr, getattr(self, attr)) for attr in self.attributes]
    158         attributes = map(lambda x: x if isinstance(x, (tuple, list)) else [x], attributes)
     156        attributes = map(lambda x: x if isinstance(x[1], (tuple, list)) else (x[0], [x[1]]),
     157                         attributes)
    159158        return attributes
    160159
  • server/lib/gutenbach/server/requests.py

    r5fe360e r6effd50  
    5353        attrs = printer.get_printer_attributes(request)
    5454        ipp_attrs = []
    55         for attr, vals in enumerate(attrs):
     55        for attr, vals in attrs:
    5656            ipp_vals = [ipp.Value(
    5757                tag=printer_attribute_value_tags[attr],
     
    6464        attrs = job.get_job_attributes(request)
    6565        ipp_attrs = []
    66         for attr, vals in enumerate(attrs):
     66        for attr, vals in attrs:
    6767            ipp_vals = [ipp.Value(
    6868                tag=job_attribute_value_tags[attr],
  • server/lib/gutenbach/server/server.py

    rdc40fe9 r6effd50  
    4141        # is an IPP error, then we can get the error code from the
    4242        # exception itself.
    43         except IPPException:
     43        except ipp.errors.IPPException:
    4444            exctype, excval, exctb = sys.exc_info()
    4545            excval.update_response(response)
     
    4949        # as an internal server error
    5050        except Exception:
    51             response.operation_id = const.ErrorCodes.INTERNAL_ERROR
     51            response.operation_id = ipp.StatusCodes.INTERNAL_ERROR
    5252            logger.error(traceback.format_exc())
    5353
    5454        # Send the response across HTTP
    5555        logger.debug("Sending response: %s" % repr(response))
     56        try:
     57            binary = response.packed_value
     58        except:
     59            logger.fatal(traceback.format_exc())
     60            sys.exit(1)
     61           
    5662        self.send_response(200, "Gutenbach IPP Response")
    5763        self.send_header("Content-Type", "application/ipp")
    5864        self.send_header("Connection", "close")
    5965        self.end_headers()
    60         self.wfile.write(response.packed_value)
     66        self.wfile.write(binary)
Note: See TracChangeset for help on using the changeset viewer.