Browse Source

Merge pull request #50 from hamidreza-s/master

Guard against passing wrong-typed argument instead of pid when calling return_group_member
Seth Falcon 9 years ago
parent
commit
e4dd9515a6
2 changed files with 6 additions and 1 deletions
  1. 1 1
      src/pooler.erl
  2. 5 0
      test/pooler_tests.erl

+ 1 - 1
src/pooler.erl

@@ -249,7 +249,7 @@ return_group_member(GroupName, MemberPid) ->
 -spec return_group_member(atom(), pid() | error_no_members, ok | fail) -> ok.
 return_group_member(_, error_no_members, _) ->
     ok;
-return_group_member(_GroupName, MemberPid, Status) ->
+return_group_member(_GroupName, MemberPid, Status) when is_pid(MemberPid) ->
     case ets:lookup(?POOLER_GROUP_TABLE, MemberPid) of
         [{MemberPid, PoolPid}] ->
             return_member(PoolPid, MemberPid, Status);

+ 5 - 0
test/pooler_tests.erl

@@ -481,6 +481,11 @@ pooler_groups_test_() ->
                ?assertEqual(ok, pooler:return_group_member(group_1, Pid))
        end},
 
+      {"return member with something which is not a pid",
+       fun() ->
+               ?assertException(error, _, pooler:return_group_member(group_1, not_pid))
+       end},
+
       {"take member from empty group",
        fun() ->
                %% artificially empty group member list