sig
  exception Ocsigen_404
  exception Ocsigen_Is_a_directory
  exception Ocsigen_malformed_url
  exception Ocsigen_Internal_Error of string
  exception Bad_config_tag_for_extension of string
  exception Error_in_config_file of string
  type url_path = string list
  type current_url = string list
  type current_dir = string list
  type file_info = {
    tmp_filename : string;
    filesize : int64;
    original_filename : string;
  }
  type request_info = {
    ri_url : string;
    ri_path_string : string;
    ri_path : string list;
    ri_params : string;
    ri_host : string option;
    ri_get_params : (string * string) list Lazy.t;
    ri_post_params : (string * string) list Lwt.t Lazy.t;
    ri_files : (string * Extensions.file_info) list Lwt.t Lazy.t;
    ri_inet_addr : Unix.inet_addr;
    ri_ip : string;
    ri_port : int;
    ri_user_agent : string;
    ri_cookies : (string * string) list Lazy.t;
    ri_ifmodifiedsince : float option;
    ri_http_frame : Predefined_senders.Stream_http_frame.http_frame;
  }
  type result = {
    res_cookies : (string * string) list;
    res_path : string;
    res_lastmodified : float option;
    res_etag : Http_frame.etag option;
    res_code : int option;
    res_send_page : Predefined_senders.send_page_type;
    res_create_sender : Predefined_senders.create_sender_type;
    res_charset : string option;
  }
  type charset_tree_type
  type answer =
      Ext_found of Extensions.result
    | Ext_not_found
    | Ext_continue_with of Extensions.request_info
  val register_extension :
    (Ocsimisc.virtual_hosts ->
     (string option -> Extensions.request_info -> Extensions.answer Lwt.t) *
     (string list -> Simplexmlparser.ExprOrPatt.texprpatt -> unit)) *
    (unit -> unit) * (unit -> unit) * (exn -> string) -> unit
  val create_virthost :
    Ocsimisc.virtual_hosts ->
    ((Extensions.request_info -> Extensions.answer Lwt.t) *
     (string list -> Simplexmlparser.ExprOrPatt.texprpatt -> unit)) *
    (string option -> string list -> unit)
  val set_virthosts :
    (Ocsimisc.virtual_hosts *
     (Extensions.request_info -> Extensions.answer Lwt.t))
    list -> unit
  val get_virthosts :
    unit ->
    (Ocsimisc.virtual_hosts *
     (Extensions.request_info -> Extensions.answer Lwt.t))
    list
  val add_virthost :
    Ocsimisc.virtual_hosts *
    (Extensions.request_info -> Extensions.answer Lwt.t) -> unit
  val do_for_host_matching :
    string option ->
    int ->
    ((Ocsimisc.virtual_host_part list * int option) list *
     ('-> Extensions.answer Lwt.t))
    list -> '-> Extensions.result Lwt.t
  val get_number_of_connected : unit -> int
  val get_number_of_connected : unit -> int
  val incr_connected : unit -> unit
  val decr_connected : unit -> unit
  val during_initialisation : unit -> bool
  val start_initialisation : unit -> unit
  val end_initialisation : unit -> unit
  val get_init_exn_handler : unit -> exn -> string
end