Release Notes

     Previous  Next    Open TOC in new window    View as PDF - New Window  Get Adobe Reader - New Window
Content starts here

Resolved Problems in WebLogic SIP Server 3.1 MP1

The following table summarizes the issues that were resolved in WebLogic SIP Server 3.1 MP1. See also Table 2-2, “Problems Resolved in Version 3.1,” on page 2-9.

Table 2-1 Problems Resolved in Version 3.1 MP1
Change Request Number
Description
CR318098
When proxying a request, WebLogic SIP Server treated the Reason header as an Unknown Header and removed it when sending a CANCEL request to a UAS.
The code was modified so that, upon receiving a CANCEL from the previous hop, the server copies any Reason header field into the new CANCEL request before proxying.
CR320740
When a SIP agent returned different To: header tags in the 183 Session Progress and 200 OK messages, ACK requests created on the 200 OK could have the To: header tag of the 183 response.
This problem was addressed by updating the way in which derived sessions are created for proxy and B2BUA scenarios.
CR321374, CR359194
When browsing WebLogic SIP Server MBeans using SNMP commands, the following problems occurred:
  1. The SNMPWALK, SNMPGETNEXT, and SNMPGET commands did not work in a basic standalone WebLogic SIP Server domain.
  2. The SNMPWALK, SNMPGETNEXT, and SNMPGET commands worked only for Managed Servers running in Managed Server Independence (MSI) mode.
  3. No information was provided for the following WLSS MIB OID's:
    • sipServerRuntimeTable (.1.3.6.1.4.1.140.626.8)
    • sipApplicationRuntimeTable (.1.3.6.1.4.1.140.626.9)
    • replicaRuntimeTable (.1.3.6.1.4.1.140.626.10)
  4. ActiveApplicationSessionCount (.1.3.6.1.4.1.140.626.8.1.5) and ActiveSipSessionCount (.1.3.6.1.4.1.140.626.8.1.5) were always reported as zero, and DestroyedApplicationSessionCount (.1.3.6.1.4.1.140.626.8.1.10) and DestroyedSipSessionCount (.1.3.6.1.4.1.140.626.8.1.11) were neither visible nor accessible.
The code was modified to correct the above issues. Ensure that you enable Anonymous Admin Lookup by following these steps:
  1. Access the Administration Console for the domain.
  2. Click Lock & Edit.
  3. Select the name of your domain in the left pane.
  4. Select Security->General in the right pane.
  5. Select Anonymous Admin Lookup Enabled.
  6. Click Save.
  7. Click Activate Changes.
