Maybe the restrictions are used in a wrong way, so not every shortest path could be found. Max comment on this:
The leaving edges depend on the incoming edge, so if a shortest-path would lead through a certain node from a certain edge that enables different outgoing edges than the evaluation of said node before, and such an outgoing edge is only accessible from the incoming edge used at the second evaluation, the algorithm would not provide a correct answer, because the node will not be evaluated two (or more) times.
The correct behaviour could be restored by storing visited nodes in combination with outgoing edges.