• Posts
  • RSS
  • ◂◂RSS
  • Contact

  • Serf Error Codes

    October 21st, 2015
    pagespeed, tech  [html]
    PageSpeed uses serf to fetch things over http. Sometimes serf gives errors back to PageSpeed that get reported in error messages:
      Serf status 120171(APR does not understand this error code)
    
    The serf documentation is limited, however, so it's hard to look these up. So here's a reference, from serf.h in serf 1.3.8:

    code meaning
    120101 This code is for when this is the last response on this connection: i.e. do not send any more requests on this connection or expect any more responses.
    120102 This code is for when the connection terminated before the request could be processed on the other side.
    120103 This code is for when the connection is blocked—we can not proceed until something happens - generally due to SSL negotiation-like behavior where a write() is blocked until a read() is processed.
    120104 This code is for when something went wrong during deflating compressed data e.g. a CRC error.
    120105 This code is for when a response received from a http server is not in http-compliant syntax.
    120106 The server sent less data than what was announced.
    120107 The proxy server returned an error while setting up the SSL tunnel.
    120108 The server unexpectedly closed the connection prematurely.
    120170 SSL certificates related errors.
    120171 SSL communications related errors.
    120190 General authentication related errors.
    120191 None of the available authentication mechanisms for the request are supported.
    120192 Authentication was requested by the server but the header lacked some attribute.
    120193 Authentication handler initialization related errors.
    120199 Error code reserved for use in the test suite.

    Why are these hard to look up in the code? They're all defined with macros:

      #define SERF_ERROR_RANGE 100
      #define SERF_ERROR_START \
        (APR_OS_START_USERERR + \
         SERF_ERROR_RANGE)
    
      #define SERF_ERROR_CLOSING \
        (SERF_ERROR_START + 1)
      #define SERF_ERROR_REQUEST_LOST \
        (SERF_ERROR_START + 2)
      ...
    
    This means that a search for [120108] or something won't turn anything up, which is annoying. This also means that on some platforms serf error codes can have a different prefix. In PageSpeed, though, this is all determined at compile time because it includes its dependencies, so it should be the same everywhere.

    Comment via: google plus

    Recent posts on blogs I like:

    Austerity is Inefficient

    Working on an emergency timetable for regional rail has made it clear how an environment of austerity requires tradeoffs that reduce efficiency. I already talked about how the Swiss electronics before concrete slogan is not about not spending money but ab…

    via Pedestrian Observations February 27, 2021

    Fireside Friday, February 26, 2021

    Fireside this week, but next week we are diving into our long awaited series on pre-modern textile production, though we will be particularly focused on the most important clothing fibers in the Mediterranean world, wool and linen (rather than, say, silk …

    via A Collection of Unmitigated Pedantry February 26, 2021

    The Troubling Ethics of Writing (A Speech from Ancient Sumer)

    (Translated from a transcript of an ancient Sumerian speech by Uruk's most well-respected Scriptological Ethicist) Writing is a profoundly dangerous technology: Access to writing was initially, and still remains, uneven. What's worse, the rich are m…

    via BLOG - Cullen O'Keefe February 15, 2021

    more     (via openring)


  • Posts
  • RSS
  • ◂◂RSS
  • Contact