Summary:ASTERISK-18086: Can't place calls on hold with certain IP phones (aastra 9133i and sipdroid soft phone)
Reporter:James Bottomley (jejb)Labels:
Date Opened:2011-07-02 21:36:40Date Closed:2011-10-10 15:29:25
Versions:1.8.4 Frequency of
Environment:Linux debian testing (Version: 1:
Description:Placing a call on hold no longer works with some IP phones (used to work in 1.6.2).  What happens is that asterisk doesn't recognise the hold and eventually the channel hangs up for RTP inactivity.

The reason is a change in the way an INVITE to c=, which is an obsolete method of placing calls on hold is handled.  In 1.6.2, there's an explicit check on sin.sin_addr.s_addr == 0; in asterisk 1.8 this became converted to a series of ast_sockaddr_isnull() checks.  However, ast_sockaddr_isnull() only checks to see if the sockaddr len is zero.  This isn't true of the address, since it's an AF_INET sockaddr_in.

Fix this by making ast_sockaddr_resolve_first_af() explicitly set zero length on the address case.
Comments:By: James Bottomley (jejb) 2011-07-02 21:38:50.468-0500

This is the patch, since apparently JIRA won't let me upload it

<inline patch removed by lmadsen>

By: Leif Madsen (lmadsen) 2011-07-11 14:37:35.686-0500

Sorry, you can't upload patches inline -- they must be attached to the issue in order to be properly controlled by the licensing system. I have asked Erin what may be the problem, and she wanted to know if you have the Attach Files link, which means, "has he attempted and JIRA failed, or has he never been able to attempt?"

If you continue to have problems using JIRA, you may file an issue in the JIRA Help (JA) project.

By: Marc Coxall (mcoxall) 2011-07-14 02:29:33.326-0500

Could somebody attach the patch please.

By: Leif Madsen (lmadsen) 2011-07-20 13:03:09.037-0500

The only person who can upload the patch is the original reporter, who appears to be MIA.

By: James Bottomley (jejb) 2011-07-20 13:25:49.146-0500

> The only person who can upload the patch is the original reporter, who appears to be MIA.

I have no idea what you want now.  Even if you won't read patches, the description is surely detailed enough to describe the problem and how to fix it.  If not, what exactly do you need to know?

By: Tzafrir Cohen (tzafrir) 2011-07-20 17:50:08.851-0500

Marc Coxall,

Can you reproduce this issue? With what phone?

By: Marc Coxall (mcoxall) 2011-07-21 00:17:24.500-0500

Yes i can re-produce the exact sympoms as describes using 1.8.4 and 1.8.5 on the AAstra 9143i handset. We have tested with multiple phone firware and all show the same behavour. We also run 53i 57i and cisco handsets on the same system and these all work without the problem.

By: Marc Coxall (mcoxall) 2011-07-21 00:19:22.361-0500

To clarify the symtoms we see, when a call is put on hold or the tranfer button is used the music on hold is not started and after 30 seconds the call is dropped if not returned to an active session.

By: Mike Spuhler (mspuhler) 2011-07-28 21:10:54.027-0500

I'm also having the issue with both Aastra 9143i and 480i phones with the same symptoms as described above on Asterisk 1.8.4 and 1.8.5.  

By: Mike Spuhler (mspuhler) 2011-08-04 11:54:26.811-0500

James Bottomley, do you have a patch for this issue and just weren't able to upload it?  

I have a customer who's getting tired of waiting and I'd rather not have to move them back to Asterisk 1.6.   Any help anyone can provide would be appreciated.  What has to be done to move this from a "waiting for feedback" status to getting worked on?

By: Tzafrir Cohen (tzafrir) 2011-08-04 12:14:15.381-0500

He seems to have a patch that works locally, but I guess he won't sign it off to Digium. See the first comment (from which it was edited out).

IIRC it's a simple one.

Any soft phone with which this issue is reproduced?

By: James Bottomley (jejb) 2011-08-04 12:15:03.797-0500

It's not a complete patch, but it is a hack that enables my Aastra phones to work again.  It's here:


I think a complete fix is something like INADDR_ANY recognition in _isnull().

By: James Bottomley (jejb) 2011-08-04 12:26:21.999-0500

> Any soft phone with which this issue is reproduced?

Yes, the asterisk soft sip client sipdroid.  However, there's really very little excuse for a soft phone still to be using INVITE to as a method for placing calls on hold, so I'd added it to my todo to fix sipdroid.

By: Mike Spuhler (mspuhler) 2011-08-04 13:04:10.370-0500

James, your patch resolved my issue.

By: Mike Spuhler (mspuhler) 2011-09-21 14:10:51.898-0500

The patch that James provided above fixed the issue on several of my servers.  What do we need to do to get this patch into the distribution?

By: Matt Jordan (mjordan) 2011-10-10 11:18:02.759-0500

I reassigned this issue to myself, and will work on getting a patch put together to address this issue.

By: Matt Jordan (mjordan) 2011-10-10 12:57:53.348-0500

A patch for this is up for review on Review Board at https://reviewboard.asterisk.org/r/1504 .  Per the comments on this thread, the logic that places the calls on hold checks for NULL and for the IP address being 'any'.  This uses the netsock libraries to support IPv4 and IPv6.  I decided against changing the _isnull netsock method, as that had larger impact across Asterisk then keeping this local to chan_sip.

By: TJ Whitley (whitltj) 2011-11-04 23:07:31.144-0500

I too have had the same issue with a new install of Asterisk and several Aastra 9133i sets.  I would appreciate any information on how I can get these sets to work correctly.  New to Asterisk and setting up a home system.  Have several
types of sets and ran into the issue of calls on hold being dropped and no hold music after placing a call on hold using
the Aastra sets.  Other brands of sets I have are able to keep calls held and no issues if they do the call hold function.  Thanks for any input as I am new to this and a hobby basis.