COMPLETECALLER event firing wrong

The COMPLETECALLER event seems to be firing at the wrong time.

The queue_log shows:

As soon as the CONNECT event is firing, COMPLETECALLER is triggered also, even though neither the agent nor the caller has hung up.

The entries in my queue file go something like this:

exten => 660,1,Answer
exten => 660,2,SetCIDName(PT${CALLERIDNAME})
exten => 660,3,SetVar(MONITOR_FILENAME=/var/spool/asterisk/monitor/q${EXTEN}-${TIMESTAMP}-${UNIQUEID})
exten => 660,4,Playback(custom/None)
exten => 660,5,Queue(660|t|||600)      ; PHILTEST
[660]
wrapuptime=0
timeout=30
strategy=ringall
retry=5
queue-youarenext=
queue-thereare=
queue-thankyou=queue-thankyou
queue-callswaiting=
music=default
monitor-join=yes
monitor-format=
member=Local/684@from-internal
maxlen=1000000
leavewhenempty=no
joinempty=yes
context=
announce-holdtime=no
announce-frequency=0

I’ve even made the queue simpler with the following, but to no avail:

[660]
strategy=ringall
member=Local/684@from-internal

I’m digging around the code, but everything looks reasonably normal. It’s strange that it’s always CALLERCOMPLETE, which suggests there’s a soft hangup triggering asterisk to call this.

Any help or pointers in the right direction would be much appreciated.

Regards,

Phil.