Changeset 1083

Show
Ignore:
Timestamp:
06/10/08 19:52:39 (4 months ago)
Author:
kris
Message:

added checks for partial requests, incoming over a period of time -- such as telnet requests. Also added a default read-timeout of 15 seconds to the HttpServer?

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/mango/net/http/server/HttpMessage.d

    r1042 r1083  
    8282                // create a buffer for incoming requests 
    8383                buffer = new Buffer (HttpHeader.IOBufferSize); 
     84 
     85                // set no compression on this buffer, so that partial input 
     86                // is supported (with slicing) when parsing tokens 
     87                buffer.compress(false); 
    8488 
    8589                // reuse the input buffer for headers too? 
  • trunk/mango/net/http/server/HttpRequest.d

    r939 r1083  
    113113                gulped = false; 
    114114 
    115                 uri.reset()
    116                 super.reset()
    117                 params.reset()
    118                 cookies.reset()
     115                uri.reset
     116                super.reset
     117                params.reset
     118                cookies.reset
    119119        } 
    120120         
     
    141141                   { 
    142142                   uri.parse (startLine.getPath); 
    143                    if (uri.getScheme() is null) 
     143                   if (uri.getScheme is null) 
    144144                       uri.setScheme (getServerScheme); 
    145145                   uried = true; 
     
    202202                if (gulped) 
    203203                    throw InvalidState; 
    204                 return getHeader()
     204                return getHeader
    205205        } 
    206206 
     
    217217                if (! params.isParsed) 
    218218                   { 
    219                    char[] query = getRequestUri.getQuery()
     219                   char[] query = getRequestUri.getQuery
    220220 
    221221                   // do we have a query string? 
     
    225225                   else 
    226226                      // nope; do we have POST parameters? 
    227                       if (startLine.getMethod() == "POST" &&  
    228                           super.getContentType() == "application/x-www-form-urlencoded") 
     227                      if (startLine.getMethod == "POST" &&  
     228                          super.getContentType == "application/x-www-form-urlencoded") 
    229229                         { 
    230230                         // yep; parse from input buffer 
     
    260260                // User is reading input. Cannot read headers anymore 
    261261                gulped = true; 
    262                 return super.getBuffer()
     262                return super.getBuffer
    263263        } 
    264264 
     
    284284        void readHeaders() 
    285285        { 
    286                 auto input = super.getBuffer()
     286                auto input = super.getBuffer
    287287                line.set (input); 
    288288 
     
    292292 
    293293                // is this a bogus request? 
    294                 if (input.readable() == 0) 
     294                if (input.readable is 0 && line.get.length is 0) 
    295295                    throw new IOException ("truncated request"); 
    296296                     
     
    299299 
    300300                // populate headers 
    301                 getHeader().parse (input); 
     301                getHeader.parse (input); 
    302302                
    303303                version (ShowHeaders) 
    304304                        {         
    305                         Stdout.cr().put(">>>> request Headers:").cr()
    306                         getHeader().write (Stdout); 
     305                        Stdout.newline.print(">>>> request Headers:").newline
     306                        getHeader.produce ((void[] s){Stdout.print(cast(char[]) s);}, "\r\n"); 
    307307                        } 
    308308        } 
     
    316316        char[] getRemoteAddr() 
    317317        { 
    318                 return getBridge().getServer().getRemoteAddress(getConduit); 
     318                return getBridge.getServer.getRemoteAddress(getConduit); 
    319319        } 
    320320 
     
    327327        char[] getRemoteHost() 
    328328        { 
    329                 return getBridge().getServer().getRemoteHost(getConduit); 
     329                return getBridge.getServer.getRemoteHost(getConduit); 
    330330        } 
    331331 
     
    338338        char[] getServerScheme() 
    339339        { 
    340                 return getBridge().getServer().getProtocol()
     340                return getBridge.getServer.getProtocol
    341341        } 
    342342 
     
    349349        char[] getEncoding() 
    350350        { 
    351                 getMimeType()
    352                 return super.getEncoding()
     351                getMimeType
     352                return super.getEncoding
    353353        } 
    354354 
     
    363363                if (! mimed) 
    364364                   { 
    365                    setMimeAndEncoding (super.getContentType()); 
     365                   setMimeAndEncoding (super.getContentType); 
    366366                   mimed = true; 
    367367                   } 
    368                 return super.getMimeType()
     368                return super.getMimeType
    369369        } 
    370370 
     
    379379                if (port == Uri.InvalidPort) 
    380380                   { 
    381                    getHost()
     381                   getHost
    382382                   if (port == Uri.InvalidPort) 
    383383                       // return port from server connection 
    384                        port = getBridge().getServer().getPort()
     384                       port = getBridge.getServer.getPort
    385385                   } 
    386386                return port; 
     
    402402 
    403403                // return host from absolute uri (make sure we parse it first) 
    404                 Uri uri = getRequestUri ()
    405  
    406                 host = uri.getHost ()
    407                 port = uri.getPort ()
     404                Uri uri = getRequestUri
     405 
     406                host = uri.getHost
     407                port = uri.getPort
    408408                if (host.length) 
    409409                    return host; 
    410410 
    411411                // return host from header field 
    412                 host = Text.trim (getHeader().get(HttpHeader.Host)); 
     412                host = Text.trim (getHeader.get(HttpHeader.Host)); 
    413413                port = Uri.InvalidPort; 
    414414 
     
    424424                else 
    425425                   // return host from server connection 
    426                    host = getBridge().getServer().getHost()
     426                   host = getBridge.getServer.getHost
    427427                 
    428428                return host; 
  • trunk/mango/net/http/server/HttpServer.d

    r1062 r1083  
    106106        override ServerSocket createSocket (InternetAddress bind, int backlog, bool reuse=false) 
    107107        { 
    108                 return new ServerSocket (bind, backlog, reuse); 
     108                auto server = new ServerSocket (bind, backlog, reuse); 
     109 
     110                // set a default read timeout? 
     111                server.setTimeout (15.0); 
     112                return server; 
    109113        } 
    110114