package krb

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
type 'connection handle_client := Async.Socket.Address.Inet.t -> 'connection -> unit Async.Deferred.t
type ('authorize, 'r) krb_args := ?on_kerberos_error: [ `Call of Async.Socket.Address.Inet.t -> exn -> unit | `Ignore | `Raise ] -> ?on_handshake_error: [ `Call of Async.Socket.Address.Inet.t -> exn -> unit | `Ignore | `Raise ] -> ?on_handler_error: [ `Call of Async.Socket.Address.Inet.t -> exn -> unit | `Ignore | `Raise ] -> authorize:'authorize -> krb_mode:Mode.Server.t -> 'r
module Krb_or_anon_conn : sig ... end
val create_with_anon : (Authorize.Anon.t, Krb_or_anon_conn.t) serve

This is a bit misleading because it doesn't work with an unkerberized tcp client. It is in an Internal module because it is useful for implementing kerberized rpc serve_with_anon.

The create_with_anon server peeks the first few bytes to check if the client is sending a kerberos protocol header. If the unkerberized tcp client is expecting the server to send some initial bytes, it will be waiting until something presumably times out because the server is waiting for the client to send bytes also.