Summary:ASTERISK-12472: [patch] Missed Calls is cleared from phone status line
Reporter:pj (pj)Labels:
Date Opened:2008-07-28 12:29:31Date Closed:2009-01-23 11:00:37.000-0600
Versions:Frequency of
Environment:Attachments:( 0) 2008080500_skinny_missedcalls.diff.txt
( 1) 2008080700_skinny_device_lampstatus.diff
( 2) 2009011900_dontcleardisplay.diff.txt
( 3) 2009011901_dontcleardisplay.diff.txt
( 4) 7912-ccm.pcap
( 5) 7920-asterisk.pcap
( 6) 7920-ccm.pcap
Description:chan_skinny is doing excessive clearing of phone status display, this causes, that missed call info is cleared from display and can be accessed only by entering phone missed call history, that is anoying for users.
I did packet dump of communication between skinny phone (cisco 7920) and callmanager (4.1) and compared with packet dump between chan_skinny and same phone (7920).
This issue is probably caused by chan_skinny, because asterisk replies to phone's KeepAliveMessage, not only with KeepAliveAckMessage (as callmanager only doing), but chan_skinny after AckMsg immediatelly sends also DefineTimeDate and (2x) SetLampMessage!

Missed call issue was also discused in
DEA said here, that callmanager also clears missed calls from phone prompt, but is't not true.


sending both packet dumps, so you can compare, what other is different, comparing callmanager and chan_skinny eg.:
- in CallInfoMessage (chan_skinny sends CallInstance 0, instead of 1)
- chan_skinny retransmits CallStateMessage + SelectSoftKeysMessage
- chan_skinny sends SetLamp+SetRinger together, ccm it sends one by one
- call teardown is completelly different, callmanager it doing with six separated messages, chan_skinny it sends together and also sends messages, that even callmanager doesn't send, ie. ActivateCallPlaneMessage, and media handling messages, even if audio channel was not established (both debugs are ringing, wait, then hungup).
Comments:By: Michiel van Baak (mvanbaak) 2008-08-04 12:33:12

Do you have other phones to test ?
I seem to be unable to reproduce this on my 7960 and 7905

By: pj (pj) 2008-08-04 14:28:28

It seems, that affected is only cisco 7920 (wifi), I tested also with 7912, and this phone is unaffected with excessive clearing. I don't do packet capture between 7912 and callmanager, but I expect, that message flow is simmilar in this case, as I posted before, ie. callmanager replies to KeepAliveMessage only with KeepAliveAckMessage.
Is there any reason, why chan_skinny replies to every KeepAlive also with DefineTimeDate and SetLampMessages?

By: Michiel van Baak (mvanbaak) 2008-08-04 15:01:58

Are you able to run a packetdump between the 7912 and ccm ? Just to be sure that it really only replies with KeepAliveAckMessage

By: pj (pj) 2008-08-04 15:24:28

Uploading packet dump 7912<->ccm, it clearly shows, that callmanager replies to all KeepAlives only with KeepAliveAckMessage.

By: Michiel van Baak (mvanbaak) 2008-08-04 16:33:59

me or someone else will have to look at this one.

By: Michiel van Baak (mvanbaak) 2008-08-05 12:34:31

Can you try this one ?

By: Michiel van Baak (mvanbaak) 2008-08-05 12:57:58

ouch, this will disable MWI
Never mind.

By: Michiel van Baak (mvanbaak) 2008-08-05 13:17:28

The two LampMessages are to control the MWI on the device.
Once for the line, and once for the device.

