anchor.diff:            authorization,
             transfer_encoding,
             x_forwarded_for,
  -          other = []   %% misc other headers
  +          other = []   % misc other headers
            }).
   
   
   
   
   -record(url,
  -        {scheme,          %% undefined means not set
  -         host,            %% undefined means not set
  -         port,            %% undefined means not set
  +        {scheme,          % undefined means not set
  +         host,            % undefined means not set
  +         port,            % undefined means not set
            path = [],
            querypart = []}).
   
  
positive.code: -author('klacke@hyber.org').
  
  -record(arg, {
            clisock,        %% the socket leading to the peer client
            client_ip_port, %% {ClientIp, ClientPort} tuple
            headers,        %% headers
            req,            %% request
            clidata,        %% The client data (as a binary in POST requests)
            server_path,    %% The normalized server path
                            %% (pre-querystring part of URI)
            querydata,      %% For URIs of the form ...?querydata
                            %%  equiv of cgi QUERY_STRING
            appmoddata,     %% (deprecated - use pathinfo instead) the remainder
                            %% of the path leading up to the query
            docroot,        %% Physical base location of data for this request
            docroot_mount,  %% virtual directory e.g /myapp/ that the docroot
                            %%  refers to.
            fullpath,       %% full deep path to yaws file
            cont,           %% Continuation for chunked multipart uploads
            state,          %% State for use by users of the out/1 callback
            pid,            %% pid of the yaws worker process
            opaque,         %% useful to pass static data
            appmod_prepath, %% (deprecated - use prepath instead) path in front
                            %%of: <appmod><appmoddata>
            prepath,        %% Path prior to 'dynamic' segment of URI.
                            %%  ie http://some.host/<prepath>/<script-point>/d/e
                            %% where <script-point> is an appmod mount point,
                            %% or .yaws,.php,.cgi,.fcgi etc script file.
            pathinfo        %% Set to '/d/e' when calling c.yaws for the request
                            %% http://some.host/a/b/c.yaws/d/e
                            %%  equiv of cgi PATH_INFO
           }).
  
  
  
negative.code: 
  
  -record(redir_self, {
            host,        % string() - our own host
            scheme,      % http | https
            scheme_str,  % "https://"  | "http://"
            port,        % integer()  - our own port
            port_str     % "" | ":<int>" - the optional port part
                         %                 to append to the url
           }).
  
  %% Corresponds to the frame sections as in
  %% http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-08#section-4
  %% plus 'data' and 'ws_state'
  -record(ws_frame_info, {
            fin,
            rsv,
            opcode,
            masked,
            masking_key,
            length,
            payload,
            data,        % The unmasked payload. Makes payload redundant.
            ws_state     % The ws_state after unframing this frame.
                         % This is useful for the endpoint to know what type of
                         % fragment a potentially fragmented message is.
           }).
  
  %%----------------------------------------------------------------------
  %% The state of a WebSocket connection.
  %% This is held by the ws owner process and passed in calls to yaws_api.
  %%----------------------------------------------------------------------
  -type frag_type() :: text
                     | binary
                     | none.  % The WebSocket is not expecting continuation
                              % of any fragmented message.
  -record(ws_state, {
            vsn :: integer(),                     % WebSocket version number
            sock,                                 % gen_tcp or gen_ssl socket
            frag_type :: frag_type()
           }).
  