diff options
author | Clombrong <cromblong@egregore.fun> | 2025-06-29 06:58:39 +0200 |
---|---|---|
committer | Clombrong <cromblong@egregore.fun> | 2025-06-29 06:59:03 +0200 |
commit | 6134c3d4c71ce0f09b635d66f44a1a77825035d1 (patch) | |
tree | 0389bb6e6d222a7bd69554c331297f3250bf169a /lib/stream.ml | |
parent | 32fe064825f5a495c5c291df494c4e4dd9846c53 (diff) |
fix(stream): raise exception on non-mechanism in mechanisms
Diffstat (limited to 'lib/stream.ml')
-rw-r--r-- | lib/stream.ml | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/lib/stream.ml b/lib/stream.ml index d544f14..31581a0 100644 --- a/lib/stream.ml +++ b/lib/stream.ml @@ -14,14 +14,13 @@ type features = { let parse_features (el : Xml.element) : features = let open Xml in let open Either in - let parse_mechanism_stanza = function + let parse_single_mechanism = function | Left {local_name = "mechanism"; children = [Right mechanism]; _} -> - Some (Sasl.parse_auth_mechanism mechanism) - | _ -> None + Sasl.parse_auth_mechanism mechanism + | _ -> raise (InvalidStanza (element_to_string el)) in let parse_feature (acc : features) (feature : Xml.element) : features = - let parse_mechanisms ch = - List.filter_map parse_mechanism_stanza ch + let parse_mechanisms ch = List.map parse_single_mechanism ch and parse_starttls = function | [Left {local_name="required"; _}] -> `Required | [] -> `Optional |