The function C4::Circulation::GetBranchItemRule is mean to return back the 'hold allowed' policy and whether to return an item to the home or holding branch. A visual inspection of this subroutine shows that it could be re-factored for efficiency. It always runs all four searches even if it is unnecessary.
Should we still keep this open in light of the work on issuing rules?
Indeed, the problem reported by Kyle originally will be fixed by bug 18936.
*** This bug has been marked as a duplicate of bug 18936 ***