Example #1
0
 def _error(f):
     lp = log.msg("error during GET",
                  facility="tahoe.webish",
                  failure=f,
                  level=log.UNUSUAL,
                  umid="xSiF3w")
     if finished:
         log.msg("but it's too late to tell them",
                 parent=lp,
                 level=log.UNUSUAL,
                 umid="j1xIbw")
         return
     req._tahoe_request_had_error = f  # for HTTP-style logging
     if req.startedWriting:
         # The content-type is already set, and the response code has
         # already been sent, so we can't provide a clean error
         # indication. We can emit text (which a browser might
         # interpret as something else), and if we sent a Size header,
         # they might notice that we've truncated the data. Keep the
         # error message small to improve the chances of having our
         # error response be shorter than the intended results.
         #
         # We don't have a lot of options, unfortunately.
         req.write("problem during download\n")
         req.finish()
     else:
         # We haven't written anything yet, so we can provide a
         # sensible error message.
         eh = MyExceptionHandler()
         eh.renderHTTP_exception(ctx, f)
Example #2
0
 def _error(f):
     lp = log.msg("error during GET", facility="tahoe.webish", failure=f,
                  level=log.UNUSUAL, umid="xSiF3w")
     if finished:
         log.msg("but it's too late to tell them", parent=lp,
                 level=log.UNUSUAL, umid="j1xIbw")
         return
     req._tahoe_request_had_error = f # for HTTP-style logging
     if req.startedWriting:
         # The content-type is already set, and the response code has
         # already been sent, so we can't provide a clean error
         # indication. We can emit text (which a browser might
         # interpret as something else), and if we sent a Size header,
         # they might notice that we've truncated the data. Keep the
         # error message small to improve the chances of having our
         # error response be shorter than the intended results.
         #
         # We don't have a lot of options, unfortunately.
         req.write("problem during download\n")
         req.finish()
     else:
         # We haven't written anything yet, so we can provide a
         # sensible error message.
         eh = MyExceptionHandler()
         eh.renderHTTP_exception(ctx, f)
Example #3
0
    def buildServer(self, webport, nodeurl_path, staticdir):
        self.webport = webport
        self.site = site = appserver.NevowSite(self.root)
        self.site.requestFactory = MyRequest
        self.site.remember(MyExceptionHandler(), inevow.ICanHandleException)
        self.staticdir = staticdir  # so tests can check
        if staticdir:
            self.root.putChild("static", static.File(staticdir))
        if re.search(r'^\d', webport):
            webport = "tcp:" + webport  # twisted warns about bare "0" or "3456"
        s = strports.service(webport, site)
        s.setServiceParent(self)

        self._scheme = None
        self._portnum = None
        self._url = None
        self._listener = s  # stash it so we can query for the portnum

        self._started = defer.Deferred()
        if nodeurl_path:

            def _write_nodeurl_file(ign):
                # this file will be created with default permissions
                line = self.getURL() + "\n"
                fileutil.write_atomically(nodeurl_path, line, mode="")

            self._started.addCallback(_write_nodeurl_file)