1. Supported platforms
The following Linux distributions are supported:
Debian 6 (Squeeze), 7 (Wheezy), and 8 (Jessie)
Fedora 17, 18
Ubuntu 12.04 LTS (Precise Pangolin) and 14.04 (Trusty Tahr)
2. New features in 2.4.0
2.1. WebSockets support (LP#1268619)
WebSockets are a standards-compliant, cross-browser mechanism to support streaming, bi-directional communication between the browser and the server. For more information, see http://en.wikipedia.org/wiki/WebSocket
To install the WebSockets gateway, follow the instructions
README.websockets. By default, the WebSockets gateway
listens on ports 7680 and 7682 and uses a separate Apache
2.2. Cross Origin Resource Sharing for OpenSRF (LP#1002028)
Browsers' same-origin policy currently restricts requests to the current website’s domain to prevent various nefarious scenarios. However, because APIs and other web resources need to remain open to cross-site use, Cross Origin Resource Sharing (CORS) was created to allow services to formally authorize cross-origin requests. CORS makes it simple to use OpenSRF’s HTTP translator and gateway APIs on websites using separate domains.
A couple examples of scenarios where this would be useful:
A library would like an AJAX-driven "quicksearch" box on their main site, which is hosted on a different domain than their catalog.
A developer wants to create new web applications and services that tie into Evergreen, but does not wish to install Evergreen locally or configure a proxy.
Domains that are allowed to send cross-origin requests can now be
gateway element (full XPath
defaults to the root of the current web host (
In addition, synchronous requests are presumed in some situations,
resulting in the oncomplete method never returning (as blocking requests
are not possible with cross-domain XHR).
2.3. Support for log tagging (LP#1343578)
It is now possible to specify a log tag, i.e., a string to append to the application name in syslog message. This allows easy filtering of log entries when running multiple OpenSRF instances on the same server.
Log tags can be set by adding
logtag elements in
3. Enhancements in 2.4.0
js2JSON now use native browser JSON
routines. In addition,
jsonPretty is removed in favor of
consequence of this change,
JSON2js will now throw an exception
if it is given input not is not a valid JSON string.
3.2. Listeners now log and drop XMPP error messages (LP#1341687)
The most common form of XMPP error messages are "bounced" messages, i.e. those where the recipient is not available. Instead of passing these useless and confusing messages down to a drone for processing, listeners now log the error and drop the message.
An example of when this can occur is when a service is starting up and attempts to register with a router that is not yet available.
3.3. Removes osrf_ctl.sh (LP#1286248)
The control script
osrf_ctl.sh is removed in favor of
which was introduced in OpenSRF 2.3.0.
3.4. Improved docgen output(LP#1292214)
Docgen output now respects formatting present in method description.
3.5. Other enhancements
Add support for Debian Jessie (LP#1306044)
Add support for Ubuntu Trusty (and removes support for Lucid) (LP#1315525)
Remove deprecated Jabber registration script (LP#1306044)
Improve const-correctness of osrfCachePutString and osrfCachePutObject (LP#1234816)
Document that perl2JSON doesn’t order hash keys (LP#1285915)
Reorder changes to ejabberd.cfg in the install instructions
4. Bugfixes in 2.4.0
4.1. OpenSRF.pm no longer supplies AUTOLOAD (LP#1179660)
Instead of simply producing an error message in the OpenSRF logs, calls to nonexistent subroutines are now fatal errors which will stop code execution.
osrf_control only affects processed owned by current user LP#1337401
As of 2.3.0, OpenSRF can readily support running multiple instances on
one server. This bugfix ensures that
osrf_control only affects OpenSRF
processes owened by the current user.