Also, note that WebLogic SIP Server instances ignore the SNMP port number specified on the SNMP configuration page. Servers use the default port 1610 to start the SNMP agent and, if this port is not available, the port number is incremented until an unused port is discovered. You can specify the starting port number using the -DWLSS.SNMPPort=port_number startup argument. The server logs display the actual SNMP port on which the server is listening.
CR321567
Applications were not handling NOTIFY messages without a previous SUBSCRIBE.
The code was modified to allow NOTIFY to be propagated to an application even if there is no Subscription.
CR321961
In a forking scenario, WebLogic SIP Server forwarded to the application all the responses it received from all forked branches, rather than forwarding only the “best” response.
The code was modified so that only the best final response is forwarded to the application in supervised mode. Applications now receive just one response.
CR325071
Angle brackets were not preserved in ALERT_INFO even when following the name-addr format.
The code was modified to preserve angle brackets in ALERT_INFO.
CR325192
The remote target was not updated when a 1xx was received with to tag. This caused an incorrect request uri for any subsequent request created using SipSession.
The code was modified to update the remote target using the Contact Header value available in the 1xx response. Subsequent request now carry the correct request uri.
CR325538
WebLogic SIP Server did not call the rcvMessage(Message msg) in Ro online charging applications for classes implementing the com.bea.wcp.diameter.SessionListener interface if the received CCA message did not contain a Session-Id.
The code was modified to look for a Session-Id in the original Request if the Answer has no Session-Id
CR327764
java.lang.IllegalStateException could be thrown during a forking proxy test under load when trying to send a response to CANCEL if the ServerTransaction was already in the completed state.
The code was modified to allow a response to the actual CANCEL request being created/sent even if the final response has been sent. A response for CANCEL is now always sent as an acknowledgement of its receipt
CR330315
The container failed to set the Record Route header using the External listen port even if it was configured to do so.
The code was modified to honor the external listen port configuration.
CR331068
The following error sometimes occurred with forking proxies under load:
java.lang.InternalError: Proxy is null
This occurred because the proxy was not set in CANCEL messages. The problem was addressed with a code fix.
CR332708
WebLogic SIP Server could throw a NullPointerException under heavy load during the resetCache() operation.
This problem was addressed with a code fix.
CR333893, CR358944
Because of the RFC3261 limitation described at http://bugs.sipit.net/show_bug.cgi?id=706, transactions could remain in PROCEEDING state and the associated call states were never cleaned up. In certain conditions involving very high loads, this could lead to Out of Memory errors.
The code was modified to account for the RFC limitation. The container now automatically cleans up a call state that has a PROCEEDING transaction when all application sessions associated with the callstate are invalidated.
CR333988
In certain scenarios where a request was created using SipFactory, the server did not correctly set the call-id.
The code was modified so that a request created using SipFactory includes the call-id from the original request when the call-id should remain the same.
CR336977
The container could throw a NullPointerException with messages containing an empty via header.
This problem was addressed with a code fix.
CR339985
When performing a JNDI lookup in the MBeanServer, the SIP Servlet context could not found in the Context Loader Listener and would yield a NullPointerException.
This problem was resolved with a code fix.
CR334695
In proxy mode, WebLogic SIP Server did not create an implicit subscription when a REFER request was received, instead sending 481 for NOTIFY.
The code was modified to add an implicit subscription when a proxy is handling a REFER request.
CR338929
A NullPointerException was thrown when deploying a SIP application having an empty sip.xml file.
The code was modified to set the default Servlet to BlankServlet (CR338929) when sip.xml is empty or has no Servlet definition or mappings.
CR342706
SipSession was transitioned to the initial state even when a 3xx-6xx response was received for a subsequent request in the early/initial state.
The code was modified to ensure that the transition to the initial state occurs only after receiving a 3xx-6xx response, corresponding to Initial Request only, in the early/initial state.
CR343371
The container did not clean up expired transactions in a timely manner, which could lead to large call state sizes and increased memory usage. The code was modified to more efficiently clean up expired transactions.
CR344763
The processing flag was not set correctly if a RuntimeException caused the Message Queue processing thread to die. As a result of the incorrect flag, messages could accumulate on the queue even though there was no associated thread to perform the work.
The code was modified to ensure that there is a Thread associated with the Message Queue to process queued messages even if a RuntimeException occurs.
CR345018
WebLogic SIP Server failed to invoke the doAck() method for certain messages because it could not determine the correct target address necessary to retrieve the application session.
The code was modified to also examine the popped ROUTE when determining the target address. This change ensures that the correct call state can be associated with the request.
CR347844
When an INVITE with multiple contacts was received, the following error occurred:
java.lang.IllegalArgumentException: Multiple Contacts in SIP request
The code was modified to add a validation to check for multiple contacts in the INVITE header.
CR349288
The server failed to destroy or invalidate a SipApplicationSession even after the specified session-timeout or default timeout of 30 minutes was reached.
The code was modified to ensure that:
  • max-application-session-lifetime determines the upper limit of session-timeout, and
  • max-application-session-lifetime is not used as the session-timeout value, and
  • the actual session-timeout value is honored.
