sig
  exception Ocsigen_http_error of int
  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
  val string_of_url_path : Extensions.url_path -> string
  type virtual_host_part = Text of string * int | Wildcard
  type virtual_hosts = (Extensions.virtual_host_part list * int option) list
  type file_info = {
    tmp_filename : string;
    filesize : int64;
    original_filename : string;
  }
  type request_info = {
    ri_url_string : string;
    ri_url : Neturl.url;
    ri_method : Http_frame.Http_header.http_method;
    ri_protocol : Http_frame.Http_header.proto;
    ri_path_string : string;
    ri_full_path : string list;
    ri_sub_path : string list;
    ri_sub_path_string : string Lazy.t;
    ri_get_params_string : string option;
    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_ip32 : int32 Lazy.t;
    ri_remote_port : int;
    ri_port : int;
    ri_user_agent : string;
    ri_cookies_string : string option Lazy.t;
    ri_cookies : string Http_frame.Cookievalues.t Lazy.t;
    ri_ifmodifiedsince : float option;
    ri_ifunmodifiedsince : float option;
    ri_ifnonematch : string list;
    ri_ifmatch : string list option;
    ri_content_type : string option;
    ri_content_length : int64 option;
    ri_referer : string option Lazy.t;
    ri_accept :
      ((string option * string option) * float option *
       (string * string) list)
      list Lazy.t;
    ri_accept_charset : (string option * float option) list Lazy.t;
    ri_accept_encoding : (string option * float option) list Lazy.t;
    ri_accept_language : (string * float option) list Lazy.t;
    ri_http_frame : Http_frame.t;
    ri_extension_info : exn list;
  }
  type answer =
      Ext_found of Http_frame.result
    | Ext_not_found of int
    | Ext_stop of int
    | Ext_continue_with of Extensions.request_info * Http_frame.cookieset *
        int
    | Ext_retry_with of Extensions.request_info * Http_frame.cookieset
  type extension =
      Page_gen of
        (int -> string -> Extensions.request_info -> Extensions.answer Lwt.t)
    | Filter of
        (string ->
         Extensions.request_info ->
         Http_frame.result -> Extensions.answer Lwt.t)
  val register_extension :
    (Extensions.virtual_hosts ->
     Extensions.url_path ->
     string option -> Simplexmlparser.xml -> Extensions.extension) *
    (unit -> unit) * (unit -> unit) * (exn -> string) -> unit
  val get_config : unit -> Simplexmlparser.xml list
  val ri_of_url :
    string -> Extensions.request_info -> Extensions.request_info
  val parse_url :
    string ->
    string * Neturl.url * string list * string option *
    (string * string) list Lazy.t
  val parse_site :
    Extensions.virtual_hosts ->
    Extensions.url_path ->
    string option -> Simplexmlparser.xml list -> Extensions.extension list
  val set_sites :
    (Extensions.virtual_hosts * Extensions.url_path * string option *
     Extensions.extension list)
    list -> unit
  val get_sites :
    unit ->
    (Extensions.virtual_hosts * Extensions.url_path * string option *
     Extensions.extension list)
    list
  val add_site :
    Extensions.virtual_hosts * Extensions.url_path * string option *
    Extensions.extension list -> unit
  val do_for_site_matching :
    string option ->
    int -> Extensions.request_info -> Http_frame.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_numberofreloads : unit -> int
  val get_init_exn_handler : unit -> exn -> string
  val set_config : Simplexmlparser.xml list -> unit
end