Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.oldstuff.proxyServer.daemon
on daemon (pta, httpRequest=nil) { while system.temp.Frontier.startingUp { //6.0, wait here until Frontier has finished starting up if (defined (user.webserver.prefs.flWaitDuringStartup)) and (not user.webserver.prefs.flWaitDuringStartup) { //PBS 3/19/99 break}; thread.sleepFor (1)}; if httpRequest != nil { pta^.request = httpRequest} else { pta^.request = string (webserver.util.readUntil (pta^.stream, "\r\n\r\n", pta^.timeout))}; new (tableType, @pta^.requestHeaders); pta^.firstLine = webserver.util.parseHeaders (pta^.request, @pta^.requestHeaders); if defined (pta^.requestHeaders.Expect) { return (webserver.util.buildResponse (417))}; // we can't live up to the client's expectations bundle { //now that the headers are parsed, make sure we have the whole body pta^.requestBody = ""; if defined (pta^.requestHeaders.["Content-Length"]) { local (len = number (pta^.requestHeaders.["Content-Length"])); local (ix = string.patternmatch ("\r\n\r\n", pta^.request)); pta^.requestBody = string.delete (pta^.request, 1, ix + 3); if sizeOf (pta^.requestBody) < len { local (bytesToRead = len - sizeOf (pta^.requestBody)); local (bytes = webserver.util.readBytes (pta^.stream, bytesToRead, pta^.timeout)); pta^.requestBody = pta^.requestBody + bytes}; if sizeOf (pta^.requestBody) < len { <<we couldn't read the whole body for some reason return (webserver.util.buildResponse (400, nil, webserver.util.buildErrorPage ("400 Bad Request", "The request body couldn't be read.")))}; if sizeOf (pta^.requestBody) > len { // strip off any traling junk pta^.requestBody = string.delete (pta^.requestBody, len +1, infinity)}}}; <<scratchpad.params = pta^; edit (@scratchpad.params) scratchpad.httpRequest = httpRequest; return ("hello world")}
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.