92
92
{SocketType, Socket} = await_socket_ownership_transfer(AcceptTimeout),
94
TimeOut = httpd_util:lookup(ConfigDB, keep_alive_timeout, 150000),
98
case http_transport:negotiate(SocketType,Socket,TimeOut) of
100
exit(Error); %% Can be 'normal'.
102
NewTimeout = TimeOut - timer:now_diff(now(),Then) div 1000,
103
continue_init(Manager, ConfigDB, SocketType,Socket,NewTimeout)
106
continue_init(Manager, ConfigDB, SocketType, Socket, TimeOut) ->
94
107
Resolve = http_transport:resolve(),
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,
100
init_data = InitData},
102
MaxHeaderSize = httpd_util:lookup(ConfigDB, max_header_size,
111
Mod = #mod{config_db = ConfigDB,
112
socket_type = SocketType,
114
init_data = InitData},
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),
110
123
{_, Status} = httpd_manager:new_connection(Manager),
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,
127
mfa = {httpd_request, parse, [{MaxURISize,
118
130
NewState = activate_request_timeout(State),
120
132
http_transport:setopts(SocketType, Socket, [binary,{packet, 0},
121
133
{active, once}]),
122
134
gen_server:enter_loop(?MODULE, [], NewState).
124
136
%%====================================================================
125
137
%% gen_server callbacks
126
138
%%====================================================================