Can you still try the patch ?
If the time and lamp message replies to the KeepAlive message are really the issue this one will fix the displayclearing (but disable setting the devicelamp when there's new voicemail)

By: pj (pj) 2008-08-05 15:02:21

yes, this patch solves issue with excessive clearing of missed calls, thanks!
one problem is, that if ringing phone is answered, on display is still "ring-in" instead of "connected", it's probably related to differences between chan_skinny and callmanager in callsetup/teardown messages exchange, as I wrote in additional information for this ticket.
If you would like to investigate all this similar issues and improve chan_skinny, I can supply packet dumps from callmanager in various scenarios.

By: Michiel van Baak (mvanbaak) 2008-08-06 15:27:19

I know I'm a pain in the behind but:
How does CCM handle new voicemail and the lamp on the phones?

do_housekeeping (the function that's disabled by this patch when it comes to keepalive packets) handles this in chan_skinny.c

Can you register your phone to ccm, call it, dont answer, leave voicemail, and tell me how CCM enables the MWI on the phone ?

By: pj (pj) 2008-08-06 15:57:36

debug mwi from callmanager will be quite hard for me, because we don't use unity voicemail, but I can try to look into our lab, if you need this. It will take some time.

By: Michiel van Baak (mvanbaak) 2008-08-06 16:15:07

no problem.
I'm thinking about another solution right now.

Maybe some of the other chan_skinny users/dev can help me a little.
This is what I'm thinking about:

Add an extra member to the skinny_device and skinny_line struct called lampstatus.
Init this member to OFF.
Whenever the MWI is triggered, set it to ON, and display 'N new messages' on the phone.
Everytime do_monitor is called it will only send a lampMessage whenever the lampstatus is different from what was stored in the line/device lampstate message.
That way we will only update the lamp/mwi status when it actually changes. And it will keep the 'N missed calls' on the newer devices intact when the MWI does not change.

What do you guys think ? Does this make sense ?
If so, I can put up a patch next week.

By: Damien Wedhorn (wedhorn) 2008-08-06 18:48:06

I agree with the idea that we should only send messages when things change.

By: Michiel van Baak (mvanbaak) 2008-08-07 14:08:14

PJ: if you apply this last patch to a clean chan_skinny.c, are the display clearing issues gone ?

By: pj (pj) 2008-08-07 14:45:51

fresh trunk-r136594 +  2008080700_skinny_device_lampstatus.diff
missed calls display is cleared again on 7920 :(

By: Michiel van Baak (mvanbaak) 2008-08-07 14:55:10

Ok thank you.
I'm going to redo this one.
It becomes more and more clear where the problem is.

Thanks again for testing and responing so promptly.

By: Michiel van Baak (mvanbaak) 2008-08-17 15:14:53

I did not forget this one.
It's just that real-life takes a bit more time then I like :(

By: Leif Madsen (lmadsen) 2008-12-05 10:54:30.000-0600

Moving this backed to confirmed since we're not waiting on feedback, but rather just for mvanbaak to finish moving :)

By: Michiel van Baak (mvanbaak) 2009-01-17 06:35:44.000-0600

If 13821 is done, the do_housekeeping function will only hold the datetime function. We will have to move this to some other place and this problem will be done

By: Michiel van Baak (mvanbaak) 2009-01-19 14:23:41.000-0600

Can you please test this latest patch against an up-to-date trunk checkout ?

By: Michiel van Baak (mvanbaak) 2009-01-19 14:44:35.000-0600

new patch that hopefully clears display on hangup

wedhorn: can you confirm ?

By: Damien Wedhorn (wedhorn) 2009-01-19 16:26:05.000-0600

I've had a look at the patch and it looks like it should clear the display on hangup of the last sub and not clear the display subsequently.

PJ, can you test. If needed I'll checkout the latest svn and have a quick check, but I don't have a missed calls message so I can't check that functionality.

By: Michiel van Baak (mvanbaak) 2009-01-21 15:33:57.000-0600

Thanks for the review wedhorn.

Let's hope it fixes the issue for PJ

By: pj (pj) 2009-01-23 08:02:05.000-0600

Asterisk SVN-trunk-r170307 + 2009011901_dontcleardisplay.diff.txt
last patch resolved issue with excessive clearing of 'missed calls' from display, thanks!

By: Digium Subversion (svnbot) 2009-01-23 10:56:41.000-0600

Repository: asterisk
Revision: 170460

U   trunk/channels/chan_skinny.c

r170460 | mvanbaak | 2009-01-23 10:56:41 -0600 (Fri, 23 Jan 2009) | 8 lines

Dont clear the display of skinny phones when not needed.

(closes issue ASTERISK-12472)
Reported by: pj
     2009011901_dontcleardisplay.diff.txt uploaded by mvanbaak (license 7)
Tested by: mvanbaak, pj



By: Digium Subversion (svnbot) 2009-01-23 10:58:09.000-0600

Repository: asterisk
Revision: 170461

_U  branches/1.6.0/

r170461 | mvanbaak | 2009-01-23 10:58:08 -0600 (Fri, 23 Jan 2009) | 14 lines

Blocked revisions 170460 via svnmerge

 r170460 | mvanbaak | 2009-01-23 17:57:07 +0100 (Fri, 23 Jan 2009) | 8 lines
 Dont clear the display of skinny phones when not needed.
 (closes issue ASTERISK-12472)
 Reported by: pj
       2009011901_dontcleardisplay.diff.txt uploaded by mvanbaak (license 7)
 Tested by: mvanbaak, pj



By: Digium Subversion (svnbot) 2009-01-23 11:00:36.000-0600

Repository: asterisk
Revision: 170462

_U  branches/1.6.1/

r170462 | mvanbaak | 2009-01-23 11:00:36 -0600 (Fri, 23 Jan 2009) | 14 lines

Blocked revisions 170460 via svnmerge

 r170460 | mvanbaak | 2009-01-23 17:57:07 +0100 (Fri, 23 Jan 2009) | 8 lines
 Dont clear the display of skinny phones when not needed.
 (closes issue ASTERISK-12472)
 Reported by: pj
       2009011901_dontcleardisplay.diff.txt uploaded by mvanbaak (license 7)
 Tested by: mvanbaak, pj