@@ -205,8 +205,10 @@ member(Method0, Path, Trie) ->
205205-spec member (method_in (), host_in (), iodata (), trie ()) -> boolean ().
206206member (Method0 , HostIn , Path , Trie ) ->
207207 case lookup (Method0 , HostIn , Path , Trie ) of
208- {ok , _Node , _Payload , _Binds } -> true ;
209- error -> false
208+ {ok , _Node , _Payload , _Binds } ->
209+ true ;
210+ _ ->
211+ false
210212 end .
211213
212214% %--------------------------------------------------------------------
@@ -221,7 +223,7 @@ member(Method0, HostIn, Path, Trie) ->
221223% %--------------------------------------------------------------------
222224
223225-spec lookup (iodata (), trie ()) ->
224- {ok , trie_node (), term (), #{binary () => binary ()}} | error .
226+ {ok , trie_node (), term (), #{binary () => binary ()}} | error | { error , comparator_not_found , MethodsAllowed :: binary () | [ binary ()]} .
225227lookup (Path , Trie ) ->
226228 lookup (<<" ALL" >>, '_' , Path , Trie ).
227229
@@ -246,8 +248,10 @@ lookup(Method0, HostIn, Path, Trie = #{hosts := Hosts}) ->
246248 case do_match (Jailed , HostTrie , #{}) of
247249 {ok , Node , Binds } ->
248250 case method_payload (M , Node ) of
249- {ok , Payload } -> {ok , Node , Payload , Binds };
250- error -> error
251+ {ok , Payload , Segs } ->
252+ {ok , Node , Payload , Binds };
253+ Error ->
254+ Error
251255 end ;
252256 _ ->
253257 error
@@ -429,8 +433,10 @@ method_payload(M, #{terminal := Term}) ->
429433 {ok , Payload };
430434 error ->
431435 case maps :to_list (Term ) of
432- [] -> error ;
433- [{_ , P } | _ ] -> {ok , P }
436+ [] ->
437+ {error , comparator_not_found , Term };
438+ [{_ , P } | _ ] ->
439+ {ok , P }
434440 end
435441 end ;
436442 _ ->
@@ -439,8 +445,10 @@ method_payload(M, #{terminal := Term}) ->
439445 {ok , Payload };
440446 error ->
441447 case maps :find (<<" ALL" >>, Term ) of
442- {ok , Payload } -> {ok , Payload };
443- error -> error
448+ {ok , Payload } ->
449+ {ok , Payload };
450+ error ->
451+ {error , comparator_not_found , Term }
444452 end
445453 end
446454 end .
@@ -718,10 +726,12 @@ do_match([Seg | Rest], N, Binds0) ->
718726 error -> error ;
719727 Ok -> Ok
720728 end ;
721- error -> error
729+ error ->
730+ error
722731 end ,
723732 case Exact of
724- {ok , _ , _ } -> Exact ;
733+ {ok , _ , _ } ->
734+ Exact ;
725735 error ->
726736 % % 2) Wildcard fallback
727737 case find_wild_child (Cs ) of
0 commit comments