CR349747
Using the weblogic.Admin utility to look for the SipServletSnmpTrapRuntime bean caused the following error:
Unable to determine parent types for SipServletSnmpTrapRuntime: while calcluating parent for mydomain:ServerRuntime=Server-0,Name=Server-0,Type=SipServletSnmpTrapRuntime,Location=Server-0,SipServerRuntime=Server-0
This problem was addressed by correcting the parent type for SipServletSnmpTrapRuntime. However, note that the weblogic.Admin utility is deprecated in WebLogic Server version 9.2.
CR350920
Rebooting replica server instances could sometimes result in a NullPointerException when the replicas were not updated with keyCount and highKeyCount statistics.
The code was modified to properly initialize rebooted replicas when joining the data tier.
CR351150
An application was able to send a CANCEL even after receiving 200/INVITE.
The container was modified to disallow sending a CANCEL when a client transaction is in the COMPLETED state. Attempting to do so now logs a message.
CR353471
A NullPointerException could be thrown when updating max-application-session-lifetime via the Administration Console.
The code was modified to properly validate max-application-session-lifetime entries made in the Administration Console.
CR354210
req.getRemoteAddr() did not work in a clustered environment when Engine tier caching was turned off and the request was retrieved from a SipApplicationSession. The method returned null instead of returning the actual remote address.
This problem was resolved with a code fix.
CR354549
A race condition could cause repeated 200 OK and 487 retransmissions to occur even after the maximum retransmission timeout (64*T1) occurred.
This problem was resolved with a code fix.
CR355168
A NullPointerException was sometimes thrown when creating a derived SIP Session.
The code was modified to prevent derived sessions from being created if the parent session is itself invalid. This fix prevents the NullPointerException.
CR356017, CR329432
An application that implemented SipErrorListener did not receive a callback via noAckReceived(SipErrorEvent) even when the 200 Ok retransmission threshold was reached (after 64*T1 seconds).
The code was modified to implement the noAckReceived callback for 2xx responses for INVITE until the retransmission threshold is reached.
CR359640
The Administration Console reported a NoSuchMethodError when deploying %BEA_HOME%\weblogic92\samples\server\examples\build\webservicesJwsEjbClientEar and similar EAR deployments.
The code was modified to properly handle EAR deployment.
CR365710
When starting a replicated domain, if more than two replica servers were started before starting an engine, the second replica would shut down due to the replica peer checking process.
The code was modified so that the peer check is performed only after at least one engine has registered with the replicas. This ensures that the partition view is communicated with all replicas via an engine only when an engine is available.
CR366214
The WebLogic SIP Server doAction API could cause unnecessary locking of call state data. For example application code such as:
WlssApplicationSession appSession =
sessions.getApplicationSession(appSessionId);
appSession.doAction(new WlssAction() { ... }
causes the call state to be locked and unlocked once to obtain the application session ID, and then once again to perform the doAction operation. To address this problem, the following new API was added:
Sessions.doAction(WlssAction a, String appSessionId)
To make use of the new API, replace application code that uses the above pattern with the following pattern:
sessions.doAction(confAppSessionId, new WlssAction() {
public Object run() throws Exception {
// this will not cause an attempt to lock again
SipApplicationSession conf =
sessions.getApplicationSession(confAppSessionId);
conf.setAttribute('name', 'yourName');
return null;
}
});
In the above pattern, the sessions.getApplicationSession method inside run() does not cause lock and unlock operations.
Note that the older API remains for backward compatibility.
CR367390
This release improves server performance on Intel Quad Core processors when running in a non-replicated configuration. The code was modified to enable the database persistence flag by default, which in turn enables local serialization of call state data. This setting is ignored for replicated configurations.

The following table summarizes the issues that were resolved in WebLogic SIP Server 3.1.

Table 2-2 Problems Resolved in Version 3.1
Change Request Number
Description
CR239639
When a SIP request was sent via application code, WebLogic SIP Server immediately started the transaction timer even though the actual message was queued for sending only after the application’s service method ended. If the application code (or the system load) caused a delay in exiting the service method, retransmissions for the request could appear in a shorter amount of time than the configured SIP timers would indicate. (In extreme cases, the application request and its retransmission would appear on the wire at nearly the same time.)
To address this problem, the code was modified to buffer the timer scheduling along with the request. This ensures more accurate timer behavior.
CR290540
In previous versions, setCharacterEncoding() did not throw an UnsupportedEncodingException. Existing Servlet code that called this method and used a catch claus for UnsupportedEncodingException had to be modified before recompiling for deployment to WebLogic SIP Server. This problem was addressed with a code fix.
CR291406
If you ran WebLogic SIP Server on a Windows platform with the JRockit JVM, you had to disable JRockit native IO in order to use SSL. If you did not disable native IO, an exception was generated similar to:
java.io.IOException: couldn't initialize IOPort: The parameter is incorrect.
This problem was addressed with a code fix.
CR297102
While proxying an ACK message, if a TooManyHopsException was thrown WebLogic SIP Server would attempt to send a response to the ACK. This caused the exception:
<Oct 17, 2006 1:50:18 PM PDT> <Error> <WLSS.Session> <BEA-331412> <Failed to 
respond 483 to too many hops request.
java.lang.IllegalStateException: Cannot createResponse for ACK
The code was modified to drop the ACK after logging a message in this circumstance. The ACK can them be re-sent by the UAC when it receives a retransmission request.
CR298765
WebLogic SIP Server allowed you to deploy SIP applications with deployment descriptors that did not conform to their respective schemas. This could lead to exceptions or other unexpected behavior at runtime. The code was modified to reject application deployments when deployment descriptors do not conform to the schema.
CR299384
WebLogic SIP Server would log “unknown header” messages for the WLSS-Default-Handler header, even though this header is created and used by the server code itself. The header was registered and no longer generates error messages.
CR300878
When proxying a request over TCP, if an IOException was raised, WebLogic SIP Server logged the exception but did not send a final response upstream. Because of this, a UAC would not know whether an invite request was proxied successfully. The code was modified to detect transport errors while proxying, and create and send a 503 error response upstream in response to such errors.
CR301268
If a Servlet used the load-on-startup deployment descriptor element to initialize the Servlet on startup (rather than on first request), and the init method created a new call state, WebLogic SIP Server would throw the following exception if any partition in the data tier was not yet online:
Unexpected exception com.bea.wcp.sip.engine.server.SetupException: [WLSS.Engine:330027]Failed to initialize "proxy" servlet class test.ProxyServlet
java.lang.IllegalStateException: PartitionClient offline
The code was modified to delay initialization a Servlet if all of the following conditions are met:
  • The Servlet uses load-on-startup
  • The Servlet overrides the SipServlet.init method
  • The Servlet is not deployed on the Administration Server
  • A configured partition is not yet online.
Note that the initialization delay is not applied to Administration Server deployments, because doing so could prevent replica servers from loading. Never deploy any applications to the Administration Server in a production system.
CR301664
WebLogic SIP Server used a fixed overload duration of 30 seconds. This could cause poor performance and continual overload situations with periodic spikes in wlss.transport work manager queue. The code was modified to set the initial overload duration to a much shorter 512 milliseconds, and then dynamically increase the duration if necessary in response to recurring overload conditions.
CR303194
On Windows platforms, if you installed the WebLogic SIP Server product nested inside of other folders, the Administration Console extension could not load due to the length of the path being too long. To work around the problem, the following environment variable could be set before starting the Administration Server:
set JAVA_OPTIONS=-Dweblogic.j2ee.application.tmpDir=d:/TEMP
This option is now automatically included in the server startup script, commEnv.sh.
CR303219
WebLogic SIP Server allowed SIP requests to access the retiring version of a deployed SIP application. This behavior was inconsistent with the base WebLogic Server application upgrade functionality, which disallows HTTP requests to a retiring application. For example, if you retired a converged SIP application, HTTP requests to the application would be rejected while SIP requests were permitted. The code was modified to be consistent with WebLogic Server behavior; the server now disallows SIP requests to a retiring application.
CR303769
Earlier WebLogic SIP Server versions ignored the encoding set through the SipServletMessage.setCharacterEncoding() method, and only honored the encoding if set using contentType argument of the setContent() method. This problem was addressed with a code fix.
CR304389
The server did not register SIP container runtime MBeans with the compatibility MBean server. This would lead to exceptions such as:
javax.servlet.ServletException: Unable to lookup type 'SipServletSnmpTrapRuntime'
The code was modified to address this problem.
CR305182
When using WebLogic SIP Server with geographically-redundant installations, each write to a secondary site would log an error message similar to:
<Dec 13, 2006 12:48:08 PM PST> <Error> <Security> <BEA-090513> <ServerIdentity failed validation, downgrading to anonymous.>
This problem was addressed with a code fix.
CR306926
WebLogic SIP Server provided no way to configure the timeout duration for SCTP connections. The code was modified to honor a custom channel property, SctpConnectTimeoutMillis, to configure the property. See Configuring Custom Timeout, MTU, and Other Properties in Configuring Network Resources.
CR308370
WebLogic SIP Server could omit the tag parameter in the To header for PRACK messages. The code was modified to ensure that PRACK messages always include the To tag.
CR309866
WebLogic SIP Server exhibited poor scalability performance on Sun Sparc Enterprise T2000 servers when using the Sun JVM. These performance problems are addressed in Release 13 of the Sun JVM.
CR310215
WebLogic SIP Server would throw a NullPointerException if an application used SipServletSnmpTrapRuntimeMBean to generate an SNMP trap outside of a doxxx method. The code was modified to allow trap generation outside of a doxxx method. Note, however, that traps generate outside of a doxxx method use the string “Non Sip-Servlet Scope Application” instead of a Servlet name.
CR310657
The Diameter implementation used incorrect values (3 and 4) for the CHECK_BALANCE and PRICE_ENQUIRY values of the Requested-Action AVP. The code was modified to use the correct values of 2 and 3, respectively, as described in RFC4006.
CR310782
The Diameter implementation did not allow for a Diameter application to receive and process ASR requests. This meant that Diameter applications could not add AVPs to the termination CCR or be notified when a session was finished. The code was modified so that if a SessionListener is registered, the Diameter implementation passes ASR requests to the application listener for handling. In this case, it is the responsibility of the application to generate CCRs as well as send ASAs.
CR320065
When only the Ro application was configured, the Diameter CER was missing the Supported-Vendor-Id AVP. The code was modified to allow configuration of Supported-Vendor-Id values in the diameter.xml, in one or more supported-vendor-id elements.
CR328219
WebLogic SIP Server exhibited poor scalability performance on Sun Sparc Enterprise T2000 servers when using the JRockit JVM. These performance problems are addressed with a patch to JRockit R27.3.1.


  Back to Top       Previous  Next