[asterisk-dev] ToDo for chan_skinny

Pavel Jezek pavel.jezek at i.cz
Mon Jun 4 13:23:14 MST 2007


another issue with 7912:
when I pres "CallFWdAll" asterisk indicates it incorrectly as Do Not 
Disturb, it is also indcated on phone display
- but this text indication stays on display only until not touched to 
phone (call placed, menu accessed etc.), but feature is activated until 
next "CFwdAll" is pressed.
PJ



Pavel Jezek wrote:
> when I tested keepalive patch with other phone types, I discovered, that:
> ci$co 7961 (and probably all never models 7941, 7911, 7921): is not 
> supported at all by chan_skinny, phone doesn't even register ci$co 
> 7912: when call rings-in, "End call" softkey button is displayed, but 
> doesn't working (firmware 8.0(3))
> PJ
>
>
>
>
>
> Dan Austin wrote:
>> Damien wrote:
>>  
>>> Simon Lockhart wrote:
>>>     
>> <Snip>
>>
>>  
>>>> I'm fairly certain that chan_skinny already replies to Keepalive 
>>>> messages from the phone (otherwise it wouldn't work at all).
>>>>
>>>> Th problem is that if the phone stops sending keepalives
>>>> (i.e. it goes away), then chan_skinny doesn't notice and
>>>> still tries sending calls to the now non-existent phone.
>>>>
>>>> Simon
>>>>       
>>>    My bad, it does too. Funny thing, it is one of the things that 
>>> calls do_housekeeping, the others being hangups. So I guess you 
>>> can't reliably use do_housekeeping to check if keepalives have been 
>>> received as it relies on receiving keepalives for do_housekeeping to 
>>> be called.
>>>     
>>
>> All true.  The phone sends the keep-alive.  Chan_skinny
>> responds.  It looked like it should go in do_housekeeping,
>> but that won't work as it is not called unless it receives
>> a keep-alive.
>>
>> But I believe I did find the issue.  In get_input() the
>> code was using poll() with timeouts disabled.  Code to check
>> for a dropped connection looked for a timeout, it was also
>> in a section of code that was unlikely to be reached but
>> not impossible.
>>
>> IF the phone dropped while sending a request, the current
>> code would detect it and de-register the device.
>>
>> My fix was to add a timeout to the poll() call based on
>> the configured keep_alive value +10% to handle network
>> congestion, and to move the code that tested for timeouts
>> into a code path that would regularly be reached.
>>
>> Light testing has been positive (I have one 7940 and one
>> 7920).  Both have stayed registered overnight since I
>> implemented the patch, and unplugging the network from the
>> 7940 has it being de-registered in less than the 30 second
>> keep_alive I used for testing.
>>
>> Dan
>> _______________________________________________
>> --Bandwidth and Colocation provided by Easynews.com --
>>
>> asterisk-dev mailing list
>> To UNSUBSCRIBE or update options visit:
>>    http://lists.digium.com/mailman/listinfo/asterisk-dev
>>   
>


More information about the asterisk-dev mailing list