StreamLink for Browsers 4.5.4-131730 - Release Note ========================================== Introduction ============ Overview ======== This document provides release notes for all minor releases based on version 4.5 of StreamLink for Browsers Related Documents ================= * RTML User Guide * RTSL User Guide Components ========== * SL4B 4.5.4-131730 * RTML compatibility layer * RTSL compatibility layer Product Information =================== Product Name: StreamLink for Browsers Latest Version Number: 4.5.4-131730 Latest Release Date: 12 May 2009 Known Issues ============ JavaScript RTTP provider issues: It is not currently possible to open two or more windows within a single instance of a browser (e.g. by using the CTRL-N shortcut) containing SL4B enabled pages that connect to the same Liberator. This is due to a standard configuration option within the browser (both in Microsoft Internet Explorer and Mozilla Firefox), which restricts the browser to only being able to open two concurrent connections to the same server. Requesting a type 2 or type 3 record object from the Liberator with a field list results in an incorrect and/or incomplete image being received. The JavaScript RTTP provider does not work if the SL4B-enabled page is served up over http, whilst the Liberator connection is over https, or vice versa. This is a limitation of XMLHttpRequest object. Object creation and deletion methods return undefined, rather than true or false to indicate whether the action was successful or not. RTTP page objects are currently unsupported by the JavaScript RTTP provider. Master/Slave frame issue: A script error occurs if the master frame is specifically reloaded whilst a slave frame is still open. This results in the slave frame being detached from the master, and it will cease to receive updates. Master/Slave frame functionality is currently not working properly in Chrome. Debug console issue: The "about:blank" debugwindowtype attribute is not always reliable for launching a debug console in IE. Sometimes the console displays the error message "DebugWindow Error: Exception occurred whilst processing window.onload ([object Error])". This is due to a timing issue with the document.domain property being set. Refreshing the browser page typically resolves this. KeyMaster support: The bug fix that allows an SL4B client to re-request a KeyMaster token each time the client needs to log into a Liberator has introduced a dependency on KeyMaster 4.3. From version 4.3 onwards, it is not possible for SL4B to request a token from a pre-version 4.3 KeyMaster. Please update to the latest version of KeyMaster accordingly. Additionally, the KeyMaster URL must use the same protocol (e.g. http or https) as used by the Liberator, and the commondomain property may now need to be explicitly set if the common domain for the SL4B-enabled page and the Liberator, is not also common to the KeyMaster; typically if the SL4B-enabled page is hosted on the Liberator machine, but KeyMaster is not. Appending HTML to the body: The innerHTML attribute can not be used to append data directly to the document's body tag (e.g. document.body.innerHTML += "
some text
") if the JavaScript RTTP provider is being used, since this causes the page to be reparsed. Multipart Replace connections problems in Firefox 3: There is currently a timing problem with Firefox 3 the Multipart Replace connection type. Until this is fixed, deployments that expect to have Firefox 3 users may want to keep using the Forever Frame connection type. Polling and multiple reconnections: If multiple reconnections are occuring, and the final connection that is successfull is the Polling type, SL4B can sometimes get into a confused state as to whether it is connected or not. RTSL compatibility issue: When the JavaScript RTTP provider is used, filtered news headline requests made via the RTSL_GetObject(s) methods must include the text filter=xyz, otherwise the filter will not be applied. For example, the request RTSL_GetObject("/DEMO/NEWS", "A&B&C") must be changed to RTSL_GetObject("/DEMO/NEWS", "filter=A&B&C,A&B&C"). Version History =============== Version 4.5.4-131730 - 12 May 2009 =================================== New Features SL4B 4.5.4-131730 None. Bug Fixes SL4B 4.5.4-131730 Type 4 connections sometimes do not load correctly: If the request channel loads before the response channel then type 4 connections could not be made. This has now been resolved. (PSL4B-286) Version 4.5.3-131296 - 06 May 2009 =================================== New Features SL4B 4.5.3-131296 SL4B logging to detect bad response from KeyMaster: An XHR can now be used to communicate with the KeyMaster instead of an IFrame. (keymasterxhrurl is the configuration option that sets this behaviour). This allows for better logging of what was returned in the case of unexpected behaviour. This does not work on versions of Firefox prior to 2.0.0.13. This requires KeyMaster version 4.4.3 or later. See the new "Using SL4B with KeyMaster" section in the JSDoc. (PSL4B-263) Browser version is logged in SL4B log console on startup: This allows for easier debugging of support calls. (PSL4B-270) The SL4B Examples have been updated to be the same as those found in Free Liberator. KeyMaster Credentials Provider now retries if the KeyMaster response is in error: If KeyMaster responses are incorrect then the configurable attribute "keymasterattempts" is used to retry that amount of times before notifying the API user of SL4B. This is useful if there are network connection problems. (PSL4B-284) Bug Fixes SL4B 4.5.3-131296 SL4B does not reconnect under specific network condition: If the Liberator does not respond to the LOGIN message then SL4B will now timeout and fail over to another connection. (PSL4B-264). The "maxgetlength" configuration attribute is ignored: Fixed issue where the "maxgetlength" attribute is ignored when the Liberator provides information about the maximum get length it supports in its capabilities response. SL4B now limits gets to the smaller of these two values. JSON Parsing error while receiving message updates: Messages with certain characteristics in the data would result in JSON parsing errors due to incorrect regular expressions. This is now resolved. (PSL4B-282) IE7 and Firefox 3 KeyMaster reconnection issue: SL4B could get into an infinite reconnection loop if no KeyMaster response was received or a KeyMaster error was received. (PSL4B-213) This has been fixed by introducing by making the KeyMaster Credentials Provider retry a defined amount of times if it fails. (PSL4B-284) Version 4.5.1-122806 - 09 Feb 2009 =================================== New Features SL4B 4.5.1-122806 Updated documentation for StreamLink Connection Methods. Bug Fixes SL4B 4.5.1-122806 Fix for incorrect object status after session reconnection. Version 4.5.0-120762 - 16 Jan 2009 =================================== New Features SL4B 4.5.0-120762 Removal of applet RTTP provider: Support for the java applet provider has been removed from this version. Extra Connection Methods: Additional connection methods have been added that allow streaming data into IE and Firefox without the loading indicator. SL4B now uses browser specific default connection methods and the API has been expanded to allow the defaults to be changed on the SL4B_Configuration object. A new section has been added to the help to cover connection methods. Capabilites Support: For Liberators serving RTTP version 2.1 and above the intial connection handshake will exchange capability information. In this release only HttpRequestLineLength is used. Optimized Requests: For Liberators serving RTTP version 2.1 and above the RttpProvider getObjects() and removeObjects() methods now optimize the requests to the server by moving the field list to the beginning of the request rather than including it with each subject. Bug Fixes SL4B 4.5.0-120762 Incorrect flashing behaviour: Fixed an issue where if SL4B receives multiple updates for the same instrument in an short amount of time it would not remove any pending "flash up" or flash removal SL4B_Update objects it has queued up to process before accepting the object's new SL4B_Update from drawUpdate. This resulted in the removal of a flash before the timeout has expired. Also fixed deletion of the entire bin for that update batch instead of only one flash removal SL4B_Update object. (PSL4B-260) Memory leak in ObjectSubscriptionManager: The associated container request data was not being removed when an object was discarded. Messages waiting to be sent during a log in do not get sent: Fixed an issue, where the message sending loop could get frozen if a message was waiting to be sent during a login. This most often happened when a user tried to trade during a session reconnect. (PSL4B-254) Reconnection fails with message ALREADY+LOGGED+IN: It was possible for SL4B to get into a state where it was trying to reconnect twice at the same time. (PSL4B-255) "suppressexceptions" configuration attribute does not always work: Fixed issues where a suppressexceptions attribute value of false did not prevent exceptions from being suppressed in some circumstances. This meant that debugging exceptions thrown by client code whilst processing an event from SL4B was not particularly easy (PSL4B-258, PSL4B-259). Version 4.4.18-118519 - 12 Dec 2008 =================================== New Features SL4B 4.4.18-118519 Added the ability to flush all pending flash updates When the user has the ability to turn flashing updates on and off, it is necessary when turning flashing updates off to clear all the pending updates, so that the user preference change happens immediately (PSL4B-250). RTTP encoding has changed to fix cross site scripting (XSS) attack: The set of characters encoded by the Liberator has been changed to prevent any XSS style attacks. SL4B has been updated to match this new encoding logic (PSL4B-252). Bug Fixes SL4B 4.4.18-118519 Using Maps leaks memory in IE Fixed issue where use of maps over a long time leaks memory in all current versions of IE. Maps are now recreated periodically in IE to reclaim the memory (PSL4B-248). Cross site scripting (XSS) possible via the log window: Fixed issue where a XSS attack could be performed using the SL4B log window. A malicious user could inject script via the debug level that is written into the title bar of the log window (example URL .../log-window.html?level=). The data that is written is now escaped (PSL4B-251). Version 4.4.17-116355 - 21 Nov 2008 =================================== New Features SL4B 4.4.17-116355 None. Bug Fixes SL4B 4.4.17-116355 Error during reconnect: Fixed issue where an error could be thrown during reconnection, stopping listeners from being notified that their objects are now available (PSL4B-247). Version 4.4.16-114813 - 05 Nov 2008 =================================== New Features SL4B 4.4.16-114813 None. Bug Fixes SL4B 4.4.16-114813 Subscribers notified of wrong state after session reconnection: Fixed issue where subscribers could be notified that the objects they are subscribed to are in a different state to the one they are really in after a successful session reconnection (PSL4B-241). objectStatus callback now received by second subscriber for an object: Fixed issue where an initial objectStatus() callback was not received for a subscriber was added for an object that had already been subscribed to. It will now be informed of the current state of the object. Previously it was only notified of changes to the status. (PSL4B-246). Version 4.4.15-111961 - 06 Oct 2008 =================================== New Features SL4B 4.4.15-111961 None. Bug Fixes SL4B 4.4.15-111961 Duplicate NOOP messages sent causing unnecessary reconnections: Fixed issue where NOOPs were being sent unnecessarily, and NOOP timers were occasionally set twice, leading to unneeded reconnections. This problem was particularly bad when there were a lot of updates coming in (PSL4B-236). Login message not processed after reconnecting to a Liberator: If there were messages waiting in the Response queue that had received no response when the LOGIN message went out, the LOGIN OK response is dispatched to the wrong listener, stopping further requests from being sent out. The symptom for this is that the connection succeeds, but no requests are made to the liberator, meaning that no updates are received. NOOPs and their responses are still sent (PSL4B-237). Version 4.4.14-107987 - 22 Aug 2008 =================================== New Features SL4B 4.4.14-107987 RTTP chat object support added to JavaScript RTTP Provider: Added support for the RTTP chat object type to the JavaScript RTTP provider (PSL4B-217). "suppressexceptions" configuration attribute added: Added suppressexceptions attribute which allows the default behaviour of SL4B to suppress any exceptions thrown during a callback from the library to be suppressed. This can help greatly reduce the time it takes to identify issues while developing an SL4B-enabled page (PSL4B-224). Updated "service" configuration attribute documentation: The documentation for the "service" attribute has been updated to warn that when it is used, the "commondomain" attribute must also be defined, and the content type of the XML that is returned from the server must be "text/xml" (PSL4B-228). Bug Fixes SL4B 4.4.14-107987 Popup slave windows do not receive updates in IE7: Fixed issue where a slave frame included within a popup window did not receive updates in IE 7 (PSL4B-219). Improved error message shown if host name does not match common domain: Modified the error message that is displayed if the host name of the web page that is being viewed does not end with the configured common domain value. Previously this resulted in a cryptic error message regarding SL4B_RttpProvider not being configured. Due to the JavaScript security model, it is only possible to establish a streaming connection to a Liberator that shares the same domain with the application server that the web page is loaded from (PSL4B-218). SL4B attempts to load url-check.gif from wrong location: Fixed issue where SL4B loads the url-check.gif image from the same location as the web page that loads it. This typically shows up as a 404 error within the logs on the web server. This image is now initially loaded from the same location as the rest of the SL4B library. This fix does not change the behaviour of the library, however it has been a cause of confusion in the past for real issues with Liberator connectivity - the image is loaded from this location as place holder, once SL4B attempts to connect to a Liberator it will reuse the image tag to test whether the server is available (PSL4B-17). API documentation tidied up: Resolved issues with the SL4B API documentation where class definitions were missing and internal classes were included within the public documentation (PSL4B-226). Version 4.4.13-102218 - 26 Jun 2008 =================================== New Features SL4B 4.4.13-102218 Connection related log messages split modified: All log messages relating to the client's connection with the Liberator have been modified to fall within two log levels. The most important connection messages are logged at the "notify" level, and provide a high level view of which connection the library is attempting to make. Further connection messages are logged at the "info" level, providing a more detailed view of what SL4B is actually doing to attempt to establish a connection. Furthermore all connection related messages are now prefixed with "[CONNECTION]" to make it easier to search for them within a log file (PSL4B-185). Invoking stop() on an RttpProvider generates a connectionError event: When the stop() method is invoked on an RttpProvider that is currently connected or attempting to connect to a Liberator, a connectionError() callback will be received by any ConnectionListeners that have been registered with that RttpProvider (PSL4B-198). SL4B_ConnectionListener.connectionError() signature changed: The SL4B_ConnectionListener.connectionError() method signature has been modified. It now takes a string which is a brief description of what the error was. Added support for news headline clear cache message: Added handling for the news headline clear cache message. Prior to Liberator 4.4.17 this message was unused (PSL4B-201). Bug Fixes SL4B 4.4.13-102218 Type 5 connection script injection security issue: Fixed a potential security issue with type 5 connections. The type 5 URL allowed the location of a JavaScript file that would process the RTTP messages sent to the client to be specified. A malicious attacker could utilise this to inject their own script which could then access any domain level cookies set for the site or interact with the script in any frames that had set their document.domain property to allow it to communicate with the Liberator. Please note that this issue did not allow the malicious script to impact the RTTP service itself. The Liberator no longer uses the file specified in the URL (PSL4B-206). JavaScriptRttpProvider attempts to reconnect after session is ejected: Fixed issue where the JavaScriptRttpProvider automatically attempts to reconnect to the Liberator when a session ejected message is received. It now raises a SL4B_ConnectionListener.sessionEjected() callback then terminates the reconnection loop (PSL4B-189). User can be redirected to empty.html after closing the page: Fixed an issue which occurred when the SL4B-enabled page and SL4B itself are served from an application server requiring the user to be logged in. If the user logged out of the SL4B-enabled page, causing their application server session to close and the user to be redirected to a login page, then logged in again, they were redirected to the page .../sl4b/javascript-rttp-provider/empty.html (PSL4B-196). Script error warning that messageBlockComplete() cannot be invoked: Fixed issue where a script error warning that the messageBlockComplete() method cannot be invoked when using a type 5 connection (PSL4B-197). Version 4.4.12-100818 - 13 Jun 2008 =================================== New Features SL4B 4.4.12-100818 Added getFieldMap() method to SL4B_RecordFieldData: Allows record field data to be retrieved as data map instead of using indexes (PSL4B-190). "enableautoloading" changed to only control onload behaviour: The behaviour of the "enableautoloading" configuration attribute has been changed so that it only controls whether the onload event from is automatically triggered by SL4B to initiate a connection to the Liberator. Previously it controlled the onunload event too, which is used to logout from the Liberator (PSL4B-186). stop() method can be used to terminate a reconnection loop: When the "serviceurl" configuration attribute is specified, SL4B uses a FailoverRttpProvider which will use the server information contained within the specified URL to determine which Liberator to connect to if it fails to connect/loses its connection from another Liberator. Once all of Liberators defined in the service file have been tried a connectionError() event is raised on any registered ConnectionListeners and the FailoverRttpProvider will recycle the servers and try to connect to them, one by one, again. The stop() method on the RttpProvider can now be used to terminate this automatic reconnection behaviour. The reconnect() method can then be used to resume the automatic reconnection (PSL4B-187). SL4B binds to the unload event to logout from the Liberator: The SL4B library now binds to the web page's onunload event to determine when it needs to send a logout message to the Liberator, rather than binding to onbeforeunload. Previously it bound to onbeforeunload, however if the web page cancelled the unload, SL4B would still have sent the logout message resulting in the page ceasing to receive further updates (PSL4B-188). Bug Fixes SL4B 4.4.12-100818 Client behaviour unreliable if it receives an unexpected response: Fixed issue where the client behaviour was indeterminate if an unexpected response was received. Previously this was ignored, however in the worst case scenario this could result in the updates being sent to the wrong subscribers. The new behaviour is for a reconnect to be triggered, allowing the client to refresh its active subscriptions with the Liberator (PSL4B-195). Reconnection when a response is outstanding is unreliable: Fixed issue where the client did not check whether any responses were outstanding before deciding whether to perform a session or a full reconnect. A full reconnect is now attempted if SL4B is still waiting for any responses (PSL4B-194). Pressing the escape key causes connection to be lost: Fixed issue where pressing the escape key caused the connection with the Liberator to be lost, resulting in the client receiving no updates for a few seconds until it had reconnected (PSL4B-193). Messages could go missing when a type 5 connection reconnect occurred: Fixed issue where some messages could be lost when reconnecting with a type 5 connection. This issue only occurred when the library reconnected once the type5reconnectcount limit had been reached, triggering an automatic reconnection to clean up memory leaks in IE (PSL4B-179). Requests could be lost during a type 5 connection reconnect: Fixed issue where any requests sent whilst the type 5 connection was attempting to reconnect once its type5reconnectcount limit had been reached could be lost as they were sent to a session that was not currently logged in (PSL4B-192). Subscriptions to auto-subscribed objects are made after reconnection: Fixed issue where the client made subscription requests for objects that the Liberator had auto-subscribed to on behalf of the client (for example, the contents of RTTP Container objects) after a reconnection. This slowed down the reconnection due to a much larger number of requests being made to re-establish the client's subscriptions than was actually needed (PSL4B-191). Log window does not close when the page is unloaded: Fixed issue where the log window did not always close when the SL4B-enabled page was unloaded (either by refreshing the page, navigating to another page or closing the browser) (PSL4B-180). Object cache is not cleared down fully after a full reconnect: Fixed issue where the object cache did not clear down the cache for containers, permissions, news headlines and news stories after a reconnect. This could result in a subscriber getting stale data, without any notification that the data was stale, until the Liberator sent through the latest image. Version 4.4.11-2 - 18 Dec 2007 ============================== New Features SL4B 4.4.11-2 Reconnection results in subscriptions being lost: When SL4B reconnects to a Liberator it automatically re-subscribes to all the data it was subscribed to. If the Liberator was recently restarted, it is possible that the DataSource providing some of that data is not yet connected in which case the re-subscription will fail and an "Unavailable" response will be received. Documentation has been added to the SL4B overview page describing how the "required-state" configuration option can be used on the Liberator to prevent this issue (PSL4B-25). Session Id logged at the "notify" level: The RTTP session identifier is now output at the "notify" log level. This makes it easier to match up a client log with the server logs (PSL4B-163). "nooptimeout" configuration attribute added: Configuration attribute "nooptimeout" added. This allows the time to wait for a heartbeat (NOOP) response to be set independently of how often a heartbeat (NOOP) is sent (the "noopinterval" attribute) (PSL4B-106). SL4B_LogMessageListener interface added: It is now possible to attach a listener to the SL4B_Logger that will be notified of all messages being output to the SL4B console. This allows the messages to be output to an integrated application log (PSL4B-166). Failover documentation improved: The documentation for the failover behaviour of the library has been improved to clarify that the client will only failover when its connection to the Liberator is lost. If the connection between the Liberator and one of its DataSources is lost then it is up to the Liberator to reconnect to the that DataSource, rather than for the client to connect to another Liberator (PSL4B-118). connectionAttempt() method added and connectionWarning() enhanced: A new method has been added to the SL4B_ConnectionListener interface, connectionAttempt(), which is invoked each time the library attempts to connect to a Liberator. It is informed of the Liberator URL that is being connected to, and what type of connection is being used. The connectionWarning() method has also been updated such that it now provides information why it was invoked (i.e. due to a lost connection or due to a failed connection), the Liberator URL and the connection type (PSL4B-169). connectionError() behaviour changed when failover is configured: The connectionError() method on the SL4B_ConnectionListener will only be invoked once the library has attempted to connect to all of the Liberators that have been configured within the failover XML. Previously this method was invoked after a connection to each Liberator failed (PSL4B-172). Error for invalid "service" configuration attribute is unhelpful: If an invalid "service" attribute value is specified the library now reports what the problem is. Previously the SL4B log console contained the message "[object: Error]" (PSL4B-105). Suppressed exceptions now logged at "Error" log level: When a user callback method is invoked, the library makes the call within a try..catch block. This prevents exceptions thrown by the user code (e.g. attempting to update the value of a cell that doesn't exist) from impacting future updates from being processed and sent out by the library. These exceptions are logged at the "Error" log level. Previously they were logged at the "Warn" log level(PSL4B-174). Throttle support added to JavaScript RTTP provider: The JavaScript RTTP provider now supports the setThrottleObject, setThrottleObjects and setGlobalThrottle methods (PSL4B-93). Safari support (experimental): Minor internal changes have been made to enable SL4B to work in Apple's Safari browser. Please note that this is currently not an officially supported browser (PSL4B-167). Bug Fixes SL4B 4.4.11-2 Prevent session reconnect if field map not already returned: If field map is not already returned from Liberator then always do a full login, this prevents data being returned to the client with incorrect field names (PSL4B-173). Version 4.4.10-4 - 12 Oct 2007 ============================== New Features SL4B 4.4.10-4 None. Bug Fixes SL4B 4.4.10-4 Clients are unable to connect when latency is enabled: Fixed an issue where clients occasionally fail to connect to the Liberator when latency measurements are enabled. This was due to a race condition between the clock sync and login messages; if a sync was sent before a login the library could get into a state where it would never send the login to the server (PSL4B-158). Cannot navigate to an Excel spreadsheet from an SL4B enabled page: Fixed an issue when an infinite unload cycle occurred if the user attempted to navigate away from an SL4B page to a URL that required the download dialog to pop up, such as for an Excel spreadsheet or a Word document. This issue only occurred in IE (PSL4B-148). Average latency calculation is incorrect: Fixed two issues which resulted in an incorrect average latency being returned from the SL4B_Statistics instance. The first issue was that the number of latency measurements was being returned, rather than the average latency. The second issue only occurred if the client and server clocks were in sync with each other and resulted in the latency measurements occasionally being ignored (PSL4B-151). Average latency is sent to the Liberator as a decimal: Fixed issue where the average latency is published to the Liberator as a decimal. It is now rounded to the nearest millisecond before it is sent within a clock sync message. This allows the average latency to be viewed within the Enterprise Management Console (PSL4B-154). Clock sync messages only sent when the client is logged in: Clock sync messages are now only sent when the client has successfully logged into the Liberator. Previously these could be sent before the client had logged in (PSL4B-159). Latency example updated to use the correct configuration attribute: Updated the latency.html example page to use the enableLatency configuration attribute (PSL4B-160). Suppressed exceptions are now logged at the error level: Exceptions thrown by callback methods are now logged at the error level rather than the warn level (PSL4B-174). Version 4.4.9-4 - 18 Sep 2007 ============================= New Features SL4B 4.4.9-4 Flash and images price update SL4B example page: Added an SL4B example page to demonstrate the use of both flash and images to reflect price updates. Configurable quote-list SL4B example page: Added an SL4B example page to demonstrate the ability to add/remove object subscriptions and adjust fields requested dynamically. Connection log messages can be confusing: The messages generated when the client is attempting to establish a connection have been updated to make them more descriptive (PSL4B-144). Library compression: This release uses a new tool to compress the size of the SL4B library. Bug Fixes SL4B 4.4.9-4 Liberator URL Check: When adding different Liberator URL's to check (i.e. url-check.gif), we now use closures to keep reference to which url has responded. The old queuing technique caused blocking errors if the onload event never occurred. Version 4.4.8-3 - 24 Aug 2007 ============================= New Features SL4B 4.4.8-3 Image/update flag added to recordMultiUpdated() callback: An extra argument has been added to the SL4B_AbstractSubscriber recordMultiUpdated() callback method. This indicates whether the data passed into the callback represents a cached image for the record, or whether it represents an update (PSL4B-126). User application control of loading process: Added configuration attribute "enableautoloading" that enables an application to invoke SL4B load/beforeunload methods automatically or manually. Previously this was always automatic, and therefore meant that custom application loading logic was not always possible (PSL4B-138). Bug Fixes SL4B 4.4.8-3 Client delays requests for 5 seconds when configured for failover: Removed a 5 second delay that is used by the failover RTTP provider, which prevented any requests from being sent to the Liberator during this period. This delay was previously necessary to ensure that the a Liberator that had been restarted had time to connect to its DataSources, however this can now be achieved via the Liberator "required-state" configuration option instead - please see the Liberator Administration Guide for more information (PSL4B-132). Clock sync messages do not check XHR object is ready before sending Fixed a bug that was apparent on slow networks where clock synchronisation messages were sent immediately (to increase their accuracy) rather than placing them on the end of the queue, to the point where messages were being sent even before the XML HTTP Request object was not yet ready to be re-used again. (PSL4B-139). Version 4.4.7-1 - 19 Jul 2007 ============================= New Features SL4B 4.4.7-1 None. Bug Fixes SL4B 4.4.7-1 Script error occurs when viewing the status page: Fixed bug where the type 5 connection URL was generated incorrectly when the SL4B enabled page was hosted from the Liberator and its URL ends with a /, as happens with the status page (PSL4B-128). Memory leak when using pop out windows: Fixed a problem with the flash library where the queue to remove update flashes stopped being processed, resulting in all further updates being pushed onto the queue, but not popped off. This issue only occurs when slave frames were used. The memory used by the browser kept growing as the queue kept increasing in size (PSL4B-130). Type 5 connection cannot be established: Fixed issue where the type 5 connection URL was failing to be constructed correctly when an SL4B enabled page was hosted from a sub directory of a web server, and the reference to the SL4B library was absolute (e.g. /streaming/sl4b/index.js) rather than relative (PSL4B-131). Version 4.4.6-4 - 29 Jun 2007 ============================= New Features SL4B 4.4.6-4 None. Bug Fixes SL4B 4.4.6-4 Client reconnects every few seconds: Fixed issue where the library attempts to reconnect to the Liberator every few seconds, even when it has established a connection and is receiving a steady stream of data. This issue only occurred for type 5 connections (PSL4B-107). Incorrect session id is sent to the Liberator: An old session id is sent to the Liberator when a request that was queued up when the client was connected to a previous session, but the client has subsequently disconnected and reconnected to a new session. This resulted in the Liberator ignoring the request, and therefore the SL4B library expected response queue becoming out of sync. The session id is now only added to a message at the point it is sent, rather than when it is queued (PSL4B-111). Null session id is sent to the Liberator: A null session id is sent to the Liberator when a request that was queued up when the client was attempting to reconnect to the Liberator. This resulted in the Liberator ignoring the request, and therefore the SL4B library expected response queue becoming out of sync. The session id is now only added to a message at the point it is sent, rather than when it is queued (PSL4B-110). Illegal messages are sent after a reconnect: Fixed issue where the library sent illegal messages to the Liberator after a reconnect. This problem occurred when messages had been queued up whilst the client was disconnected. It only impacted the messages generated for requests for multiple objects and for discards (PSL4B-101). Latency measurement is always 0: Fixed problem where the latency was not being calculated for record images and updates. This issue only occurred for type 5 connections. "undefined" field list incorrectly requested from Liberator: Fixed issue where the client requested on object without a field list. This should subscribe to an object for all fields, however the library was incorrecly subscribing with a field list of "undefined" (PSL4B-117). Script error occurs when an SL4B-enabled page is closed: Fixed issue where a script error occurred when the browser is closed. This issue was introduced by PSL4B-109 (see 4.4.5) where the version of the ActiveX control is logged (PSL4B-116). RTTP news stories do not work: Fixed issue where the library ignored news story image updates, which resulted in news stories being unavailable when using the JavaScript RTTP provider (PSL4B-121). Version 4.4.5-2 - 14 Jun 2007 ============================= New Features SL4B 4.4.5-2 Initial updates should not flash: When the first update is displayed using the flash library for a particular element it will not generate a flash. Previously it did, which resulted in more processing being carried out than was necessary, particularly when a page initially loaded (PSL4B-108). XMLHttpRequest ActiveX control updated: The way in which the library loads the XMLHttpRequest ActiveX control has been updated such that it attempts to use the latest version first (MSXML2.XMLHttp.6.0) before attempting to load the older versions. It also logs which version it has decided to use (PSL4B-109). Bug Fixes SL4B 4.4.5-2 None. Version 4.4.4-2 - 24 May 2007 ============================= New Features SL4B 4.4.4-2 streaming-type5.js loaded from web server: The streaming-type5.js file is now loaded from the web server that the rest of the SL4B library is loaded from, instead of loading it from the Liberator. This change has no functional impact, however it makes it easier to handle upgrades to the library - if a version of this file is loaded from a Liberator with a different version of the SL4B library to the one that was loaded from the web server, then there may be a conflict which will result in script errors (PSL4B-98). Bug Fixes SL4B 4.4.4-2 Record updates are not always passed onto the subscriber: The performance improvements for the record update processing (PSL4B-70) introduced in version 4.4.3 occassionally cause an exception to be thrown whilst batching together a group of record updates. As a result any updates contained within that batch will not be passed onto the registered subscribers. This cause of the exception has been fixed (PSL4B-97). Version 4.4.3-5 - 17 May 2007 ============================= New Features SL4B 4.4.3-5 Record update performance improvements: The performance of the record update processing has been profiled, and some hotspots have been removed in processing RTTP update messages. Specifically: Consecutive record updates are now grouped and processed 'en bloc' (PSL4B-70). Expensive typeof operation performed every time the getFieldName() and getFieldValue() methods were invoked on the SL4B_RecordFieldData object have been removed (PSL4B-69). The callback queue used internally by the library is now bypassed by record updates (PSL4B-68). Added NOOP interval configuration attribute: A new configuration attribute (noopinterval) has been added for setting the interval between NOOP heartbeat messages, the default is 5000ms (PSL4B-81). Bug Fixes SL4B 4.4.3-5 Attempt to discard unsubscribed object log message: Fixed issue with the logic that determined whether a discard was for an object that had been subscribed to previously or not. It resulted in a log message being output occassionally when objects were discarded that had previously been subscribed to (PSL4B-59, PSL4B-82). Script error occurs when contributing data to unavailable object: Fixed issue introduced by the changes for PSL4B-65, which added support for custom Auth module error codes. A script error occurred whenever an error response was received when the client attempted to contribute data to an object (PSL4B-85). Failover provider and container objects incompatibility: Fixed issue with the failover RTTP provider which meant that a client was unable to modify its subscription (e.g. the window size) if more than one container object was requested. Regardless of which container key was passed into the appropriate container method, the operation was always performed on the last container object that was requested (PSL4B-87, PSL4B-90). NOOP messages are always sent out: NOOP messages are now sent out at the correct interval and only when no messages have been received by the client(PSL4B-88). Re-subscription to auto directories fails after failover: Fixed issue which prevented auto directories from being re-subscribed to once the client fails over to connect to a new server. The client re-subscribed to the wrong object name (PSL4B-64). Version 4.4.2 - 26 Apr 2007 =========================== New Features SL4B 4.4.2 Added Clocksync and Latency measurement: Measurement of message latency has been added. To be able to accurately measure latency the client/server clocks are periodically synchronised. Configuration attributes have been added for configuring clock sync and message latency measurement.