[HELP] Can't turn off Call Waiting

I’m running Asterisk@Home 1.5 (1.0.9) and am having some problems turning off call waiting. The appropriate section from my extensions.conf is below.

[app-callwaiting] exten => *70,1,Answer exten => *70,2,Wait(1) exten => *70,3,Macro(user-callerid) exten => *70,4,DBput(CW/${CALLERIDNUM}=ENABLED) exten => *70,5,Playback(callwaiting) exten => *70,6,Playback(activated) exten => *70,7,Macro(hangupcall) exten => *71,1,Answer exten => *71,2,Wait(1) exten => *71,3,Macro(user-callerid) exten => *71,4,DBdel(CW/${CALLERIDNUM}) exten => *71,5,Playback(callwaiting) exten => *71,6,Playback(de-activated) exten => *71,7,Macro(hangupcall)

When I dial *71 the recording plays just fine and the logs below claim to have deleted the record but call waiting still works.

[code]Asterisk 1.0.9, Copyright © 1999-2004 Digium.
Written by Mark Spencer markster@digium.com

Connected to Asterisk 1.0.9 currently running on asterisk1 (pid = 2026)
Verbosity is at least 3
– Remote UNIX connection
– Executing Answer(“SIP/200-07a8”, “”) in new stack
– Executing Wait(“SIP/200-07a8”, “1”) in new stack
– Executing Macro(“SIP/200-07a8”, “user-callerid”) in new stack
– Executing DBget(“SIP/200-07a8”, “AMPUSER=DEVICE/200/user”) in new stack
– DBget: varname=AMPUSER, family=DEVICE, key=200/user
– DBget: set variable AMPUSER to 200
– Executing DBget(“SIP/200-07a8”, “AMPUSERCIDNAME=AMPUSER/200/cidname”) in new stack
– DBget: varname=AMPUSERCIDNAME, family=AMPUSER, key=200/cidname
– DBget: set variable AMPUSERCIDNAME to Jason Litka
– Executing GotoIf(“SIP/200-07a8”, “0?5”) in new stack
– Executing SetCallerID(“SIP/200-07a8”, “Jason Litka <200>”) in new stack
– Executing NoOp(“SIP/200-07a8”, “Using CallerID Jason Litka <200>”) in new stack
– Executing DBdel(“SIP/200-07a8”, “CW/200”) in new stack
– DBdel: family=CW, key=200
– Executing Playback(“SIP/200-07a8”, “callwaiting”) in new stack
– Playing ‘callwaiting’ (language ‘en’)
– Executing Playback(“SIP/200-07a8”, “de-activated”) in new stack
– Playing ‘de-activated’ (language ‘en’)
– Executing Macro(“SIP/200-07a8”, “hangupcall”) in new stack
– Executing ResetCDR(“SIP/200-07a8”, “w”) in new stack
– Executing NoCDR(“SIP/200-07a8”, “”) in new stack
– Executing Wait(“SIP/200-07a8”, “5”) in new stack
== Spawn extension (macro-hangupcall, s, 3) exited non-zero on ‘SIP/200-07a8’ in macro ‘hangupcall’
== Spawn extension (from-internal, *71, 7) exited non-zero on ‘SIP/200-07a8’
– Executing Macro(“SIP/200-07a8”, “hangupcall”) in new stack
– Executing ResetCDR(“SIP/200-07a8”, “w”) in new stack
– Executing NoCDR(“SIP/200-07a8”, “”) in new stack
– Executing Wait(“SIP/200-07a8”, “5”) in new stack
== Spawn extension (macro-hangupcall, s, 3) exited non-zero on ‘SIP/200-07a8’ in macro ‘hangupcall’
== Spawn extension (from-internal, h, 1) exited non-zero on ‘SIP/200-07a8’
[/code]

If I try to run *71 again I get an error as below that would imply that the record doesn’t exist (meaning that it was successfully deleted the first time I hit *71).

[code]Asterisk 1.0.9, Copyright © 1999-2004 Digium.
Written by Mark Spencer markster@digium.com

Connected to Asterisk 1.0.9 currently running on asterisk1 (pid = 2026)
Verbosity is at least 3
– Remote UNIX connection
– Executing Answer(“SIP/200-8113”, “”) in new stack
– Executing Wait(“SIP/200-8113”, “1”) in new stack
– Executing Macro(“SIP/200-8113”, “user-callerid”) in new stack
– Executing DBget(“SIP/200-8113”, “AMPUSER=DEVICE/200/user”) in new stack
– DBget: varname=AMPUSER, family=DEVICE, key=200/user
– DBget: set variable AMPUSER to 200
– Executing DBget(“SIP/200-8113”, “AMPUSERCIDNAME=AMPUSER/200/cidname”) in new stack
– DBget: varname=AMPUSERCIDNAME, family=AMPUSER, key=200/cidname
– DBget: set variable AMPUSERCIDNAME to Jason Litka
– Executing GotoIf(“SIP/200-8113”, “0?5”) in new stack
– Executing SetCallerID(“SIP/200-8113”, “Jason Litka <200>”) in new stack
– Executing NoOp(“SIP/200-8113”, “Using CallerID Jason Litka <200>”) in new stack
– Executing DBdel(“SIP/200-8113”, “CW/200”) in new stack
– DBdel: family=CW, key=200
– DBdel: Error deleting key from database.
– Executing Playback(“SIP/200-8113”, “callwaiting”) in new stack
– Playing ‘callwaiting’ (language ‘en’)
– Executing Playback(“SIP/200-8113”, “de-activated”) in new stack
– Playing ‘de-activated’ (language ‘en’)
– Executing Macro(“SIP/200-8113”, “hangupcall”) in new stack
– Executing ResetCDR(“SIP/200-8113”, “w”) in new stack
– Executing NoCDR(“SIP/200-8113”, “”) in new stack
– Executing Wait(“SIP/200-8113”, “5”) in new stack
== Spawn extension (macro-hangupcall, s, 3) exited non-zero on ‘SIP/200-8113’ in macro ‘hangupcall’
== Spawn extension (from-internal, *71, 7) exited non-zero on ‘SIP/200-8113’
– Executing Macro(“SIP/200-8113”, “hangupcall”) in new stack
– Executing ResetCDR(“SIP/200-8113”, “w”) in new stack
– Executing NoCDR(“SIP/200-8113”, “”) in new stack
– Executing Wait(“SIP/200-8113”, “5”) in new stack
== Spawn extension (macro-hangupcall, s, 3) exited non-zero on ‘SIP/200-8113’ in macro ‘hangupcall’
== Spawn extension (from-internal, h, 1) exited non-zero on ‘SIP/200-8113’
[/code]

Can anyone tell me how I can actually turn off call waiting?