Asterisk 1.4.x requires a call-limit value in each SIP extension definition for it to properly track the status of extensions.
Without this, after the extension has been used & done transfers etc., asterisk eventually shows the extension status as 'hold' when it is not in use and the extension can no longer receive calls.
This is visible from the CLI with 'core show hints' and SIP phones with line status indicators show the extension(s) affected as busy. The first to fail are of course the operators/receptionists, then the site can no longer handle incoming calls..
The call-limit value appears to be the number of calls that can be simultaneously associated with an extension; I've seen a note that setting it down to 1 blocks attended transfers.
Advised values I've seen are 4 or 10. Asterisk 1.4 appears to default to zero (= unlimited) which is when the problems start.
There is already a patch to add the call-limit parameter to the SIP extensions page here:
http://www.freepbx.org/trac/ticket/1964
This seems to work fine with the present 2.3.0Beta1 release, and the patch notes say it was written for use with asterisk 1.2.x so there should hopefully not be any back-compatibility issues.
Note: While searching for the cause of this I saw mention of modifying freepbx's dialplan.agi to allow an extension status of 16. This is not required & does not change the fact that asterisk shows the extension state as 'hold' rather than 'idle'. With call-limit = 4 the status 16 never seems to occur.