move thread locking outside of call_provider, so we have just a single
lock/unlock for each MI call
Authored by: kkaempf 2008-10-17
Parent: [r1109]
Child: [r1111]