~rdoering/ubuntu/karmic/erlang/fix-535090

« back to all changes in this revision

Viewing changes to lib/inets/src/http_server/httpd_request_handler.erl

  • Committer: Bazaar Package Importer
  • Author(s): Sergei Golovan
  • Date: 2009-02-15 16:42:52 UTC
  • mfrom: (3.1.2 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090215164252-q5x4rcf8a5pbesb1
Tags: 1:12.b.5-dfsg-2
Upload to unstable after lenny is released.

Show diffs side-by-side

added added

removed removed

Lines of Context:
91
91
    
92
92
    {SocketType, Socket} = await_socket_ownership_transfer(AcceptTimeout),
93
93
    
 
94
    TimeOut = httpd_util:lookup(ConfigDB, keep_alive_timeout, 150000),
 
95
 
 
96
    Then = erlang:now(),
 
97
    
 
98
    case http_transport:negotiate(SocketType,Socket,TimeOut) of
 
99
        {error, Error} ->
 
100
            exit(Error); %% Can be 'normal'.
 
101
        ok ->
 
102
            NewTimeout = TimeOut - timer:now_diff(now(),Then) div 1000,
 
103
            continue_init(Manager, ConfigDB, SocketType,Socket,NewTimeout)
 
104
    end.
 
105
 
 
106
continue_init(Manager, ConfigDB, SocketType, Socket, TimeOut) ->
94
107
    Resolve = http_transport:resolve(),
 
108
    
95
109
    Peername = httpd_socket:peername(SocketType, Socket),
96
110
    InitData = #init_data{peername = Peername, resolve = Resolve},
97
 
    Mod = #mod{config_db = ConfigDB, 
98
 
               socket_type = SocketType, 
99
 
               socket = Socket,
100
 
               init_data = InitData},
101
 
 
102
 
    MaxHeaderSize = httpd_util:lookup(ConfigDB, max_header_size, 
 
111
    Mod = #mod{config_db = ConfigDB,
 
112
               socket_type = SocketType,
 
113
               socket = Socket,
 
114
               init_data = InitData},
 
115
    
 
116
    MaxHeaderSize = httpd_util:lookup(ConfigDB, max_header_size,
103
117
                                      ?HTTP_MAX_HEADER_SIZE),
104
 
    MaxURISize = httpd_util:lookup(ConfigDB, max_uri_size, 
 
118
    MaxURISize = httpd_util:lookup(ConfigDB, max_uri_size,
105
119
                                   ?HTTP_MAX_URI_SIZE),
106
 
    TimeOut = httpd_util:lookup(ConfigDB, keep_alive_timeout, 150000),
107
 
    NrOfRequest = httpd_util:lookup(ConfigDB, 
 
120
    NrOfRequest = httpd_util:lookup(ConfigDB,
108
121
                                    max_keep_alive_request, infinity),
109
122
    
110
123
    {_, Status} = httpd_manager:new_connection(Manager),
111
124
    
112
 
    
113
125
    State = #state{mod = Mod, manager = Manager, status = Status,
114
126
                   timeout = TimeOut, max_keep_alive_request = NrOfRequest,
115
 
                   mfa = {httpd_request, parse, [{MaxURISize, 
116
 
                                                  MaxHeaderSize}]}}, 
 
127
                   mfa = {httpd_request, parse, [{MaxURISize,
 
128
                                                  MaxHeaderSize}]}},
117
129
    
118
130
    NewState = activate_request_timeout(State),
119
 
 
 
131
    
120
132
    http_transport:setopts(SocketType, Socket, [binary,{packet, 0},
121
133
                                                {active, once}]),
122
134
    gen_server:enter_loop(?MODULE, [], NewState).
123
 
            
 
135
 
124
136
%%====================================================================
125
137
%% gen_server callbacks
126
138
%%====================================================================
526
538
        _ ->
527
539
            ok
528
540
    end.
529