aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClombrong <cromblong@egregore.fun>2025-06-18 22:00:33 +0200
committerClombrong <cromblong@egregore.fun>2025-06-18 22:00:33 +0200
commitb039051748d023a004f2c8848a756b8fb67617b1 (patch)
tree9b7af0d28cb7189d99a8dbf2a4729b1edbdc3558
parentc000b9577d872fe022664cca7c177db40e6c9f57 (diff)
feat(sasl): add Unknown auth mechanism
-rw-r--r--lib/sasl.ml1
-rw-r--r--lib/stream.ml4
2 files changed, 4 insertions, 1 deletions
diff --git a/lib/sasl.ml b/lib/sasl.ml
index 800d02e..8fbb8b2 100644
--- a/lib/sasl.ml
+++ b/lib/sasl.ml
@@ -21,6 +21,7 @@ type sasl_auth = (string option, sasl_error * (string * string) option) result
let send_auth_stanza (stream, push) localpart pass mechanism =
let gen_auth = function
| PLAIN -> Base64.encode_exn ("\x00" ^ localpart ^ "\x00" ^ pass)
+ | Unknown s -> failwith "Unsupported authentication mechanism" ^ s
and parse_sasl_response (stanza : Markup.signal list) =
let open Markup in
let string_stanza = stanza |> of_list |> write_xml |> to_string in
diff --git a/lib/stream.ml b/lib/stream.ml
index 5743318..adf852c 100644
--- a/lib/stream.ml
+++ b/lib/stream.ml
@@ -4,7 +4,9 @@ open Markup
exception ClosedStream
exception InvalidStanza of string
-type auth_mechanism = PLAIN [@@deriving show { with_path = false }]
+type auth_mechanism =
+ | PLAIN
+ | Unknown of string [@@deriving show { with_path = false }]
let get (stream : (signal, async) stream) : (signal, sync) stream Lwt.t =
(** [stanza stream] is a promise containing a full stanza of the fragments of [stream].*)