BLF state incorrect on disconnect! **FIXED**

I am having some trouble getting BLF function to show the correct state after disconnect on my Grandstream GXP2000 and GXP2010 handsets. I am using Asterisk 1.6.0.17 with FreePBX 2.7.0.1 on CentOS 5.4, Below is the end of the CLI readout after calling an external number from an extension on the system.

-- Executing [s@macro-hangupcall:9] Hangup("SIP/4001-0f7a9b58", "") in new stack
  == Spawn extension (macro-hangupcall, s, 9) exited non-zero on 'SIP/4001-0f7a9b58' in macro 'hangupcall'
  == Spawn extension (macro-dialout-trunk, h, 1) exited non-zero on 'SIP/4001-0f7a9b58'
  == Spawn extension (macro-dialout-trunk, s, 19) exited non-zero on 'SIP/4001-0f7a9b58' in macro 'dialout-trunk'
  == Spawn extension (from-internal, EXTERNALNUMBER, 4) exited non-zero on 'SIP/4001-0f7a9b58'
  == Extension Changed 4001[ext-local] new state Idle for Notify User 4001
  == Extension Changed 4001[ext-local] new state InUse&Ringing for Notify User 4001 (queued)
  == Extension Changed 4001[from-internal] new state InUse&Ringing for Notify User 4001

Below you will see that the incorrect state has been saved. (I say this because he call has ended)

 -= Registered Asterisk Dial Plan Hints =-
                   4004@ext-local           : SIP/4004&Custom:DND4  State:Idle            Watchers  1
                   4003@ext-local           : SIP/4003&Custom:DND4  State:Idle            Watchers  1
                   4002@ext-local           : SIP/4002&Custom:DND4  State:Idle            Watchers  1
                   4001@ext-local           : SIP/4001&Custom:DND4  State:InUse&Ringing   Watchers  1
                *214004@ext-findmefollow    : Custom:FOLLOWME4004   State:Busy            Watchers  0
                *214003@ext-findmefollow    : Custom:FOLLOWME4003   State:Busy            Watchers  0
                *214002@ext-findmefollow    : Custom:FOLLOWME4002   State:Busy            Watchers  0
                *214001@ext-findmefollow    : Custom:FOLLOWME4001   State:Busy            Watchers  0
                *764004@ext-dnd-hints       : Custom:DEVDND4004     State:Busy            Watchers  0
                *764003@ext-dnd-hints       : Custom:DEVDND4003     State:Busy            Watchers  0
                *764002@ext-dnd-hints       : Custom:DEVDND4002     State:Busy            Watchers  0
                *764001@ext-dnd-hints       : Custom:DEVDND4001     State:Busy            Watchers  0
               *7404004@ext-cf-hints        : Custom:DEVCF4004      State:Busy            Watchers  0
               *7404003@ext-cf-hints        : Custom:DEVCF4003      State:Busy            Watchers  0
               *7404002@ext-cf-hints        : Custom:DEVCF4002      State:Busy            Watchers  0
               *7404001@ext-cf-hints        : Custom:DEVCF4001      State:Busy            Watchers  0

This will stay flashing red until I make a call from 4001 to 4001 which on disconnect will the turn back to green!

  == Extension Changed 4001[ext-local] new state InUse for Notify User 4001
    -- Executing [**4001@from-internal:1] Pickup("SIP/4001-0f7a9b58", "4001&4001@ext-local&4001@from-internal&4001@from-internal-xfer&4001@from-did-direct&LC-4001@from-internal&LC-4001@from-internal-xfer&FMPR-4001@from-internal&FMPR-4001@from-internal-xfer&FMPR-4001@from-did-direct") in new stack
    -- Executing [**4001@from-internal:2] Hangup("SIP/4001-0f7a9b58", "") in new stack
  == Spawn extension (from-internal, **4001, 2) exited non-zero on 'SIP/4001-0f7a9b58'
    -- Executing [h@from-internal:1] Macro("SIP/4001-0f7a9b58", "hangupcall") in new stack
    -- Executing [s@macro-hangupcall:1] GotoIf("SIP/4001-0f7a9b58", "1?skiprg") in new stack
    -- Goto (macro-hangupcall,s,4)
    -- Executing [s@macro-hangupcall:4] GotoIf("SIP/4001-0f7a9b58", "1?skipblkvm") in new stack
    -- Goto (macro-hangupcall,s,7)
    -- Executing [s@macro-hangupcall:7] GotoIf("SIP/4001-0f7a9b58", "1?theend") in new stack
    -- Goto (macro-hangupcall,s,9)
    -- Executing [s@macro-hangupcall:9] Hangup("SIP/4001-0f7a9b58", "") in new stack
  == Spawn extension (macro-hangupcall, s, 9) exited non-zero on 'SIP/4001-0f7a9b58' in macro 'hangupcall'
  == Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/4001-0f7a9b58'
  == Extension Changed 4001[ext-local] new state Idle for Notify User 4001 (queued)
  == Extension Changed 4001[from-internal] new state Idle for Notify User 4001

As you can see below the state is now “idle” again

 -= Registered Asterisk Dial Plan Hints =-
                   4004@ext-local           : SIP/4004&Custom:DND4  State:Idle            Watchers  1
                   4003@ext-local           : SIP/4003&Custom:DND4  State:Idle            Watchers  1
                   4002@ext-local           : SIP/4002&Custom:DND4  State:Idle            Watchers  1
                   4001@ext-local           : SIP/4001&Custom:DND4  State:Idle            Watchers  1
                *214004@ext-findmefollow    : Custom:FOLLOWME4004   State:Busy            Watchers  0
                *214003@ext-findmefollow    : Custom:FOLLOWME4003   State:Busy            Watchers  0
                *214002@ext-findmefollow    : Custom:FOLLOWME4002   State:Busy            Watchers  0

I have made sure that “call-limit=50” “limitonpeers=yes” etc are present. I am unsure if they are in the right places or even if I am on the right track as FreePBX overwrites the files that Asterisk would expect to see these entries in. They have been placed in sip_general_custom.conf
[general]
allowsubscribe=yes
limitonpeers=yes
notifyringing=yes
notifyhold=yes

call-limit=50 is in the extensions_additional.conf file which is auto-generated by FreePBX

Please help me as my now grey hair is beginning to fall out!
LOL

Best regards
Phil

I have rectified the issue by upgrading Asterisk following the instructions at the following link:

asterisk.org/downloads/yum

This seems (for now) to have solved the BLF issue I was experiencing. If I run into any issues as a result of the upgrade I will post the results here.