sig
  exception Standard_response of Nethttp.http_status *
              Nethttp.http_header option * string option
  class type virtual v_extended_environment =
    object
      method cgi_auth_type : string
      method cgi_gateway_interface : string
      method cgi_https : bool
      method cgi_path_info : string
      method cgi_path_translated : string
      method cgi_properties : (string * string) list
      method cgi_property : ?default:string -> string -> string
      method cgi_query_string : string
      method cgi_remote_addr : string
      method cgi_remote_host : string
      method cgi_remote_ident : string
      method cgi_remote_user : string
      method cgi_request_method : string
      method cgi_request_uri : string
      method cgi_script_name : string
      method cgi_server_name : string
      method cgi_server_port : int option
      method cgi_server_protocol : string
      method cgi_server_software : string
      method config : Netcgi_env.cgi_config
      method cookies : (string * string) list
      method input_ch : Netchannels.in_obj_channel
      method input_content_length : int
      method input_content_type : string * (string * Mimestring.s_param) list
      method input_content_type_string : string
      method input_header : Netmime.mime_header
      method input_header_field : ?default:string -> string -> string
      method input_header_fields : (string * string) list
      method input_state : Netcgi_env.input_state
      method log_error : string -> unit
      method multiple_input_header_field : string -> string list
      method multiple_output_header_field : string -> string list
      method output_ch : Netchannels.out_obj_channel
      method output_header : Netmime.mime_header
      method output_header_field : ?default:string -> string -> string
      method output_header_fields : (string * string) list
      method output_state : Netcgi_env.output_state
      method protocol : Netcgi_env.protocol
      method virtual remote_socket_addr : Unix.sockaddr
      method send_file : Unix.file_descr -> int64 -> unit
      method send_output_header : unit -> unit
      method virtual server_socket_addr : Unix.sockaddr
      method set_input_state : Netcgi_env.input_state -> unit
      method set_multiple_output_header_field : string -> string list -> unit
      method set_output_header_field : string -> string -> unit
      method set_output_header_fields : (string * string) list -> unit
      method set_output_state : Netcgi_env.output_state -> unit
      method set_status : Nethttp.http_status -> unit
      method user_agent : string
    end
  class type extended_environment =
    object
      method cgi_auth_type : string
      method cgi_gateway_interface : string
      method cgi_https : bool
      method cgi_path_info : string
      method cgi_path_translated : string
      method cgi_properties : (string * string) list
      method cgi_property : ?default:string -> string -> string
      method cgi_query_string : string
      method cgi_remote_addr : string
      method cgi_remote_host : string
      method cgi_remote_ident : string
      method cgi_remote_user : string
      method cgi_request_method : string
      method cgi_request_uri : string
      method cgi_script_name : string
      method cgi_server_name : string
      method cgi_server_port : int option
      method cgi_server_protocol : string
      method cgi_server_software : string
      method config : Netcgi_env.cgi_config
      method cookies : (string * string) list
      method input_ch : Netchannels.in_obj_channel
      method input_content_length : int
      method input_content_type : string * (string * Mimestring.s_param) list
      method input_content_type_string : string
      method input_header : Netmime.mime_header
      method input_header_field : ?default:string -> string -> string
      method input_header_fields : (string * string) list
      method input_state : Netcgi_env.input_state
      method log_error : string -> unit
      method multiple_input_header_field : string -> string list
      method multiple_output_header_field : string -> string list
      method output_ch : Netchannels.out_obj_channel
      method output_header : Netmime.mime_header
      method output_header_field : ?default:string -> string -> string
      method output_header_fields : (string * string) list
      method output_state : Netcgi_env.output_state
      method protocol : Netcgi_env.protocol
      method remote_socket_addr : Unix.sockaddr
      method send_file : Unix.file_descr -> int64 -> unit
      method send_output_header : unit -> unit
      method server_socket_addr : Unix.sockaddr
      method set_input_state : Netcgi_env.input_state -> unit
      method set_multiple_output_header_field : string -> string list -> unit
      method set_output_header_field : string -> string -> unit
      method set_output_header_fields : (string * string) list -> unit
      method set_output_state : Netcgi_env.output_state -> unit
      method set_status : Nethttp.http_status -> unit
      method user_agent : string
    end
  class virtual empty_environment :
    object
      val mutable protocol : Netcgi_env.protocol
      val mutable properties : (string * string) list
      val mutable out_state : Netcgi_env.output_state
      val mutable out_header : Nethttp.http_header
      val mutable out_channel : Netchannels.out_obj_channel
      val mutable in_state : Netcgi_env.input_state
      val mutable in_header : Nethttp.http_header
      val mutable in_channel : Netchannels.in_obj_channel
      val mutable config : Netcgi_env.cgi_config
      method cgi_auth_type : string
      method cgi_gateway_interface : string
      method cgi_https : bool
      method cgi_path_info : string
      method cgi_path_translated : string
      method cgi_properties : (string * string) list
      method cgi_property : ?default:string -> string -> string
      method cgi_query_string : string
      method cgi_remote_addr : string
      method cgi_remote_host : string
      method cgi_remote_ident : string
      method cgi_remote_user : string
      method cgi_request_method : string
      method cgi_request_uri : string
      method cgi_script_name : string
      method cgi_server_name : string
      method cgi_server_port : int option
      method cgi_server_protocol : string
      method cgi_server_software : string
      method config : Netcgi_env.cgi_config
      method cookies : (string * string) list
      method input_ch : Netchannels.in_obj_channel
      method input_content_length : int
      method input_content_type : string * (string * Mimestring.s_param) list
      method input_content_type_string : string
      method input_header : Netmime.mime_header
      method input_header_field : ?default:string -> string -> string
      method input_header_fields : (string * string) list
      method input_state : Netcgi_env.input_state
      method log_error : string -> unit
      method multiple_input_header_field : string -> string list
      method multiple_output_header_field : string -> string list
      method output_ch : Netchannels.out_obj_channel
      method output_header : Netmime.mime_header
      method output_header_field : ?default:string -> string -> string
      method output_header_fields : (string * string) list
      method output_state : Netcgi_env.output_state
      method protocol : Netcgi_env.protocol
      method virtual remote_socket_addr : Unix.sockaddr
      method send_file : Unix.file_descr -> int64 -> unit
      method send_output_header : unit -> unit
      method virtual server_socket_addr : Unix.sockaddr
      method set_input_state : Netcgi_env.input_state -> unit
      method set_multiple_output_header_field : string -> string list -> unit
      method set_output_header_field : string -> string -> unit
      method set_output_header_fields : (string * string) list -> unit
      method set_output_state : Netcgi_env.output_state -> unit
      method set_status : Nethttp.http_status -> unit
      method user_agent : string
    end
  class redirected_environment :
    ?in_state:Netcgi_env.input_state ->
    ?in_header:Nethttp.http_header ->
    ?properties:(string * string) list ->
    ?in_channel:Netchannels.in_obj_channel ->
    Nethttpd_types.extended_environment -> extended_environment
  val output_static_response :
    #Nethttpd_types.extended_environment ->
    Nethttp.http_status -> Nethttp.http_header option -> string -> unit
  val output_file_response :
    #Nethttpd_types.extended_environment ->
    Nethttp.http_status ->
    Nethttp.http_header option -> string -> int64 -> int64 -> unit
  class type min_config =
    object
      method config_error_response : int -> string
      method config_log_error :
        Unix.sockaddr option ->
        Unix.sockaddr option ->
        Nethttp.http_method option ->
        Nethttp.http_header option -> string -> unit
    end
  val output_std_response :
    #Nethttpd_types.min_config ->
    #Nethttpd_types.extended_environment ->
    Nethttp.http_status ->
    Nethttp.http_header option -> string option -> unit
  exception Redirect_request of string * Nethttp.http_header
  exception Redirect_response of string * Nethttp.http_header
  class type http_service_generator =
    object
      method generate_response : Nethttpd_types.extended_environment -> unit
    end
  class type http_service_receiver =
    object
      method process_body :
        Nethttpd_types.extended_environment ->
        Nethttpd_types.http_service_generator
    end
  type http_service_reaction =
    [ `Accept_body of Nethttpd_types.http_service_receiver
    | `File of
        Nethttp.http_status * Nethttp.http_header option * string * int64 *
        int64
    | `Reject_body of Nethttpd_types.http_service_generator
    | `Static of Nethttp.http_status * Nethttp.http_header option * string
    | `Std_response of
        Nethttp.http_status * Nethttp.http_header option * string option ]
  class type ['a] http_service =
    object
      method def_term : 'a
      method name : string
      method print : Format.formatter -> unit
      method process_header :
        Nethttpd_types.extended_environment ->
        Nethttpd_types.http_service_reaction
    end
  val update_alist : ('a * 'b) list -> ('a * 'b) list -> ('a * 'b) list
end