1
%% ``The contents of this file are subject to the Erlang Public License,
2
%% Version 1.1, (the "License"); you may not use this file except in
3
%% compliance with the License. You should have received a copy of the
4
%% Erlang Public License along with this software. If not, it can be
5
%% retrieved via the world wide web at http://www.erlang.org/.
7
%% Software distributed under the License is distributed on an "AS IS"
8
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
9
%% the License for the specific language governing rights and limitations
12
%% The Initial Developer of the Original Code is Ericsson Utvecklings AB.
13
%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
14
%% AB. All Rights Reserved.''
16
%% $Id: mod_trace.erl,v 1.1 2008/12/17 09:53:36 mikpe Exp $
22
-include("httpd.hrl").
27
case Info#mod.method of
29
case httpd_util:response_generated(Info) of
31
generate_trace_response(Info);
33
{proceed,Info#mod.data}
36
{proceed,Info#mod.data}
40
%%---------------------------------------------------------------------
41
%%Generate the trace response the trace response consists of a
42
%%http-header and the body will be the request.
43
%5----------------------------------------------------------------------
45
generate_trace_response(Info)->
46
RequestHead=Info#mod.parsed_header,
47
Body=generate_trace_response_body(RequestHead),
49
Response=["HTTP/1.1 200 OK\r\n",
50
"Content-Type:message/http\r\n",
51
"Content-Length:",integer_to_list(Len),"\r\n\r\n",
52
Info#mod.request_line,Body],
53
httpd_socket:deliver(Info#mod.socket_type,Info#mod.socket,Response),
54
{proceed,[{response,{already_sent,200,Len}}|Info#mod.data]}.
56
generate_trace_response_body(Parsed_header)->
57
generate_trace_response_body(Parsed_header,[]).
59
generate_trace_response_body([],Head)->
61
generate_trace_response_body([{[],[]}|Rest],Head) ->
62
generate_trace_response_body(Rest,Head);
63
generate_trace_response_body([{Field,Value}|Rest],Head) ->
64
generate_trace_response_body(Rest,[Field ++ ":" ++ Value ++ "\r\n"|Head]).