Browse Source

Merge pull request #27 from skirino/fix_bad_return

Crash in syn:leave/2
Roberto Ostinelli 8 years ago
parent
commit
0e88a01a1c
2 changed files with 3 additions and 1 deletions
  1. 1 1
      src/syn_groups.erl
  2. 2 0
      test/syn_groups_SUITE.erl

+ 1 - 1
src/syn_groups.erl

@@ -180,7 +180,7 @@ handle_call({join, Name, Pid, Meta}, _From, State) ->
 handle_call({leave, Name, Pid}, _From, State) ->
 handle_call({leave, Name, Pid}, _From, State) ->
     case find_by_pid_and_name(Pid, Name) of
     case find_by_pid_and_name(Pid, Name) of
         undefined ->
         undefined ->
-            {error, pid_not_in_group};
+            {reply, {error, pid_not_in_group}, State};
         Process ->
         Process ->
             %% remove from table
             %% remove from table
             remove_process(Process),
             remove_process(Process),

+ 2 - 0
test/syn_groups_SUITE.erl

@@ -214,6 +214,8 @@ single_node_leave(_Config) ->
     %% retrieve
     %% retrieve
     [] = syn:get_members(<<"my group">>),
     [] = syn:get_members(<<"my group">>),
     false = syn:member(Pid, <<"my group">>),
     false = syn:member(Pid, <<"my group">>),
+    %% leave before join
+    {error, pid_not_in_group} = syn:leave(<<"my group">>, Pid),
     %% join
     %% join
     ok = syn:join(<<"my group">>, Pid),
     ok = syn:join(<<"my group">>, Pid),
     %% retrieve
     %% retrieve