Changeset 1113

Show
Ignore:
Timestamp:
06/29/08 17:15:57 (2 months ago)
Author:
kris
Message:

added initial support for "Keep-Alive:timeout"

Files:

Legend:

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

    r1112 r1113  
    1313module mango.net.http.server.HttpBridge; 
    1414 
    15 private import  tango.net.Socket
     15private import  tango.net.SocketConduit
    1616 
    1717private import  tango.net.http.HttpConst; 
     
    2020 
    2121private import  mango.net.util.model.IServer; 
     22 
     23private import  tango.text.convert.Integer : atoi; 
    2224 
    2325private import  mango.net.http.server.HttpThread, 
     
    102104                   response.reset; 
    103105 
    104                    // first, extract HTTP headers from input (this may timeout) 
     106                   // first, extract HTTP headers from input (ignore timeout) 
    105107                   try { 
    106108                       request.readHeaders; 
    107  
    108109                       } catch (Exception x) 
    109                                { 
    110                                break; 
    111                                } 
     110                                break; 
    112111 
    113112                   // check for Connection:close 
    114                    if (++count < 20 && "close" != request.getInputHeaders.get(HttpHeader.Connection)) 
    115                        response.keepAlive = true; 
     113                   auto headers = request.getInputHeaders; 
     114                   if (++count < 32 && "close" != headers.get(HttpHeader.Connection)) 
     115                      { 
     116                      response.keepAlive = true; 
     117 
     118                      // set timeout via first request 
     119                      if (count is 1) 
     120                         { 
     121                         auto time = headers.get(HttpHeader.KeepAlive); 
     122                         if (time.length) 
     123                             (cast(SocketConduit) conduit).setTimeout (atoi(time) / 1000.0); 
     124                         } 
     125                      } 
    116126 
    117127                   // pass request off to the provider. It is the provider's