Summary
New Features:
Call Back on Busy
Voicemail forward to eMail and Delete from Mailbox
More efficient handling of SIP CANCEL requests
Define a call queue exit key in sipXcallqueue
Set outbound SIP Port for Voicemail dial plan to aid with Exchange Voicemail configuration
Enhancements:
Marshal notifies with 180 for call transfers to be converted to a 100 trying
Utilize MongoDB TTL Feature on Documents to time out Registrations and Subscriptions
Allow for longer re-transmits of SIP UDP and TCP packets
Yealink phone enhancements / fixes
Configurable number of digits to be collected by Auto Attendant
LDAP Alarms if problems occur during normal operation
Change the backup path for automatic backups
Who Should Install?
This release is recommended for all 4.6, 14.XX and 15.XX installations.
New Installs
A new ISO is available for 15.08 at: http://download.sipxcom.org/pub/sipXecs/ISO/
Update
To update please edit your /etc/yum.repos.d/sipxecs.repo file and reference the new download server (download.sipxcom.org). The repo should look as follows:
[sipXcom]
name=sipXecs software for CentOS $releasever - $basearch
baseurl=http://download.sipxcom.org/pub/sipXecs/15.08/CentOS_$releasever/$basearch
gpgcheck=0
To edit this file, login to your sipX server as root and then use either vi or nano (easier).
vi /etc/yum.repos.d/sipxecs.repo
or
nano /etc/yum.repos.d/sipxecs.repo
Once the repo file is modified, run:
yum clean all
yum update
Issues Addressed
JIRA ID | JIRA name | RN Content | Enhancement/Fix/Known Issue |
SIPX-209 | Introduce a new queue for child transaction CANCEL events | Added a new feature to more efficiently handle call CANCELs. In previous code a CANCEL received by the server is propagated in one burst towards all child transactions which can overwhelm the outbound queue. This tracker address this issue by introducing a separate event queue for each child so that they are tried serially instead of a single burst. | New Feature |
SIPX-210 | sipXcallqueue - define call queue exit key | Added a new feature to sipXcallqueue to define call queue exit key. This required minor code changes in sipXcallqueue project (that is to expose it as a setting and use it as an action in FS dialplan). Queue Calls using the basic queue call sipxcallqueue NEEDS to have a break away option. This is part of the freeswitch call queue functionality you currently use its just not an option in the GUI (mod_callcenter) The way I would set it up is just present us with an option called --- Breakaway Button or Breakaway Dial This Breakaway feature would require 2 options… Breakaway digit to be dialed and Breakaway ext… the breakaway ext is where it goes to if someone waiting in the queue hits the button. The new feature would allow administrators to create a queue audio file that would just tell the end user if you do not want to wait any longer just press – lets say 8 – to go to our voicemail so that we may call you back at our earliest convenience. Here is the info from mod_callcenter - https://wiki.freeswitch.org/wiki/Mod_callcenter#cc_exit_keys (https://wiki.freeswitch.org/wiki/Mod_callcenter#cc_exit_keys) Here is an example config <action application="set" data="cc_exit_keys=#"/> | New Feature |
SIPX-273 | Make SIP Port configurable in a Voicemail DialPlan | Added a new feature to be able to set the destination server and SIP port when configuring an Exchange Server as the external voicemail server. This should allow for connectivity to Office 365 without requiring a Session Border Controller. | New Feature |
SIPX-276 | Voicemail to eMail forward and delete | Added a new feature so that a user/administrator could configure eMail forward and delete of voicemail and conference recordings. Voicemail and Conferences should only be deleted on successful forward. Known Limitation: there are some cases in which the email is not successfully sent, but the voicemail is moved in the deleted folder. This is because sending an email is not a synchronous operation and an error can occur at any stage during the email sending process. openUC will put the email in the send queue and will check for basic errors, after this, the email is considered sent. | New Feature |
SIPX-81 | Config support for call back on busy | Required for new Call Back on Busy Feature | New Feature |
SIPX-85 | Call Back on busy | New Call Back on Busy Feature. The Callback on Busy feature enables a caller to dial the callback prefix and an intended user number. When the intended user is available it will initiate a call between the two users, provided that the callback request has not expired. To request a callback, you need to dial the callback prefix (default *92) with the extension you want a callback from (example *92200). To enable the feature, go to System -> Servers -> Telephony Services -> enable Callback on Busy check box. Currently not HA so only enable on one server. To configure prefix and timeout see Features -> Callback on Busy. | New Feature |
SIPX-101 | Increase number of SIP UDP/TCP re-transmits as well as increase T1 timer and allow parameters to be changed in web admin | Added an enhancement to allow for longer re-transmits of SIP UDP and TCP packets. In some network environments (mobile data network) there are very often long delays before the initial path is available between SIP user agents and the sipXcom server. Once the path is setup, the network response is very reasonable. Increasing the SIP resend times to a larger value allows for the initial SIP invite to get to a user agent and then respond in time allows the calls to be properly setup. The enhancement allows configuration of retranmits as well as timer T1. In most cases, simply increasing T1 will compensate for high latency. That enhancement has the new configuration requirements: Settings should be in System -> SIP Proxy -> Configuration Parameters (Advanced Settings) Setting 1: Check box setting name: SIP Round Trip Time (T1 Timer) Description: The value of the T1 timer used for retransmission interval computation. This is expressed in milliseconds (100ms - 500ms). Default Value: 100 Max input value accepted: 500 Minium input value accepted: 100 No text allowed, integer only 100 - 500 Setting 2: Check box setting name: SIP Retransmission Count Description: The number of times SIP requests will be retransmitted before a timeout occurs (2 - 7). Default value: 4 Max input value accepted: 7 Minimum input value accepted: 2 No text allowed, integer only 2 to 7. | Enhancement |
SIPX-108 | Display name for Yealink phones | Modify the Yealink plugin to set a user with First and Last name and register him on a Yealink phone Expected: The line display name to take the value from users first and last name (same as it works on Polycoms) Actual: The line display name is the line number | Enhancement |
SIPX-115 | Make configurable number of digits used by play/get in AA | In Auto Attendant the play and get digits accepts only 10 digits to be entered, therefore truncates the last ones. This was hardcoded in ivr and not configurable at the moment. This caused an issue with enabling and disabling night mode on Auto Attendants due to the number of digits that needed to be entered. | Enhancement |
SIPX-15 | Garbled Moh: Add ability to rewrite 180 with SDP to 183 with SDP in Transfer Control Plugin | Added an enhancement to marshal notifies with 180 for call transfers to be converted to a 100 trying event to keep Polycom phones from stopping MoH and disconnecting the call on alerting while there is really no early media streaming for 180. This causes dead air within the span the transfer is in alerting phase. However, there are instances when 180 actually contains SDP and we need to notify the Polycom that early media is now streaming. To achieve this, we must convert 180 to 183 so that the marshaling code does not convert the event to 100 trying. | Enhancement |
SIPX-184 | Make Hazelcast integration configurable | Added an enhancement to turn Hazelcast on / off for openfire. | Enhancement |
SIPX-185 | Use mongodb TTL mechanism to expire registrations / subscriptions | Added an enhancement to use MongoDB's TTL mechanism to expire registrations and subscriptions. The current mechanism for removing expired registrations relys on custom code. On a separate thread we periodically query mongo database and remove entries in case expiration time exceeded. In the case of many expired registrations the results could be very large and impact performance (see point 2.2 and comment: GET MORE operations could also be a result of large data returned in query result). MongoDB comes with its own support for documents Time To Live, see http://docs.mongodb.org/manual/tutorial/expire-data/#expire-documents-at-a-certain-clock-time which could perform much better and have less impact on database than our custom mechanism. | Enhancement |
SIPX-186 | Adapt the code for subscriptions | This issue is part of SIPX-185. Subscriptions should be able to be expired by mongo TTL feature | Enhancement |
SIPX-187 | Adapt any other component which relies on the content of the 'expirationTime' mongo field | This issue is part of SIPX-185. Besides config, there is also https://github.com/sipXcom/sipxecs/blob/release-15.04/sipXtools/src/sipx-dbutil which will be affected by the change. If there are more, we should update all of them | Enhancement |
SIPX-188 | Adapt config to handle the new format of 'expirationTime' field | This issue is part of SIPX-185. After the change, that field will be a Date() object representing the time when the binding will expire; right now it is an integer containing the seconds since epoch when the binding expires. Therefore, config should be adapted to handle the new format | Enhancement |
SIPX-189 | Adapt the code for reg bindings | This issue is part of SIPX-185. Reg bindings should have 'expirationTime' as Date() instead of int/log | Enhancement |
SIPX-190 | Config should change the type of 'expirationTime' field from node.registrar at upgrade | This is part of SIPX-185. With the changes for SIPX-185, the 'expirationTime' field was changed from long type to Date() type in order for mongo TTL thread to be able to remove expired documents. Thus, at upgrade, we need to make sure that the existing bindings will be properly merged so that the values of the 'expirationTime' field will be changed from int to Date(). | Enhancement |
SIPX-207 | Config should change the type of 'expires' field from node.subscription at upgrade | This is part of SIPX-185. With the changes for SIPX-185, the 'expires' field was changed from long type to Date() type in order for mongo TTL thread to be able to remove expired documents. Thus, at upgrade, we need to make sure that the existing subscriptions will be properly merged so that the values of the 'expires' field will be changed from int to Date(). | Enhancement |
SIPX-208 | If LDAP authentication against a domain error occurs raise an alarm | Added an enhancement to raise an alarm of LDAP errors occur. LDAP now has proper timeout if an authentication against a configured domain occurs. This might however be difficult for an administrator to know that there actually is a problem. Raise an alert if there is a timeout or error condition with respect to LDAP authentication against a domain. | Enhancement |
UC-1131 | SQA does not log start/stop | Added an enhancement to the SQA service for it to log when it is started and when it is gracefully closed. | Enhancement |
UC-1422 | Add a new config setting to enable/disable consultative transfer fix for multiple gateways per location | Added an enhancement to control settings for UC-1382. The fix for UC-1382's works in a very specific case and could be enable/disabled per request. That is because the fix uses custom SIP headers and does some SIP messages header parsing (INVITE, REFER, 200OK) which are not needed in regular scenarios. Check UC-1382 for a description of possible issues when doing consultative transfer and multiple gateways per location are configured. Where: SIP Proxy -> Advanced Settings Setting name: Consultative Transfer to Use Gateway of Initial Invite (on/off) - default to on Description: When a call is consultative transferred the resulting invite for the final destination of the transfer needs to use the same gateway as the consultative part of the transfer (warning - restarts proxy). This is the config side only, the back end is not completed yet, so while the setting is visible in Admin GUI, the actual enhancement is not ready yet. Presently slated for 15.10. | Enhancement |
UC-3622 | Customize backup/restore script to backup in a dedicated location | Added an enhancement to allow the administrator to specify a different system path to save backup files. Currently local backup uses a fixed path to save backup files: /var/sipxdata/backup Add a parameter to sipx-archive script to specify a different path to save backups | Enhancement |
UC-3697 | Default the Sofia Config so that Freeswitch uses SIP Call ID as it's Call ID | Added an enhancement to make freeswitch use the SIP Call ID for it's Call ID. This makes tracing calls through freeswitch easier. Default the sofia profile (sofia.conf.xml.vm) now contains the following line. <param name="inbound-use-callid-as-uuid" value="true"/> This will make Freeswitch use the SIP Call ID for it's Call ID and greatly eases the debug process when trying to find particular calls in the system based on pcap captures. | Enhancement |
UC-3700 | Default the Sofia Config so that Freeswitch uses SIP Call ID as it's outbound Call ID | This is Admin GUI work related to UC-3697 Under System - Media Services -> two new check boxes are added : Preserve inbound call id , Preserve call id on outbound calls - enabled by default. Default the sofia profile to use <param name="outbound-use-uuid-as-callid" value="true"/> This will make Freeswitch to record have same call_uuid as initial leg | Enhancement |
SIPX-143 | Recreating a region with phones registered results in doubled registrations for same phone (one of them expired) | Fixed an issue with Regions that was caused by recreating a region that had phones registered would result in doubled registrations for each phone with one of them being expired. Detailed information: Expired registration was that one with initial shard id. For the same registration: "200@ddluca.ezuce.ro", we have "shardId" : 1, and "shardId" : 6, sipxecs:PRIMARY> db.registrar.find({"shardId" : 1}).pretty() { "_id" : ObjectId("5450fbc485e6cd2d05dbb5dd"), "timestamp" : NumberLong(1414593476), "localAddress" : "10.5.0.171/RegDB::_bindingsNameSpace", "identity" : "200@ddluca.ezuce.ro", "uri" : "sip:200@ddluca.ezuce.ro", "callId" : "7463f4df-35ed9969-232c967f@10.5.0.3", "contact" : "<sip:200@10.5.0.3;x-sipX-nonat>", "binding" : "sip:200@10.5.0.3", "qvalue" : "", "instanceId" : "", "gruu" : "", "shardId" : 1, "path" : "", "cseq" : 14, "expirationTime" : NumberLong(1414595689), "instrument" : "0004f2871439", "expired" : false } { "_id" : ObjectId("54524727a75c3916d8c77bbd"), "timestamp" : NumberLong(1414678311), "localAddress" : "10.5.0.170/RegDB::_bindingsNameSpace", "identity" : "200@ddluca.ezuce.ro", "uri" : "sip:200@ddluca.ezuce.ro", "callId" : "7d195f23-be10cead-7fe5ebf3@10.5.0.3", "contact" : "<sip:200@10.5.0.3;transport=tcp;x-sipX-nonat>", "binding" : "sip:200@10.5.0.3", "qvalue" : "", "instanceId" : "", "gruu" : "", "shardId" : 6, "path" : "", "cseq" : 10, "expirationTime" : NumberLong(1414678647), "instrument" : "0004f2871439", "expired" : false } This is not possible because "shardId" : 1 are'n available anymore for server with local address: 10.5.0.171. This server has shardId = 4 [root@defs171 ~]# cat /etc/sipxpbx/mongo-client.ini connectionUrl=mongodb://defs171.ddluca.ezuce.ro:27017,regone173.ddluca.ezuce.ro:27017,regtwosec174.ddluca.ezuce.ro:27017,defp170.ddadPreferenceTags= connectionString=sipxecs/defs171.ddluca.ezuce.ro:27017,regone173.ddluca.ezuce.ro:27017,regtwosec174.ddluca.ezuce.ro:27017,defp170.d clusterId=2 shardId=4 useReadTags=true logappend=true port=27017 replSet=sipxecs enable-driver-logging=true driver-log-level=5 read-query-timeout-ms=100 write-query-timeout-ms=400 [root@defs171 ~]# This bug can be reproduced in next scenario: On a HA setup, 7 nodes cluster - regions setup Register phone with line 200 Delete regions Recreate them In GUI : Diagnostics -> registrations Expected result: A single registration Actual result: Same registration doubled one available and another one expired. | Fix |
SIPX-170 | Restore of userProfile collection does not work properly when restoring on the same machine | Fixed an issue caused by restoring data to an existing configured server. Recreate: 1.Make a backup of your system via System->Backup and save it for upcoming steps 2.Edit an already existing user , for example in my case : User 1000: -changed user ID and IM ID from 1000 to 100033 -he did not have first name last name setup so i added something -he did not have the 3 "Custom" fileds filled so i filled them 3.Restore the system to the old backup by going to SYstem->Restore Expected: System to be restored and user 1000 to have his original settings Actual: User 1000 had user ID: 1000, IM ID: 100033, first/last name empty, Custom fields filled Verified in mongo and actually all details about user 1000 were as in step 2. Restoring the backup on a different fresh installed machine did not cause any issues. | Fix |
SIPX-179 | Unpacked WAR directory explicitly set | Fixed an issue that caused the temp directory where jetty unpacked WAR files to not get cleaned up properly. sipXcom-users thread regarding this: https://groups.google.com/forum/#!topic/sipxcom-users/bGvupc9xMbo "" the temp directory where jetty unpacks the WARs does not seem to get cleaned. When i restart sipxecs a new directory is created and the old ones are still there. I've tried using the persistTempDirectory but came to the conclusion that this is only available since jetty 9.1+. (https://wiki.eclipse.org/Jetty/Reference/Temporary_Directories) Is there any way to clean up old unpacked war directories? I could ofcourse write a nasty hack for the init.d script, but i'm hoping there is a better solution. "" "" Well, i tried setting the 'persistTempDirectory' in the sipxconfig-jetty.xml file but to no avail. The current solution we are using is to explicitly set the tempDirectory on production system so they wont fill up the harddisk in time, like so: <Call name="addHandler"> <Arg> <New class="org.eclipse.jetty.webapp.WebAppContext"> <Set name="contextPath">/sipxconfig</Set> <Set name="war"><SystemProperty name="jetty.lib.dir"/>/sipxconfig.war</Set> <Set name="extractWAR">true</Set> <Set name="tempDirectory">/var/sipxdata/tmp/sipxconfig</Set> </New> </Arg> </Call> "" Attached is a patch which fixes this 'bug'. | Fix |
SIPX-192 | Error in Polycom Soundpoint 3.2.x firmware configuration causes 488 Not Acceptable Here | Fixed an issue when generating Soundpoint 3.2.x configs for Soundpoint IP 650 phones, in the [MAC-ADDRESS]-sipx-sip.cfg file where the codecs were listed with wrong priority order. In the following examples, a SPIP 650 phone has been configured with G722, G711A, G711Mu and G729AB. Calls sent by a Patton Smartnode are rejected with a 488 Not Acceptable Here message. Configuring the phone in a 4.2.1 SipXecs server, the configuration looks like the following: ... <codecs> <preferences voice.codecPref.IP_650.G722="4" voice.codecPref.IP_650.G711Mu="2" voice.codecPref.IP_650.G711A="1" voice.codecPref.IP_650.G729AB="3" /> ... but in a 15.05 SipXcom server, the configuration is like the following: ... <preferences voice.codecPref.IP_650.G722="1" voice.codecPref.IP_650.G711Mu="" voice.codecPref.IP_650.G711A="" voice.codecPref.IP_650.G729AB="" /> ... It seems that the first three codecs get an empty string priority value, and the fourth get the number "1". Configuring a SPIP331 phone with G771A, G771Mu,G729AB codecs, the generated file contains the following lines: ... <preferences voice.codecPref.G711Mu="" voice.codecPref.G711A="" voice.codecPref.G729AB="" /> ... Also in this case the priority order is missing. Anyway, the phone accepts calls. | Fix |
SIPX-194 | "On the phone" not removed if user offline | Fixed an issue with openfire integration such that if the user goes offline (fox XMPP) during a call and terminates the call prior going back online, the 'On the phone' status message remains stuck | Fix |
SIPX-201 | Call queue strategy does not have a default set | Fixed an issue with sipXcallqueue where the feature did not have a default queue strategy set. Reproduce: 1.Enable call queue 2.Click Add Call Queue and enter some name and extension 3.Click Apply Result: The Strategy drop-down will be marked with a discontinued rectangle as if the default option was changed. This happens because of strategy being set to "0": /etc/sipxpbx/sipxcallqueue/CallQueue.xml <setting name="strategy"><type refid="type_strategy"/><value>0</value></setting> Actual: Default should be ring-all strategy as the web ui shows | Fix |
SIPX-202 | Agent level/position default to 0 | Fixed an issue sipXcallqueue where the Agent level/position was not set to 0. Reproduce Setup: - call queue feature enabled - Queue Q1 created - Agent A1 created Reproduce Steps: 1.Assign Agent A1 as a member of queue Q1 : click Set Queue Membership and select Q1. Expected: Call queue PRD doc says it should default to 1. Actual: Agent Q1 is assigned to Q1 but his level/position default to 0. "level – Administrator will be able to specify a level (tier) of an agent within each queue. Default to '1'. position – Administrator will be able to specify a position of an agent within each queue. Default to '1'." | Fix |
SIPX-205 | Certificate Authorities not deleted from server on delete | Fixed an issue where Certificate Authorities are not removed when deleted from GUI. Reproduce: 1. Create a new CA using: > req -new -x509 -nodes -sha1 -days 365 > host.crt 2. Go to System -> Certificates -> Certificate Authorities 3. Upload Certificate Authority host.crt created at step 1 4. SSH to the server and check the saved file name: ls -l /etc/sipxpbx/ssl/authorities/host.crt.crt -rw-r--r-- 1 sipx sipx 993 Apr 18 12:19 /etc/sipxpbx/ssl/authorities/2. Go to System -> Certificates -> Certificate Authorities 3. Upload Certificate Authority host.crt created at step 1 crt 5. Go to System -> Certificates -> Certificate Authorities 6. Delete host.crt 7. SSH to the server and check that the file was deleted Possible security issue. | Fix |
SIPX-206 | Certificate Authorities uploaded with .crt.crt extension | Fixed an issue that caused new Certificate Authorities that were uploaded to sipXcom server to have a .crt.crt extension. Reproduce: 1. Create a new CA using: > req -new -x509 -nodes -sha1 -days 365 > host.crt 2. Go to System -> Certificates -> Certificate Authorities 3. Upload Certificate Authority host.crt created at step 1 4. SSH to the server and check the saved file name: ls -l /etc/sipxpbx/ssl/authorities/host.crt.crt -rw-r--r-- 1 sipx sipx 993 Apr 18 12:19 /etc/sipxpbx/ssl/authorities/host.crt.crt | Fix |
SIPX-211 | Bria phone does not register with TLS - account partially enabled | Fixed an issue where Bria cannot register with TLS. Also, sipx certificate authority needs to be added in the cert authority list client side (if the cert authority is not present on bria machine - most likely is not present if the internal sip certificate generated by sipxcom is used): Example on how to do that when Bria is installed on a windows machine: http://windows.microsoft.com/en-us/windows-vista/view-or-manage-your-certificates Bria tech support doc related to SIP TLS: https://support.counterpath.com/topic/how_do_i_use_certificates_for_tls | Fix |
SIPX-215 | Yealink config generation fails | Fixed an issue with the Yealink plugin that caused phone configurations to not be created properly. https://groups.google.com/forum/#!msg/sipxcom-users/oOWRSzSy9ro/8f8X1TbuAdsJ Projection for: 7/7/15 12:23 PM 7/7/15 12:23 PM Failed Invocation of method 'getTftpServer' in class org.sipfoundry.sipxconfig.phone.yealink.YealinkPhone threw exception java.lang.NullPointerException at yealinkPhone/config_v7x.vm[line 2, column 28] | Fix |
SIPX-217 | Fix text on Phone and Phone Group Pages | Fixed the text on the Phone and Phone Group pages to reflect that now the 'Profiles template version' is now the Group Firmware version. The setting label should change to such. Also the text under that box should read: Changes the group firmware will effect all phones in the group. If you require different firmware for different phones please use additional group to manage the firmware. NOTE: If phones are present in multiple groups, with different versions, the last group in the list of phone groups takes precedence. The help text to the right should read: NOTE: Changing the group firmware WILL set all of the phones in the group to that firmware version. | Fix |
SIPX-218 | Call Queue no longer working after enabling/disabling other services | Fixed an issue with sipXcallqueue that caused sipXcallqueue to not work properly when other services were enabled or disabled. Reproduce Setup: Single node setup Call Queue enabled and configured. When enabling/disabling other services, callqueue document configuration gets modified in mongo, causing lack of functionality. Reproduce Steps: 1. Enable Call Queue 2. Add Call Queue : name 5 extension 555 3. Click Apply 4. Check in mongo : mongo imdb sipxecs:PRIMARY> db.entity.find({"ent":"callqueue"}).pretty() { "_id" : "CallQueue8", "ident" : "555@stefan.ezuce.ro", "vld" : true, "ent" : "callqueue", "als" : [ { "id" : "5", "cnt" : "sip:555@10.4.0.104:15060", "rln" : "callqueue" }, { "id" : "555", "cnt" : "sip:555@10.4.0.104:15060", "rln" : "callqueue" } ] } 5. Call Queue extension and check functionality - it does 6. Enable/disable a telephony service(eg: Authorization Code) 7. After configuration deployment check again in mongo : sipxecs:PRIMARY> db.entity.find({"ent":"callqueue"}).pretty() { "_id" : "CallQueue8", "ident" : "555@stefan.ezuce.ro", "vld" : true, "ent" : "callqueue", "als" : [ ] } 8. Call Queue extension again and check functionality. Issue: Call to Queue extension does not connect. Workaround: "Apply" on the Callqueue page fixes this issue. | Fix |
SIPX-219 | Fix special german chars errors | Fixed an issue that caused codepage related errors for special chars (like german umlaute). See https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/sipxcom-dev/v_sxd5XZAdY/SL5wpzL7akwJ | Fix |
SIPX-222 | SipXBridge Shared Memory Error Causes Unintended RTP Port Change and One Way Media | Fixed an issue where in some cases, following re-inivtes, sipXbridge will change its RTP port and thereby cause one-way media. The root cause is a memory share error in RtpReceiverEndpoint.setSessionDescription(): Old (note original comments removed): // OnRelay: problem is 'sessionDescription is assigned, not copied, and subsequently reused and modified by the caller. this.sessionDescription = SipUtilities.cleanSessionDescription(sessionDescription); this.sessionDescription.setOrigin(origin); SipUtilities.fixupSdpMediaAddresses(sessionDescription, address, this.getPort()); Fixed: sessionDescription = SipUtilities.cleanSessionDescription( sessionDescription ); sessionDescription.setOrigin(origin); SipUtilities.fixupSdpMediaAddresses(sessionDescription, address, this.getPort() ); // OnRelay: Ensures a correct clone of the sessionDescription is assigned after all necessary changes this.sessionDescription = SipUtilities.cloneSessionDescription(sessionDescription); | Fix |
SIPX-223 | Exception when adding PSTN line to Audiocodes type of gateways | Fixed an issue that caused a GUI error to be thrown when adding a PSTN line to an Audiocodes Gateway. Reproduce Steps : 1.Go to Devices Gateways and from the menu add any of the Audiocodes gateways 2.Edit the added gateway and go under PSTN Lines 3.Click Add PSTN line link Issue : an error is displayed This happens to all the Audiocodes gateways (After reconnecting to Admin Portal, you can see the line was actually added) | Fix |
SIPX-232 | sipxconfig SOAP API not working if no internet connectivity | Fixed an issue with spring framework that caused the SOAP API to not work if the server had no Internet connectivity. | Fix |
SIPX-30 | Queue calls continuously offered to unregistered agents causes freeswitch flooding | Resolved an issue that caused freeswitch and sipxproxy services will start consuming some CPU (with 4 agents ~ 15-20 %) After a short while, freeswitch.log will indicate some problems: [CRIT] mod_sofia.c:4268 Error Creating Session [CRIT] switch_time.c:1227 Over Session Rate of 30! [CRIT] switch_core_session.c:2350 Throttle Error! 3 Recreate: Sofia status shows 3-4 calls in Running state during this test.. 1.Enable call queue and use the default settings. 2.Add a queue 3.Assign a couple of agents to this queue and make them Available 4.Don't register the agents on actual phones. 5.Call the queue extension from some number. Workaround: Don't leave unregistered agents in Available state - log them out.. | Fix |
SIPX-31 | Call queue call timeout does not work anymore | Resolved an issue where an agent is alerted but the call keeps alerting him after 15s as well. Expected: Call to be passed to the other agent after 15s Reproduce: 1.Enable Call queue service 2.Queue already added with ring strategy set to Ring agent who has been idle the longest. 3.Agents 2012 and 2048 are already created and assigned to queue 557 and they have Call timeout field set to 15 seconds 4.Call the queue and wait in queue for call timeout to be reached Agents 2012 and 2048, queue 557 configs from fS_cli : agent-2012|single_box||callback|sofia/1410setup2.cristi.ezuce.ro/2012@1410setup2.cristi.ezuce.ro;sipx-noroute=VoiceMail;sipx-userforward=false;sipx-expires=15|Available|Waiting|0|0|0|0|0|1428425823|1428425824|1428425819|1428329584|0|13|246|1428328703 agent-2048|single_box||callback|sofia/1410setup2.cristi.ezuce.ro/2048@1410setup2.cristi.ezuce.ro;sipx-noroute=VoiceMail;sipx-userforward=false;sipx-expires=15|Available|Waiting|0|0|0|0|0|1428425779|1428425786|1428425772|1428321960|0|16|201|1428328667 queue-557|longest-idle-agent|/var/sipxdata/mediaserver/data/moh/suite-espanola-op-47-leyenda.wav|queue|true|10|true|true|60|false|0|0|5| | Fix |
SIPX-39 | Expiration timer could not be changed under Huntgroup --> Call Sequence | Fixed an issue with changing the expiration timer for a Hunt Groups did not work properly. If you try to change expiration timer on anyone of the extensions in a Hunt Group you will receive "Changes applied successfully." message but the values are not changed. | Fix |
SIPX-43 | Freeswitch rtp timeout causes MoH to stop after 5 minutes | Fixed an issue with long duration MoH. When a user was put on hold, MoH feature would stop playing the music after 5 minutes. | Fix |
SIPX-54 | Cannot add simple speed dial or BLF on the Yealink phone | Fixed an issue with Yealink phone configuration that did not allow the administrator to add a simple Speed Dial or BLF key. Recreate: Go into Admin Portal to Users->"200" -> Speed dials and try to add speed dials here followed by a Send Profiles (or doing this via the User Portal) | Fix |
SIPX-55 | Both PCMA and PCMU are marked as G711 in the Yealink profile | Fixed an issue with the labels for PCMA and PCMU G.711 Codecs. Recreate: Under Device -> Phones -> "Yealink phone" -> Line -> Codecs there is no way of telling which codec is G711 U-law and which is A-law since both are named G711. | Fix |
UC-2436 | Alias field stack overflow | Customer had 206 aliases on one user at 10 characters each. Attempting to remove one of them resulted in an internal error being displayed on the page. The problem was described as a regular exp pattern trying to validate the field which enters in a loop with so many chars. | Fix |
UC-2507 | Missing 'Remote Station ID' causes FAX IVR processing null pointer exception | Looks like remote station id missing and causing issue Amended code to handle scenarios when fax is not successfully received. The error was not from missing remote station id (that case is handled in FaxProcessor.java:147), but from null "faxReceive" object when failing to receive fax. This fix ensures that in case fax to email fails to work, instead of displaying a null pointer exception log message in sipxivr.log , an error is displayed with proper reason of failure. | Fix |
UC-2891 | Proxy should look for X-sipX-AuthIdentify also in To header | Addressed an issue caused by Grandstream's non-compliant REFER mechanism. This issue was found while investigating a customer issue. The caller phone Grandstream is not compliant to REFER mechanism because it did not encode X-sipX-AuthIdentify as a separate header. It put it in the To header To: <sip:999@sip.domain.com.co?X-sipX-Authidentity=%3Csip:~~ac~1%40sip.domain.com.co%3Bsignature%3D537E21F2%253A%253A54df707414b7c7c5f08bed08a0992f80%3E&REFERENCES=1661133853-5060-4%40BHC.BH.B.BJI%3Brel%3Drefer>;tag=as6f6ba4a4 However the authentication succeeded for the referred call because the caller knew how to authenticate. We could overcome this limitation of some phones by looking for X-sipX-AuthIdentify in also in To header. | Fix |
UC-3259 | max_forwards set too low for call queue | Fixed an issue were if a call passed through sipXcallqueue the max forwards would get set too low. Reproduce: 1. Place call into SipXcallQueue from outside world 2. Get an agent 3. Have agent park call... unpark call.. then park call again Default value for calls originated from Call Queue is now 70. | Fix |
UC-3538 | Config for mod_say is incomplete | Fixed an issue with freeswitch's mod_say module that was caused by an incomplete configuration. The proper proper package / build / configure for it is now included with the base install of freeswitch. | Fix |
UC-3558 | Transfer/Conference widget missing during call back | Fixed an issue that caused the Reach Transfer/Conference widget to be missing in the Agent Dashboard. Used a cluster with services enabled as in the attached photo. Also Reach is enabled only on Primary server . Server config is taken from openuc.ezuce server.(very similar) Line config photo is also attached. Reproduce: 1.Client calls Line 303 where Agent 2007 is Idle 2.Client presses * to leave a VM in this queue and then leaves a VM and presses * again to finish. 3.Agent is alerted by the newly left VM 4.Agent successfully listens to this VM and then from the Dashboard clicks the Callback icon.He can see the Transfer/Conference widget. 5.Client is called back and he answers Issue: In the agent dashboard,the Transfer/Conference widget is missing. | Fix |
UC-3568 | Improve Bria provisioning from openUC | Fixed some issues with Bria provisioning with newer versions of Bria. Issues included: 1. Bria 4.x although could retrieve .ini file its provisioning support is limited 2. Bria 3.x could import .ini file but some parameters were different from the ones set on openUC configuration page (ex. Transport was set as UDP and on Bria was showed as Auto) 3. fix phone settings provisioning (the issue was that e911 location setting and deviceLimit settings were generated in the provision file *.ini these are removed now) 4. fix audio/video codecs view 5. added remaining Bria 3.5, 4.1 phone settings 6. add line settings for bria 3.5 and 4.1 support 7. add generic phone preference settings for bria 3.5 and 4.1 | Fix |
UC-3577 | zen 3973 : 14.04 to 14.10 upgrade did not update call park orbit locations | Fixed an issue with upgrades from 14.04 to later versions that caused Park Orbit locations to not be updated. Issue: After the upgrade the webui would crash if you attempted to navigate to features -> call park. Attempted to send server profiles to correct and IMDB generation also failed due to this missing location. | Fix |
UC-3620 | REST API activecdrs Problem in 14.10 Update1 | Fixed an issue with the activecdrs REST API. This was caused by release 14.10's use of JDK 7 (release 14.04 uses JDK 6) and for XML-Java marshaling we use xstream version 1.3.1. | Fix |
UC-3661 | Last digits in the Live Attendant dialed number getting truncated if they are already used in the prefix | Fixed an issue that caused users to not be able to enable / disable Live Attendant when too many digits were entered. Related to SIPX-115 Reproduce: System > Dialplans > Dialing Rules > AutoAttendant : Enabled : Yes AutoAttendant Extension : 360603 Enable live attendant : Yes Live attendant extension : 36060000 Enable / Disable PIN : 3606 User 201 with 2 speed dials enabled : DayAttLive : *67 + 360603 + 3606 (enable Live Attendant) NightAttLive: *68 + 360603 + 3606 (disable Live Attendant) Reported Problem : When the speed dial buttons are being used the IVR is producing unsuccessful tones. An examination of sipxivr.log showed that the last digit from the Live Attendant PIN number was being truncated part way through the ivr processing of the request, regardless of the number of digits contained by Live Attendant PIN. If the last digits of the PIN number used, are also contained in the prefix for the Enable/Disable Live Attendant they get truncated ( e.g in this case was '6' - PIN 360*6* prefix **6*7) "2015-06-09T13:37:34.158000Z":9444:sipXivr:DEBUG:test.stefan.ezuce.ro:Thread-154:00000000:sipxivr:"LiveAttendantManagement:run for*673606033606" "2015-06-09T13:37:34.158000Z":9445:sipXivr:DEBUG:test.stefan.ezuce.ro:Thread-154:00000000:sipxivr:"LiveAttendantManagement:run dialed number360603360 action true" "2015-06-09T13:37:34.183000Z":9446:sipXivr:INFO:test.stefan.ezuce.ro:Thread-154:00000000:sipxivr:"RestfulRequest::request PUT to http://10.4.0.101:12000/sipxconfig/rest/auto-attendant/livemode/360603360 response: 404" | Fix |
UC-3668 | Voicemail Backup not executed when multiple choices checked : Configuration, CDR, Voicemail | Fixed an issue with manual backup routine when multiple backup choices were checked. Reproduce: Cluster with 3 nodes: primary, secondary, arbiter. Primary node running Mongo. Media services running on secondary node. In admin GUI under System > Backup > Locally Backups > Files 3 options are available : Voicemail, Configuration, CDR. Reported Problem : When trying to manually generate a server backup and selecting Voicemail in combination with Configuration, CDR or both options, the archive voicemail.tar.gz doesn't get generated. When selected in a single-handed manner, the archive is generated successfully. Log files attached when all 3 options are checked. | Fix |
UC-3680 | Services no longer visible after changing SNMP community string | Fixed an issue caused by changing the SNMP community string that caused the System -> Servers -> Services page to not work properly. Reproduce: 1. Change Diagnostics->SNMP->Community string to something new 2. Go to System->Servers->click a server->Services Issue: Services are not displayed. From config.log "2015-06-26T07:06:23.160000Z":426:JAVA:INFO:primary.1410setup2.cristi.ezuce.ro:qtp628560642-23:00000000:ProcessSnmpReader:"Connecting to 10.2.0.171 to get SNMP information" "2015-06-26T07:06:33.162000Z":427:JAVA:ERR:primary.1410setup2.cristi.ezuce.ro:qtp628560642-23:00000000:ServicesTable:"Could not get SNMP data" | Fix |
UC-3685 | vCard instead of VCARD for exported phonebooks | Fixed an issue with vCard export for Bria 4 that caused it to be able to utilize the contacts from the system. We can export phonebooks from openUC as .vcf and then import them into Bria softphone. Issue: But we export them using "vCard" keyword: BEGIN:vCard END:vCard When you import the .vcf file with contacts into Bria, no contacts will be imported. Workaround: You have to change "vCard" to "VCARD" and then contacts will be imported. From vCard RFC (https://tools.ietf.org/html/rfc6350#page-28) is not very specific about this. "3.3. ABNF Format Definition The following ABNF uses the notation of [RFC5234] ... vcard-entity = 1*vcard vcard = "BEGIN:VCARD" CRLF "VERSION:4.0" CRLF 1*contentline "END:VCARD" CRLF ; A vCard object MUST include the VERSION and FN properties. ; VERSION MUST come immediately after BEGIN:VCARD." There's a possibility other application will not recognize our exported .vcf files. | Fix |
UC-3714 | Internal Error when Adding PSTN to Audiocodes Mediant 1000 Gateway | Fixed an issue that caused a GUI exception to be thrown when attempting to add a PSTN Line to an Audiocodes Mediant 1000 PRI gateway profile. | Fix |
UC-3750 | GRUU problem in 15.06 | Reverted a commit that broke GRUU when utilizing the WSS transport | Fix |
SIPX-310 | Problem receiving faxes in 15.06 and later & sipXbridge Specs Violation | During a T.38 re-INVITE sipXbridge strips a custom payload from the m line sent by FS. The resulting m-line has no payload at all which of course is a syntax error. This seems to be a direct result of the regression pointed out here: https://freeswitch.org/jira/browse/FS-6954. This may cause SBC's that don't pass the m-line in SDP to not be able to receive faxes. | Known Issue |