From: Galen Charlton Date: Thu, 21 Aug 2014 23:30:58 +0000 (-0700) Subject: update ChangeLog for OpenSRF 2.4.0-alpha X-Git-Tag: osrf_rel_2_4_0-alpha~1 X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=b929dd7080b91e1f7c938778580ac6957835e666;p=OpenSRF.git update ChangeLog for OpenSRF 2.4.0-alpha Signed-off-by: Galen Charlton --- diff --git a/ChangeLog b/ChangeLog index f4eaa05..ee2e5f4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,1324 +1,902 @@ ChangeLog ========= -OpenSRF 2.1.2 -------------- +OpenSRF 2.4.0-alpha +------------------- -commit b0dd15b964f5856059d0fd40981f8985ef8ea56f -Author: Dan Scott -Date: Sun Nov 18 07:41:46 2012 -0500 - - Bump version numbers for 2.1.2 - - Signed-off-by: Dan Scott - -2 2 src/perl/lib/OpenSRF.pm -1 1 version.m4 - -commit 07ab6dd958a905cb439f9cded9ae2828b7888a2f -Author: Dan Scott -Date: Fri Nov 16 10:36:28 2012 -0500 - - Whitespace in OpenSRF/System.pm - - Spaces not tabs. - - Signed-off-by: Dan Scott - -21 21 src/perl/lib/OpenSRF/System.pm - -commit 5efbb97cbeb87d37b4f64bcef8babeab5e5c54b1 -Author: Jason Stephenson -Date: Thu Nov 15 12:20:11 2012 -0500 +commit 4426a8a503baec5171ae4245eccd595444815358 +Author: Galen Charlton +Date: Thu Aug 21 16:30:05 2014 -0700 - Move setting of OpenSRF::Application::shared_conf to load_bootstrap_config. + release notes for OpenSRF 2.4.0-alpha - shared_conf was not available and broke clients that were not in a - service, such as the Evergreen CStoreEditor. - - Signed-off-by: Jason Stephenson - Signed-off-by: Dan Scott + Signed-off-by: Galen Charlton -8 9 src/perl/lib/OpenSRF/System.pm +121 0 doc/RELEASE_NOTES.txt + create mode 100644 doc/RELEASE_NOTES.txt -commit 2cb5313d0d5bf3e2b912ebbcc653cedcac22336d -Author: Dan Scott -Date: Tue Oct 30 23:39:25 2012 -0400 +commit e8f78636586aeca15632bcfbf0cae20beb2d66a6 +Author: Galen Charlton +Date: Thu Aug 21 10:02:14 2014 -0700 - Bump release numbers, create 2.1.1 change log + LP#1002028: set Access-Control-Expose-Headers - Signed-off-by: Dan Scott + This allows the OpenSRF JavaScript client library (or + to be precise, one that has been modified to direct + requests at a different domain) to take advantage of CORS + support. - Conflicts: - ChangeLog + Signed-off-by: Galen Charlton -1243 1 ChangeLog -2 2 src/perl/lib/OpenSRF.pm -1 1 version.m4 +1 0 src/gateway/apachetools.c -commit 42e369b2efcbbc31447c43b5fbaa3999ad88cf30 -Author: Bill Erickson -Date: Mon May 21 16:42:12 2012 -0400 +commit bc914bf1933cc7a9272134fd4bbeb7601d233903 +Author: Galen Charlton +Date: Thu Aug 21 09:13:23 2014 -0700 - ChopChop is dead, long live ChopChop. + LP#1002028: support CORS for HTTPS - It was never fully baked, nor was it secure, nor does it compile cleanly - with -Wall, nor does it provide any useful examples for working with - opensrf, etc. Time to clear out. So long, chopchop. - - Signed-off-by: Bill Erickson - Signed-off-by: Dan Scott + Signed-off-by: Galen Charlton -0 6 Makefile.am -0 21 configure.ac -0 13 examples/opensrf_core.xml.example -0 4 src/Makefile.am -0 23 src/jserver/Makefile.am -0 1082 src/jserver/osrf_chat.c -0 45 src/jserver/osrf_chat.h -0 92 src/jserver/osrf_chat_main.c - delete mode 100644 src/jserver/Makefile.am - delete mode 100644 src/jserver/osrf_chat.c - delete mode 100644 src/jserver/osrf_chat.h - delete mode 100644 src/jserver/osrf_chat_main.c +2 0 src/gateway/apachetools.c + +commit d8dbf0c4e44cf45f00ffe2785d0778658029b825 +Author: Bennett Goble +Date: Tue May 22 11:57:56 2012 -0400 + + LP#1002028: Cross Origin Resource Sharing for OpenSRF + + Background + ---------- + 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. + + Example Scenarios + ----------------- + 1) A library would like an AJAX-driven "quicksearch" box on their main + site, which is hosted on a different domain than their catalog. + 2) A developer wants to create new web applications and services that + tie into Evergreen, but does not wish to install EG locally or + configure a proxy. + + Implementation + -------------- + The function crossOriginHeaders() has been added to apachetools.c. + Incoming requests are checked to see if they have an Origin header. The + value of the Origin header is checked against a whitelist defined in + opensrf_core.xml config (XPath: /config/gateway/cross_origin/origin). + The function returns 1 if CORS headers have been added to the response. + + Notes + ----- + * The OpenSRF Javascript client library (opensrf.js) defaults to the root + of the current web host "/osrf-http-translator." In addition, synchronous + requests are presumed in some situations: resulting in the oncomplete + method never returning (Blocking requests are not possible with cross- + domain XHR.) + * It is also possible to enable CORS with the Apache "set header" + configuration directive. However, this means that the necessary headers + would be appended to every response. + + Links + ----- + Specification - http://www.w3.org/TR/cors/ + Wikipedia Article - http://en.wikipedia.org/wiki/Cross-origin_resource_sharing + + Signed-off-by: Bennett Goble + Signed-off-by: Galen Charlton -OpenSRF 2.1.1 -------------- +8 0 examples/opensrf_core.xml.example +36 0 src/gateway/apachetools.c +5 0 src/gateway/apachetools.h +5 0 src/gateway/osrf_http_translator.c +5 0 src/gateway/osrf_json_gateway.c -commit e93c7c932b144aac2633fe5d058f298a29909f02 -Author: Dan Scott -Date: Tue Oct 30 23:34:04 2012 -0400 +commit 6ed6f2bc6bf56d0834ae43f00c193bce5a3867a1 +Author: Galen Charlton +Date: Thu Aug 21 08:58:18 2014 -0700 - Release notes for 2.1.1: input log redaction + Revert "LP#1350457: Pass caller's session to subrequests called via method_lookup" - Signed-off-by: Dan Scott + This reverts commit 96917538c6b6fad688dd40c2a8f0cc9127053b24. -12 3 doc/RELEASE_NOTES.txt +3 3 src/perl/lib/OpenSRF/Application.pm -commit fd367d0a978cd85d2726a1ea2bd0412abf57fb12 -Author: Dan Scott -Date: Tue Oct 30 23:27:34 2012 -0400 +commit f0c02bf3cc4e8e2c1049fd2ba0fd24079b5aeba6 +Author: Josh Stompro +Date: Wed May 21 08:26:53 2014 -0500 - Purge the wildly out-of-date Roadmap document + (doc) Reorder changes to ejabberd.cfg in install instructions - Signed-off-by: Dan Scott - -0 51 doc/Roadmap.txt - delete mode 100644 doc/Roadmap.txt - -commit 97a520bce382c8806ad1772f98e1e9169a2297b9 -Author: Dan Scott -Date: Tue Nov 6 12:32:48 2012 -0500 - - Bump libopensrf version-info revision and age + I found it annoying that the list of changes to make to ejabberd.cfg + didn't follow the order that the options showed up in the default + Debian ejabberd.cfg. I reordered them so after you finish changing one + option, you can search forward in the document for the next term. - The log redaction functionality changed the source files (thus 'age' - gets bumped) and is backwards-compatible (thus 'revision' gets bumped) - but maintains the same interface (thus 'current' stays the same). + (From Github pull request #3.) - Signed-off-by: Dan Scott + Signed-off-by: Josh Stompro + Signed-off-by: Galen Charlton -1 1 src/libopensrf/Makefile.am +4 4 README -commit b81a8c2ada734fe8c47e758c681e2bb952f29c39 -Author: Dan Wells -Date: Wed Oct 31 10:21:14 2012 -0400 +commit 96917538c6b6fad688dd40c2a8f0cc9127053b24 +Author: Mike Rylander +Date: Wed Jul 30 13:29:46 2014 -0400 - Protect against empty/invalid log_protect sections + LP#1350457: Pass caller's session to subrequests called via method_lookup - Connectivity would fail if the log_protect section of opensrf_core.xml - was empty, or contained only comments, as it does in the default - example. Add a simple guard against this potential problem. This fix - will also protect against cases where the 'log_protect' section - contains text rather than separate configuration elements. + In the process of looking up a method for an internal subrequest, we lose + session info. This is a problem when the subrequest makes a remote request, + because then the subrequest can't look up the proper locale, among other + things. The forthcoming branch passes the caller's session to the subrequest. - Credit to Dan Scott for finding the bug and working out how to fix it. - - Signed-off-by: Dan Wells - Signed-off-by: Dan Scott + Signed-off-by: Mike Rylander + Signed-off-by: Galen Charlton -6 4 src/perl/lib/OpenSRF/Application.pm +3 3 src/perl/lib/OpenSRF/Application.pm -commit a2a286ef7fbf70e695ab23289fe9f131a9037922 +commit 6cdd5251ac64651534e579f7e02a70a665f60283 Author: Bill Erickson -Date: Wed Oct 17 15:57:14 2012 -0400 +Date: Thu Jul 17 11:37:53 2014 -0400 - Consolidate duplicate osrfMethodVerifyContext handler - - Log redaction was not occuring in some cases because the code was using - the OSRF_METHOD_VERIFY_CONTEXT macro instead of the similarly named - function which does the same thing. This change points the macro at the - function so that all code uses the same underlying code. + LP#1341687 listeners log/drop XMPP error msgs - Note this change turns on CALL param logging unconditionally, whereas - users of the macro would previously have been able to avoid CALL logging - via the OSRF_LOG_PARAMS variable. In practice, little code uses the - macro and all code enables OSRF_LOG_PARAMS. If we need to add this - control back, it can be added directly to osrfMethodVerifyContext(). - For now, it's one less env variable we need to define. + 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, log the + error in the listener and drop the message. Signed-off-by: Bill Erickson - Signed-off-by: Dan Scott - -2 36 include/opensrf/osrf_application.h - -commit 157ad5d6553b29585afd4b2180db91e2d13b5961 -Author: Dan Wells -Date: Fri Oct 12 09:45:35 2012 -0400 - - Log redaction for sensitive input values, Perl side - - This commit attempts to do the same as the C log redaction fix, - but now at the Perl level. The Perl configuration code was a - little more crufty than the C side, so an additional feature was - added to Config.pm to support the new 'shared' section. At some - point we should consider a ground-up rewrite of Config.pm, as the - code seems to suffer some from its INI file roots. - - Signed-off-by: Dan Wells - Signed-off-by: Dan Scott + Signed-off-by: Galen Charlton -3 3 examples/opensrf_core.xml.example -21 1 src/perl/lib/OpenSRF/Application.pm -9 0 src/perl/lib/OpenSRF/System.pm -48 12 src/perl/lib/OpenSRF/Utils/Config.pm +9 0 src/libopensrf/osrf_prefork.c +5 1 src/perl/lib/OpenSRF/Server.pm -commit fe9617eda262cc3a3890d068e938ef0ffb99d07a -Author: Dan Wells -Date: Wed Oct 10 17:28:07 2012 -0400 +commit 54da75bd2f045dbd2225317f74dc5fe38f415fe5 +Author: Galen Charlton +Date: Wed Aug 20 14:00:17 2014 -0700 - Log redaction for sensitive input values, C side + LP#1343578: document in the example opensrf_core.xml - Some service/methods deal with sensitive information (passwords, - financial, etc.). All input values (e.g. gateway method params) - are currently logged in the activity log regardless of your log - level. This commit will allow you to redact the params of any - method which matches a configurable set of left-anchored string - values. - - This commit adds the initial config, and covers redaction of method - parameters sent through the gateway, the translator, and more general - OpenSRF C applications. - - Signed-off-by: Dan Wells - Signed-off-by: Dan Scott + Signed-off-by: Galen Charlton 12 0 examples/opensrf_core.xml.example -1 0 include/opensrf/osrf_application.h -2 0 include/opensrf/osrf_system.h -25 10 src/gateway/osrf_http_translator.c -22 7 src/gateway/osrf_json_gateway.c -23 4 src/libopensrf/osrf_application.c -6 0 src/libopensrf/osrf_system.c - -commit cd24bb1c94c95027310f63909b692e4dbb05507f -Author: Dan Scott -Date: Mon Oct 22 11:50:21 2012 -0400 - - Use apt-get instead of aptitude on Debian / Ubuntu - - Reports from the field state that aptitude is not installed by default on - Ubuntu any longer; thus go with the sure thing. - - Signed-off-by: Dan Scott - -1 1 README -1 1 src/extras/Makefile.install - -commit 20a115a421c56b56968accc27b63da7656a70ee8 -Author: Dan Scott -Date: Mon Oct 22 11:53:24 2012 -0400 - - Remove the reference to Evergreen in the README - - Stephen Wills reported problems installing Evergreen because of missing - dependencies, and reading the OpenSRF README shows that it refers to the - Evergreen prerequisite installer in a confusing way that might lead to - users using only the Evergreen Makefile.install, rather than using the - OpenSRF Makefile.install. - - In addition, Fedora 16 is going to be out of support soon, and Fedora 17 - and 18 are well-tested targets now. - - Signed-off-by: Dan Scott - -2 2 README - -commit 83dd58abfca26418f8bdaecb73dbd2c177cc0093 -Author: Jason Stephenson -Date: Tue Nov 6 09:16:18 2012 -0500 - - Fix installation on Ubuntu Precise. - - Remove libreadline5-dev and replace with libreadline-dev for Ubuntu - and Debian. This installs libreadline6, but everything still works - since there's nothing version specific in our use of libreadline. - - Signed-off-by: Jason Stephenson - Signed-off-by: Dan Scott - -2 3 src/extras/Makefile.install - -OpenSRF 2.1.0 -------------- -commit 79694c390e0350a199be409ceadb19945ddf2b5c -Author: Dan Scott -Date: Wed May 30 23:12:32 2012 -0400 +commit 2f4ed86a136cfb7547f7e8c3e2109f4473139276 +Author: Bill Erickson +Date: Thu Jul 17 15:10:35 2014 -0400 - No, Ubuntu Hardy is not well-tested for 2.1.0 + LP#1343578: Perl/C syslog "logtag" additions. - One more reference to Ubuntu Hardy that we can remove from the - README/INSTALL. + * Honor logtag value when applying a default appname for Perl and C + * Extract / apply logtag in the router + * Minor repair: avoid redundant strdup - Signed-off-by: Dan Scott - -0 1 README - -commit 885a4d87cd06f31071ff9b2f728fd7aa1c83d7be -Author: Dan Scott -Date: Wed May 30 23:11:14 2012 -0400 - - Generate ChangeLog for 2.1.0 release - - Signed-off-by: Dan Scott + Signed-off-by: Bill Erickson + Signed-off-by: Mike Rylander + Signed-off-by: Galen Charlton -821 59 ChangeLog +1 1 src/libopensrf/log.c +1 1 src/libopensrf/osrf_system.c +5 2 src/perl/lib/OpenSRF/Utils/Logger.pm +2 0 src/router/osrf_router_main.c -commit 3eb7c54a734369a7bffc4a3c30bef2e65573be52 -Author: Dan Scott -Date: Sun May 27 22:52:23 2012 -0400 +commit 512f77b4652d6c793c21c7b6955480e6b9ada195 +Author: Mike Rylander +Date: Fri Jun 20 15:52:47 2014 -0400 - 2.1.0 release notes + LP#1343578: Add support for log tagging - A summary of some of the highlights of the new release, for - functionality that has been added and deleted. Does not address bug - fixes such as the much more robust Perl child handling; perhaps - we should focus on those as well? + The ability to provide instance-specific log tagging via syslog + would make running multiple instances much easier to manage. So + this branch does that. - Signed-off-by: Dan Scott + Signed-off-by: Mike Rylander + Signed-off-by: Galen Charlton -89 0 doc/RELEASE_NOTES.txt - create mode 100644 doc/RELEASE_NOTES.txt +2 0 include/opensrf/log.h +26 1 src/libopensrf/log.c +3 0 src/libopensrf/osrf_system.c +4 0 src/perl/lib/OpenSRF/Utils/Logger.pm -commit cdd0816c624ff0843ee5ab201346521ae91f474a -Author: Dan Scott -Date: Wed May 30 22:33:17 2012 -0400 +commit 6c3b1001c6183b2f633d0f43ccd3d28071c0c48d +Author: Bill Erickson +Date: Mon May 5 13:40:46 2014 -0400 - Bump version numbers to help with library compatibility + LP#1316245: JS now uses browser-native JSON routines - By bumping the OpenSRF version numbers for Perl libs, Python libraries, - and the libtool versioning for the libopensrf library, projects that - build on OpenSRF will be able to flag the minimum required version and - bail out early if an older version of OpenSRF has been installed. + * Replace JSON2jsRaw() with JSON.parse() - Signed-off-by: Dan Scott - -2 2 src/libopensrf/Makefile.am -1 1 src/perl/lib/OpenSRF.pm -1 1 src/python/setup.py -1 1 version.m4 - -commit ee2c79929aa63ff8d6749da7d10c15ab967d9fd5 -Author: Dan Scott -Date: Tue May 22 16:45:33 2012 -0400 - - Add "tar" to base prereqs to appease autotools + * Replace js2JSONRaw() with JSON.stringify() - On a minimal install of Fedora 17, I was running into the perplexing - error message whilst running 'autoreconf -i': + * Removed unit tests for JSON2jsRaw() and js2JSONRaw() - libtoolize: can not copy `/usr/share/libtool/config/ltmain.sh' to `./' + * Removed jsonPretty() pretty-printing routine. Use + JSON.stringify(json, null, ) instead. - This was confusing because a manual copy would, in fact, copy the file - just fine. + See also: - http://lists.gnu.org/archive/html/libtool/2009-07/msg00030.html finally - lead to enlightenment: autotools uses "tar" to copy files, not "cp". - Thus, to avoid similar head-scratching install problems in the future, - add "tar" to the base prerequisites for building OpenSRF (both to the - DEBs list and the RPMs list). + https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_native_JSON - Signed-off-by: Dan Scott + Signed-off-by: Bill Erickson + Signed-off-by: Galen Charlton -3 1 src/extras/Makefile.install +2 94 src/javascript/JSON_v1.js +0 60 src/javascript/tests/testJSON_v1.js -commit 788a396a2b380c5950c09368f85e8d4a79ec2ca8 -Author: Dan Scott -Date: Tue May 22 02:26:04 2012 -0400 +commit 2677f8e815a61f9b808bb57647f6ec9d448f0268 +Author: Bill Erickson +Date: Mon Aug 4 14:26:36 2014 -0400 - Update OS support in README / Makefile.install - - Kick Debian Lenny, Ubuntu Hardy, and RHEL 5 / CentOS 5 to the curb. - - Also change the name of the README to the more generic & instructive - "Installing OpenSRF" rather than "README for OpenSRF #.#.#". + LP#1268619: disable shared workers pending browser issues - Signed-off-by: Dan Scott + There appears to be a bug in Chromium where loading the same page + multiple times (without a refresh or cache clear) causes the + SharedWorker to fail to instantiate on every other page load. + Further research pending. Disabling SharedWorker's entirely for + now. - Conflicts: - - README - - Signed-off-by: Dan Scott - -3 9 README -3 243 src/extras/Makefile.install - -commit 3dd57f268b8b5d39f85139e4c4e5246bd9e2cda5 -Author: Thomas Berezansky -Date: Wed May 23 10:13:41 2012 -0400 - - Nagios Example Plugin for monitoring services + Note, to replicate, load a page using shared workers, focus the + browser address bar, hit Enter to load the page again. The shared + worker will fail to load on every other page load, though it will + appear to the SharedWorker caller (opensrf.js) that the port is open. - Does not check that all drones in a brick are fully up, just that the - entire brick will respond to each service, even if only one drone happens - to be running the listener properly (and said listener is responding). - - Signed-off-by: Thomas Berezansky - Signed-off-by: Dan Scott + Signed-off-by: Bill Erickson + Signed-off-by: Galen Charlton -219 0 examples/nagios/check_osrf_services - create mode 100755 examples/nagios/check_osrf_services +6 1 src/javascript/opensrf.js -commit e7431d6fa114c35d3dc5b430fbb4bdae99edaa88 +commit 755a58642281246df280877f7ad480503b1ddc4b Author: Bill Erickson -Date: Mon Apr 2 14:55:56 2012 -0400 +Date: Wed Jul 30 12:05:36 2014 -0400 - Detect and repair multipart/mixed message delivery errors - - For unknown reasons, the Content-Type header will occasionally be - included in the XHR.responseText for multipart/mixed messages. When - this happens, strip the header and newlines from the message body and - re-parse. + LP#1268619: update JS/WS/SSL code comment Signed-off-by: Bill Erickson - Signed-off-by: Dan Scott + Signed-off-by: Galen Charlton -33 1 src/javascript/opensrf.js +1 4 src/javascript/opensrf_ws_shared.js -commit 832f166b38acc9c68c9c1fcea1432d2ca881316b -Author: Galen Charlton -Date: Mon May 21 17:29:05 2012 -0400 +commit c65c6d9f91c5372360619004c8602d2a262dfb8b +Author: Bill Erickson +Date: Thu Jul 10 11:29:49 2014 -0400 - fix up index/position type for calls of various osrfList* functions - - osrfListSet, osrfListRemove, osrfListGetIndex, and osrfListExtract - all expect unsigned ints for the index/position parameter. - - src/jserver is ignored by this commit as its removal is pending. + LP#1268619: JS status codes can come across as numbers; stringify for match + Signed-off-by: Bill Erickson Signed-off-by: Galen Charlton - Signed-off-by: Dan Scott -1 1 src/gateway/osrf_http_translator.c -2 2 src/libopensrf/osrf_json_tools.c -1 1 src/libopensrf/osrf_list.c -1 1 src/libopensrf/string_array.c -1 1 src/router/osrf_router.c +1 1 src/javascript/opensrf.js -commit bdc4cfe354051e4132d6ffa2da3e0942acb3f780 -Author: Dan Scott -Date: Sat May 5 01:58:22 2012 -0400 +commit 17ae5ca5e6db6700dc4b61599c4394f80e727711 +Author: Bill Erickson +Date: Tue Jul 8 09:41:12 2014 -0400 - Remove comparisons that can never evaluate to true - - Using clang as the compiler results in 4 warnings like the following: - - osrf_list.c:106:23: warning: comparison of unsigned expression < 0 is - always false [-Wtautological-compare] - if(!list || position < 0) return NULL; - ~~~~~~~~ ^ ~ + LP#1268619: JS libs capture all method errors - (Explanation: "position" is an unsigned int; thus the comparison to < 0 - can never evaluate to true). + Instead of selecting specific errors to report as method errors, report + all API calls which return 400 or 500-series errors as method errors. - Signed-off-by: Dan Scott + Signed-off-by: Bill Erickson Signed-off-by: Galen Charlton -4 4 src/libopensrf/osrf_list.c +2 1 src/javascript/opensrf.js -commit 3aabf1932f93bc6e1e6693001734a1f1bcdbdce0 -Author: Dan Scott -Date: Sat May 5 01:32:25 2012 -0400 +commit 9fdef970f3785e958090f8edf4ad37ece4459343 +Author: Bill Erickson +Date: Sun May 4 15:58:17 2014 -0400 - LP954059: Silence uninitialized var warning + LP#1268619: websocket: avoid sharedworker for firefox 29 - Compiling osrf_utf8.c generates the following warning: + https://bugzilla.mozilla.org/show_bug.cgi?id=504553#c73 - osrf_utf8.c:510:29: warning: utf8_char may be used uninitialized in this - function [-Wuninitialized] + Avoid using SharedWorkers when useragent match "Firefox". FF supports + shared workers, but it does not yet support WebSockets within shared + workers. - So... initialize utf8_char when we declare it, and make the compiler - happy. - - Signed-off-by: Dan Scott + Signed-off-by: Bill Erickson Signed-off-by: Galen Charlton -1 1 src/libopensrf/osrf_utf8.c +8 3 src/javascript/opensrf.js -commit 4fe1fdc7d4561e04212444786fd61d95eae69eb0 -Author: Galen Charlton -Date: Mon May 21 17:02:34 2012 -0400 +commit f43286bf11119c731ee0dbe9b5b740d8715ace66 +Author: Bill Erickson +Date: Thu Apr 10 08:50:13 2014 -0400 - LP# 953299 - defend against null and zero-length cache keys - - Ignore undefined and zero-length (after key normalization) cache - keys. + LP#1268619: websockets: detect connectedness of JS default sockets + Signed-off-by: Bill Erickson Signed-off-by: Galen Charlton - Signed-off-by: Dan Scott -9 2 src/perl/lib/OpenSRF/Utils/Cache.pm +18 2 src/javascript/opensrf.js +10 1 src/javascript/opensrf_ws.js +3 1 src/javascript/opensrf_ws_shared.js -commit 3e97b0f69be04957eefa149d06e05111f3ad4291 -Author: Dan Scott -Date: Mon May 21 12:18:41 2012 -0400 +commit 0cf0a8a5fe61228995f75d0f0c6e4f4731888c40 +Author: Bill Erickson +Date: Mon Apr 7 12:04:33 2014 -0400 - LP# 953299 - Prevent get/set of invalid cache keys + LP#1268619: websockets: auto-upgrade to shared workers; SSL-always - Clients of OpenSRF::Utils::Cache occasionally request cache keys that - contain invalid characters (a particular case is ISBNs that contain - spaces), so strip those out of incoming get/set requests to avoid ugly - memcached errors. - - Signed-off-by: Dan Scott + Signed-off-by: Bill Erickson Signed-off-by: Galen Charlton -25 0 src/perl/lib/OpenSRF/Utils/Cache.pm -3 1 src/perl/t/09-Utils-Cache.t +42 4 src/javascript/opensrf.js +95 0 src/javascript/opensrf_ws.js +4 4 src/javascript/opensrf_ws_shared.js + create mode 100644 src/javascript/opensrf_ws.js -commit c6cf4d9b6530f5b8b6bdf95c26db9986656fcce8 -Author: Dan Scott -Date: Mon May 21 12:41:25 2012 -0400 - - .gitignore - ignore more built stuff in fewer lines - - Use the power of glob to catch more built files that we want to ignore, - while simplifying the .gitignore file significantly. - - Signed-off-by: Dan Scott - -23 108 .gitignore - -commit 2c0fb3a9f6aeea9c93846c573ced8d235ec03c7c -Author: Dan Scott -Date: Mon May 21 11:48:26 2012 -0400 - - Revert inadvertently introduced debugging code - - In commit 91b8790c, several debugging lines were accidentally committed - to the OpenSRF caching utility. Revert that change. - - Signed-off-by: Dan Scott - -0 3 src/perl/lib/OpenSRF/Utils/Cache.pm - -commit f6d38086a42cd6a60d7ed45461d99076cf4d9e5e -Author: Dan Scott -Date: Tue May 1 22:11:00 2012 -0400 - - Minor cleanups to Java dependency build process - - While configure.ac still hardcodes the expected location of the Java - dependencies (JSON and Memcached classes), we can clean up some of the - lower-level challenges with the Java build. - - * StAX and WSTX were rolled into the core Java environment long ago, - so there's no need to download them and even less need to verify - that the downloaded version exist. - * The Memcached class is now up to 2.0.1, per deps.sh, but the deps.inc - file was pointing at 1.5.1. - * Speaking of the deps.inc file, nothing seems to use it; delete it. - * The Makefile was dying because the variables for the Memcached and - JSON classes weren't defined. Define those at the top of the Makefile. - - Signed-off-by: Dan Scott - -4 3 src/java/Makefile.am -0 5 src/java/deps.inc - delete mode 100644 src/java/deps.inc - -commit d9487c42a1e3432be9fa3da9b2fad2b42d24a645 -Author: Dan Scott -Date: Tue May 1 22:08:23 2012 -0400 - - Clean up root directory: INSTALL, .gitignore, autoreconf - - * Update the README to avoid running autoreconf with the "-f" flag. - * Make the INSTALL file a symbolic link to the README to avoid - creating a generic INSTALL file each time autoreconf is run. - * Add a .gitignore file that ignores all of the built files. - - Signed-off-by: Dan Scott - -181 0 .gitignore -1 0 INSTALL -1 1 README - create mode 100644 .gitignore - create mode 120000 INSTALL - -commit c4c2d62cdf47ee7e5d02fac44cce5515a77c362c -Author: Dan Scott -Date: Tue May 1 21:31:38 2012 -0400 - - Change Java deps.sh to include . in CLASSPATH - - Following the directions given by running deps.sh was a little bit - frustrating; we need to work in some documentation on how to use the - Java bits of OpenSRF - and perhaps look at a more standard option like - maven for dependencies. - - Signed-off-by: Dan Scott - -1 1 src/java/deps.sh - -commit d7d8923e98a91c070668a529957d7ee7033529a7 +commit 8120314b86d2b6cafe2f5fd968b4475cc187acfb Author: Bill Erickson -Date: Fri Mar 16 09:56:13 2012 -0400 +Date: Tue Mar 11 17:25:19 2014 -0400 - Java Gateway interface improved exception handling + LP#1268619: websockets: gateway code repairs & confing options - Handle any exceptions that should not reasonably occur in normal - operation under the covers. Bubble the rest up. Update test code with - examples. + * avoid unneccessary and wrong incantation of apr_thread_exit. The two + sub-threads now both live for the duration of the process. + * to be safe, create thread mutex before threads Signed-off-by: Bill Erickson - Signed-off-by: Dan Scott + Signed-off-by: Galen Charlton -57 51 src/java/org/opensrf/net/http/GatewayRequest.java -16 8 src/java/org/opensrf/net/http/HttpConnection.java -41 12 src/java/org/opensrf/net/http/HttpRequest.java -5 2 src/java/org/opensrf/net/http/HttpRequestHandler.java -50 30 src/java/org/opensrf/test/TestGateway.java +8 1 README.websockets +252 206 src/gateway/osrf_websocket_translator.c -commit ad253eb0d67098b69c71141061563b1802f33f97 +commit 4ce075beeb5f81b8eb4c2cb2669b3a99ebab40ba Author: Bill Erickson -Date: Thu Mar 15 17:26:16 2012 -0400 +Date: Mon Mar 10 15:55:24 2014 -0400 - Java gateway interface test class + LP#1268619: websockets: apply syslog name in gateway Signed-off-by: Bill Erickson - Signed-off-by: Dan Scott + Signed-off-by: Galen Charlton -58 0 src/java/org/opensrf/test/TestGateway.java - create mode 100644 src/java/org/opensrf/test/TestGateway.java +1 0 src/gateway/osrf_websocket_translator.c -commit 5b5e28f16be77d9b23a98579d10173103dd907ed +commit 77c7f5889e8f31038cd732feb3e6057a0d3788b5 Author: Bill Erickson -Date: Mon Feb 27 18:05:07 2012 -0500 +Date: Mon Mar 10 08:41:45 2014 -0400 - Java HTTP gateway interface + LP#1268619: websockets: README typo repairs - Supports sync and async requests. Async requests support onResponse, - onComplete, and onError handlers. - - Supports a max-threads value to limit the number of activately - communicating threads over any connection. When max-threads is reached, - requests are queued and delivered as soon as there is room. - - Note that since this is talking to the OpenSRF gateway and not the - translater, responses are simply collected and passed one at a time to - onResponse. They are not streamed. The goal of supporting onResponse - is to provide the same client API for both the gateway and translator. + Patch from Warren Layton to repair path to 'envvars' and clarify some + text. Signed-off-by: Bill Erickson - Signed-off-by: Dan Scott - -129 0 src/java/org/opensrf/net/http/GatewayRequest.java -97 0 src/java/org/opensrf/net/http/HttpConnection.java -66 0 src/java/org/opensrf/net/http/HttpRequest.java -25 0 src/java/org/opensrf/net/http/HttpRequestHandler.java - create mode 100644 src/java/org/opensrf/net/http/GatewayRequest.java - create mode 100644 src/java/org/opensrf/net/http/HttpConnection.java - create mode 100644 src/java/org/opensrf/net/http/HttpRequest.java - create mode 100644 src/java/org/opensrf/net/http/HttpRequestHandler.java - -commit 85830ce301654e2dfefcd186a2bd63bd3785a967 -Author: Dan Scott -Date: Mon Apr 23 14:17:35 2012 -0400 - - Remove GNU default INSTALL file - - GNU autotools generate an INSTALL file that is generic and which - conflicts with the instructions given in the README. Installation is - already hard enough without conflicting instructions, so delete the - INSTALL file. - - Signed-off-by: Dan Scott - -0 237 INSTALL - delete mode 100644 INSTALL - -commit bc36b120e78f9fa995856a144b9054e2a0ab1f3e -Author: Dan Scott -Date: Mon Apr 23 14:13:37 2012 -0400 - - autotools - do not explicitly include m4 directory - - Some versions of autotools complain bitterly if an m4 include directory - is specified that does not exist. - - Signed-off-by: Dan Scott + Signed-off-by: Galen Charlton -0 2 Makefile.am -0 1 configure.ac +2 2 README.websockets -commit 2bdd580e2bcc6660b073b6853dc1544d5c68a6fd -Author: Dan Scott -Date: Mon Apr 23 13:45:14 2012 -0400 +commit bb424c1424193e4db340e3f6e17a939dc1dd821a +Author: Bill Erickson +Date: Thu Mar 6 15:47:36 2014 -0500 - Name the bootstrapping steps in buildbot + LP#1268619: websockets : additional apache config docs - Signed-off-by: Dan Scott + Signed-off-by: Bill Erickson + Signed-off-by: Galen Charlton -10 6 examples/buildbot.cfg +20 40 README.websockets +0 43 examples/apache2/websockets.conf +73 0 examples/apache2/websockets/apache2.conf + delete mode 100644 examples/apache2/websockets.conf + create mode 100644 examples/apache2/websockets/apache2.conf -commit f21b0a5aa647e7303cc0d6d3fb70cadf0e8fc812 -Author: Dan Scott -Date: Mon Apr 23 13:16:25 2012 -0400 +commit 9f2d35e6f6b6ec5a3db109adb518cf270d49c683 +Author: Bill Erickson +Date: Thu Mar 6 15:05:12 2014 -0500 - Fix buildbot configuration - - Need to define our tests before they're called; also, can't blindly - invoke a step out of the proper scope. Duh. - - Signed-off-by: Dan Scott + LP#1268619: websockets: apache conf -> info logging - Conflicts: - - examples/buildbot.cfg + Signed-off-by: Bill Erickson + Signed-off-by: Galen Charlton -55 18 examples/buildbot.cfg +1 1 examples/apache2/websockets.conf -commit 4d58c3d24b65f96e0648e37a3f4da82051a58917 -Author: Dan Scott -Date: Mon Apr 23 12:52:57 2012 -0400 +commit b1b3bf60f613b94d1455afb54dff4ad4a7e95ddd +Author: Bill Erickson +Date: Wed Mar 5 08:40:05 2014 -0500 - Switch to autoreconf instead of autogen.sh + LP#1268619: websockets: remove single-tab JS WS implementation - Update the buildbot config accordingly to avoid erroneous errors of - erroneosity. + It was falling behind the shared lib in bug fixes and features. A + per-tab WS implementation is (maybe) a dangerous thing to have around, + as well, since it encourages /many/ connections. Can resurrect later if + needed. - Signed-off-by: Dan Scott + Signed-off-by: Bill Erickson + Signed-off-by: Galen Charlton -1 1 README -0 43 autogen.sh -12 4 examples/buildbot.cfg - delete mode 100755 autogen.sh +0 165 src/javascript/opensrf_ws.js + delete mode 100644 src/javascript/opensrf_ws.js -commit 5849a119bd363b152b41ed7a39c787f009412572 -Author: Dan Scott -Date: Mon Apr 2 16:48:15 2012 -0400 +commit 6765c6395b0fb2a1c501f7c94a04cfacc7d460db +Author: Bill Erickson +Date: Tue Mar 4 14:10:59 2014 -0500 - Bump version numbers for 2.1.0-RC1 release - - Also update the ChangeLog with relevant entries. + LP#1268619: websockets: shared worker path; JS api_level - Signed-off-by: Dan Scott + Signed-off-by: Bill Erickson + Signed-off-by: Galen Charlton -21 0 ChangeLog -1 1 src/perl/lib/OpenSRF.pm -1 1 version.m4 +25 8 src/javascript/opensrf.js -commit 0ed34101e67dc04292f906945dd5752c73985412 -Author: Dan Scott -Date: Fri Mar 23 13:05:31 2012 -0400 +commit f5ada2850552560a24e473e02532e75870ab7307 +Author: Bill Erickson +Date: Mon Mar 3 16:23:44 2014 -0500 - Add trailing period, "localhost" to ejabberd.cfg example + LP#1268619: websockets: initial C libs api_level support - Thanks to Yamil Suarez for noticing a discrepancy between the older wiki - instructions and the README. - - Signed-off-by: Dan Scott + Signed-off-by: Bill Erickson + Signed-off-by: Galen Charlton -1 1 README +4 1 src/libopensrf/osrf_message.c -commit cf4d4798c5949abaf6bc9a4c3a62bf9a6533977b +commit 2bcead2d3e1c560a30c5b9beba6d1cbfe58778ed Author: Bill Erickson -Date: Wed Mar 14 11:38:18 2012 -0400 +Date: Mon Mar 3 16:01:58 2014 -0500 - Prevent undef warnings on perl socket read nbytes test + LP#1268619: websockets : gateway log inbound messages at internal Signed-off-by: Bill Erickson - Signed-off-by: Dan Scott + Signed-off-by: Galen Charlton -1 1 src/perl/lib/OpenSRF/Transport/SlimJabber/XMPPReader.pm +7 0 src/gateway/osrf_websocket_translator.c -commit fff96812ff55cc50374d5a16e7c803fac2c2f2a5 -Author: Dan Scott -Date: Sun Mar 11 11:22:14 2012 -0400 +commit 5631bbdfa0f9a4fe2ea1b238c5e2ffee4b606dc1 +Author: Bill Erickson +Date: Mon Mar 3 12:06:12 2014 -0500 - Prepare 2.1.0-alpha1 for release + LP#1268619: websocket : add JS lib to makefile - Signed-off-by: Dan Scott + Signed-off-by: Bill Erickson + Signed-off-by: Galen Charlton -555 0 ChangeLog -2 2 README -2 2 src/perl/lib/OpenSRF.pm -1 1 version.m4 +1 1 src/Makefile.am -commit f470b55b86fd59f31dd142d8cb55fe812265892e +commit 0054ea6684a933037af1cc3bc6358c7096dc051c Author: Bill Erickson -Date: Mon Feb 20 14:40:30 2012 -0500 +Date: Mon Mar 3 10:29:23 2014 -0500 - Detect remote disconnect in Perl XMPP reader + LP#1268619: websocket: avoid module auto configuration - When the jabber server severs the connection, it leaves the Perl libs - with a socket that perpetually appears ready for reading, but always - returns 0 bytes. This produces a loop in the client code. This change - detects this situation, logs an error, and throws an exception. + We don't want osrf_websocket_translator to be directly loaded as a + module, since it is not an apache module, but a shared library loaded by + an apache module (mod_websockets). This is especially true of the default + apache instance. Signed-off-by: Bill Erickson - Signed-off-by: Dan Scott + Signed-off-by: Galen Charlton -13 2 src/perl/lib/OpenSRF/Transport/SlimJabber/XMPPReader.pm +1 1 src/gateway/Makefile.am -commit 974d3a0dd4ddd134033b16bcd9e2fde34302ffd5 -Author: Dan Wells -Date: Tue Mar 6 15:08:33 2012 -0500 +commit e375a1e31b87a3d645b6da05e83f2a29f885f1fc +Author: Bill Erickson +Date: Mon Mar 3 10:05:26 2014 -0500 - Protect gateway from format-string crashes in data - - As a common security measure, printf-style formatting codes are - not allowed to be directly interpreted from a writable segment. - The gateway code currently has the following function call: - - osrfLogActivity( OSRF_LOG_MARK, act->buf ); - - This is a variadic function which expects the 'act->buf' position - to contain a format string and any trailing arguments to be the - values passed to the formatter. Since act->buf is the value of - what we passed in, some data inadvertantly contains format strings, - and since it is a writable segment, the program crashes. Here is - an example of a crash-causing call: - - http://localhost/osrf-gateway-v1?service=test&method=test¶m=%22%251n%22 + LP#1268619: websocket : apache gateway minor fixes - The param is interpreted as "%1n" and abruptly fails. + Replace remaining remote_ip calls with a get_client_ip() function which + operates for apache2 and apache4. - The simple solution is to include a formatter so that our param gets - demoted to being mere data, i.e.: + Make log functions for applying a log trace value accept const char*'s - osrfLogActivity( OSRF_LOG_MARK, "%s", act->buf ); - - Signed-off-by: Dan Wells - Signed-off-by: Dan Scott + Signed-off-by: Bill Erickson + Signed-off-by: Galen Charlton -1 1 src/gateway/osrf_json_gateway.c +2 2 include/opensrf/log.h +11 16 src/gateway/osrf_websocket_translator.c +2 2 src/libopensrf/log.c -commit fd92a859e2ba3eeeaafe4904cd04973eb8cd572b -Author: Thomas Berezansky -Date: Wed Mar 7 16:42:21 2012 -0500 +commit 0a0d3f616c9531c7931c365e1912cbcf6358441b +Author: Bill Erickson +Date: Mon Mar 3 09:42:03 2014 -0500 - Stop warning about missing parentheses... - - ...by adding them. + LP#1268619: websocket : more JS api docs - Signed-off-by: Thomas Berezansky + Signed-off-by: Bill Erickson + Signed-off-by: Galen Charlton -1 1 src/perl/lib/OpenSRF/Application/Validator.pm +83 20 src/javascript/opensrf_ws_shared.js -commit 8cfa0ae50935176a1574e8f233c8d4d88442c0ad +commit aa1c088bd45a254290ad202875eb87c4bd4eeb2a Author: Bill Erickson -Date: Thu Feb 16 17:31:29 2012 -0500 +Date: Thu Jan 16 11:41:01 2014 -0500 - Refresh child file handles on status read - - If a child process dies while the parent is attempting to read status - information from the child, the pipe connecting the two will be cleaned - up. The parent mustn't attempt to read from the dead pipe or it will - result in a bad file descriptor error, culminating in a high-cpu - infinite loop on the parent (Listener) process. + LP#1268619: websockets : added config docs to install readme Signed-off-by: Bill Erickson - Signed-off-by: Thomas Berezansky - Signed-off-by: Jason Stephenson + Signed-off-by: Galen Charlton -4 3 src/perl/lib/OpenSRF/Server.pm +19 0 README.websockets +1 1 src/gateway/osrf_websocket_translator.c -commit 37606bf64f2829258cc612e730782e081e2ac6bb +commit a64f10c4183a495ec3912458c9b6268856e8fe47 Author: Bill Erickson -Date: Fri Jan 13 10:57:59 2012 -0500 +Date: Tue Jan 14 16:25:20 2014 -0500 - Python libs for OpenSRF ingress tracking + LP#1268619: websocket JS libs: reconnect and auto-connect - osrf.ses.Session.ingress(ingress) + JS clients no longer need to explicitly call the shared WS setup + routine. It happens under the covers now. - This also set the "srfsh" ingress value for srfsh.py. + JS client detects disconnects and reconnects when the next message send + attempt occurs. Signed-off-by: Bill Erickson - Signed-off-by: Mike Rylander + Signed-off-by: Galen Charlton -11 1 src/python/osrf/ses.py -2 0 src/python/osrf/stack.py -1 0 src/python/srfsh.py +4 6 src/javascript/opensrf.js +55 45 src/javascript/opensrf_ws_shared.js -commit 26c31a9d5728adbd884a1369034caff41471130b +commit a02360aadfcd113cbec88d9c2455e42fdd74e536 Author: Bill Erickson -Date: Fri Jan 13 09:35:18 2012 -0500 +Date: Tue Jan 14 16:22:23 2014 -0500 - Set OpenSRF ingress value for srfsh/gateways + LP#1268619: websocket translator idle timeout / graceful shutdown - Sets the "srfsh", "gateway-v1", and "translator-v1" ingress values - accordingly. + Added support for an idle timeout and idle check interval configuration + variables. These allow each websocket apache process to kick off + clients that have been connected and are idle for too long, thus hogging + a process unnecessarily. - For the translater, it's necessary to stamp the unpacked messages with - the updated ingress, then re-serialize before sending the messages along. + Added a SIGUSR1 signal handler which forces the idle timeout to be very + low and a short re-check period so that the client can be kicked as soon + as there are no open conversations. Signed-off-by: Bill Erickson - Signed-off-by: Mike Rylander + Signed-off-by: Galen Charlton -18 21 src/gateway/osrf_http_translator.c -1 0 src/gateway/osrf_json_gateway.c -1 0 src/srfsh/srfsh.c +263 25 src/gateway/osrf_websocket_translator.c -commit 7ec92808fea116ead923e475ad5242a54b688798 +commit bef394a7c24df54f1e63fc3e83cd473195a46c3a Author: Bill Erickson -Date: Fri Jan 13 09:15:05 2012 -0500 +Date: Fri Jan 10 11:57:29 2014 -0500 - C libs for OpenSRF ingress tracking + LP#1268619: websockets: support WS via shared web workers + + This allows mutiple browser tabs to share the same websocket connection. - osrfAppSessionSetIngress(); + TODO: add tab (port) disconnect handler + TODO: more docs / examples Signed-off-by: Bill Erickson - Signed-off-by: Mike Rylander + Signed-off-by: Galen Charlton -5 0 include/opensrf/osrf_app_session.h -5 0 include/opensrf/osrf_message.h -26 0 src/libopensrf/osrf_app_session.c -32 0 src/libopensrf/osrf_message.c -4 0 src/libopensrf/osrf_stack.c +55 0 src/javascript/opensrf.js +176 0 src/javascript/opensrf_ws_shared.js + create mode 100644 src/javascript/opensrf_ws_shared.js -commit b12de37f9480c68b1c8b033da18c3cc0d0ebc8f0 +commit fdb255a92f9fa687a50bed05ef918523cf902d8b Author: Bill Erickson -Date: Thu Jan 12 16:36:16 2012 -0500 +Date: Thu Jan 9 15:00:03 2014 -0500 - Perl libs for OpenSRF ingress tracking - - Ingress is a free-form text value which represents the entry point for - the client into the opensrf network. The value is passed within opensrf - messages, similar to "locale". Clients should specify the ingress - before any opensrf communication occurs. - - OpenSRF::AppSession->ingress($ingress); - - Stock values include the following: - - opensrf (default) - srfsh - translator-v1 - gateway-v1 + LP#1268619: websocket: do not disconnect ws() on osrf disconnect message Signed-off-by: Bill Erickson - Signed-off-by: Mike Rylander + Signed-off-by: Galen Charlton -9 0 src/perl/lib/OpenSRF/AppSession.pm -20 1 src/perl/lib/OpenSRF/DomainObject/oilsMessage.pm -2 0 src/perl/lib/OpenSRF/Transport.pm +0 5 src/javascript/opensrf.js -commit 67d4d5de8656128f32b20f4c04dbf81a1028e929 -Author: Dan Scott -Date: Wed Feb 29 10:48:38 2012 -0500 +commit d546d7eacb183ba2ddd0c0ba5dc281dc5086ae81 +Author: Bill Erickson +Date: Tue Feb 5 10:22:34 2013 -0500 - Copy opensrf_core.xml.example to a clean opensrf_core.xml file + LP#1268619: temporary websocket installer README - Ben Shum with the assist again. - - Also, add ~/.srfsh.xml to the definition list of interesting OpenSRF - configuration files. - - Signed-off-by: Dan Scott + Signed-off-by: Bill Erickson + Signed-off-by: Galen Charlton -6 3 README +47 0 README.websockets + create mode 100644 README.websockets -commit 68025993b01cc95f66a0ca723841e1abb406709f -Author: Dan Scott -Date: Wed Feb 29 10:42:58 2012 -0500 +commit e4ef36f385c4f3b83ac4b49f2b07ee19c3166ff0 +Author: Bill Erickson +Date: Tue Feb 5 09:52:57 2013 -0500 - Include explicit instructions to copy the opensrf config files - - Also noted by the sharp-eyed Ben Shum, we didn't tell people to actually - copy opensrf.xml.example / opensrf_core.xml.example, which could lead to - failure. + LP#1268619: Sample Websocket translator Apache 2.2 configuration - Signed-off-by: Dan Scott + Signed-off-by: Bill Erickson + Signed-off-by: Galen Charlton -35 17 README +43 0 examples/apache2/websockets.conf + create mode 100644 examples/apache2/websockets.conf -commit 75f27021d4b45eebbf52a89a35f96e775f92a207 -Author: Dan Scott -Date: Wed Feb 29 10:27:36 2012 -0500 +commit 32ab4b133c9c96780e8b202ab1efe46bbf321c3b +Author: Bill Erickson +Date: Fri Jan 25 12:38:13 2013 -0500 - Update max_user_sessions suggestion to 10000 to match wiki + LP#1268619: websocket gateway: improved memory mgt; logging - Ben Shum noticed that the README still specified 1000 for - max_user_sessions in the ejabberd.cfg file, whereas current larger - OpenSRF systems with many services may blow past that limit. Update to - match the current wiki specification of 10000. - - Signed-off-by: Dan Scott + Signed-off-by: Bill Erickson + Signed-off-by: Galen Charlton -1 1 README +1 1 src/gateway/Makefile.am +18 23 src/gateway/osrf_websocket_translator.c +2 2 src/javascript/opensrf_ws.js -commit 61fdb582dc918a1003351ff25842a23aaff24f71 -Author: Dan Scott -Date: Wed Jan 4 15:21:36 2012 -0500 +commit 0f3aa6480d2fbc9645571e057dac3f3be08709d1 +Author: Bill Erickson +Date: Mon Jan 21 11:34:57 2013 -0500 - Remove reference to Fedora specific version in prereq installer - - Fedora changes every 6 months, so it's probably silly to have a make - target of "fedora14" when that is no longer supported by the Fedora - project itself. As Fedora has packaged all of the OpenSRF dependencies - (thanks, Ben Webb!), in theory it should be supported by the latest - releases of Fedora in the future... as long as we don't introduce any - dependencies on deprecated versions of packages. + LP#1268619: websockets; free temporary osrf msgs; minor comment change - Signed-off-by: Dan Scott + Signed-off-by: Bill Erickson + Signed-off-by: Galen Charlton -2 2 src/extras/Makefile.install +11 2 src/gateway/osrf_websocket_translator.c -commit ba6d4c7cc2988dafb6ca8de2d1f2f93194dcf3b3 -Author: Dan Scott -Date: Wed Jan 4 15:17:48 2012 -0500 +commit de238b740f3a54dacd07610d8e187f417bf5b677 +Author: Bill Erickson +Date: Mon Dec 10 14:33:14 2012 -0500 - Update README to match Evergreen's format - - Reference the various accounts in use consistently. - - Correct reference to "fedora" target in Makefile.install. - - Put the developer preamble up front. - - Provide more Fedora examples. - - Do not include leading "#" and "$" in bash examples, to make it easier - for people to copy and paste. + LP#1268619: websocket; docs, more memory mgmt - Include source highlighting instructions and titles for example - commands. - - Signed-off-by: Dan Scott + Signed-off-by: Bill Erickson + Signed-off-by: Galen Charlton -152 98 README +79 34 src/gateway/osrf_websocket_translator.c -commit cc7a12f74a9ce4555d5abd8989dfab43290fb41c +commit f990a29db95d9b1c06efa22c1b3f4fbc43206571 Author: Bill Erickson -Date: Fri Feb 24 16:28:27 2012 -0500 +Date: Mon Nov 12 16:46:19 2012 -0500 - Java dependencies update + LP#1268619: websocket translator - As of Java 6, XML Stax parsing is natively supported. This change - removes the external Stax dependencies and updates how the JSON libs are - fetched (in deps.sh), which now come from github. + * starting packet inspection + * activity log; recipient removal + * only cache connected recipients; use request_rec pool for session_pool parent + * wrap all thread work in mutex + * session memory goodness Signed-off-by: Bill Erickson - Signed-off-by: Dan Scott + Signed-off-by: Galen Charlton -17 20 src/java/deps.sh -1 4 src/java/org/opensrf/net/xmpp/XMPPReader.java -1 4 src/java/org/opensrf/util/XMLFlattener.java +278 72 src/gateway/osrf_websocket_translator.c -commit 07b2eff0a7dfc492afd8e67788eae159c5ab96b7 -Author: Dan Scott -Date: Tue Feb 21 09:55:57 2012 -0500 +commit 27707398e955b8a8a2df1a5311aebc19b8eb1708 +Author: Bill Erickson +Date: Thu Nov 8 12:36:16 2012 -0500 - We're not in Subversion anymore, Dorothy + LP#1268619: websocket JS additions - We're in git now, make the README reflect that accordingly. Thanks to - Warren Layton for the tip! - - Signed-off-by: Dan Scott + Signed-off-by: Bill Erickson + Signed-off-by: Galen Charlton -2 2 README +51 50 src/javascript/opensrf.js +124 63 src/javascript/opensrf_ws.js -commit aeeb4acdc8695a640021dbc6902ab3279652583d +commit cc42cb62c47edabd693e491ad0d939970d7dbc53 Author: Bill Erickson -Date: Tue Feb 14 09:10:58 2012 -0500 +Date: Tue Oct 30 15:51:18 2012 -0400 - Perl parent/child write improvements - - * Updated variable names for clarity - * Added more inline comments - * Added additional error logging - * For severe read errors, allow the child to gracefully skip the request + LP#1268619: track websocket_plugin.h locally until replaced by makefile.install process Signed-off-by: Bill Erickson - Signed-off-by: Jason Stephenson - Signed-off-by: Mike Rylander + Signed-off-by: Galen Charlton -25 19 src/perl/lib/OpenSRF/Server.pm +130 0 src/gateway/websocket_plugin.h + create mode 100644 src/gateway/websocket_plugin.h -commit 08ee4f993fe773e37233b139961cbcdae2fe93b8 +commit 9e455c227be32bed4a16e6dab7045b6424e2ba15 Author: Bill Erickson -Date: Mon Feb 13 16:53:59 2012 -0500 +Date: Mon Oct 29 17:27:44 2012 -0400 - Perl pipe reading overhaul : data size header - - The lockfile mechanism for preventing premature end of reads on child - processes suffers from one serious flaw: if the data to write exceeds - the pipe buffer size, the parent will block on syswrite and the service - will lock up. It's also not as effecient (for the normal case) as the - code was without the lockfile, becasue the writes and reads are - serialized. + LP#1268619: websocket gateway repairs and cleanup - This commit replaces the lockfile mechanism with a protocol header in - the data. The first X (currently 12) bytes of data written to the child - process will contain the full length of the data to be written (minus - the header size). The child now reads the data in parallel with the parent as - data is available. If the child reads all available data (in the pipe) - but not all of the expected data, the child will go back into a select() - wait pending more data from the parent. The process continues until all - data is read. + * use jsonObjectFree() on jsonObjets, not free(); + * removed some debugging logs + * accommodate API changes for Apache 2.4 + * safer logging: - This same mechanism is already used to commicate status info from child - processes to the parent. + Avoid using ap_log_rerror, in particular referencing server->request + from the responder thread, since the request_rec will be invalid after + on_disconnect is called. Signed-off-by: Bill Erickson - Signed-off-by: Jason Stephenson - Signed-off-by: Mike Rylander + Signed-off-by: Galen Charlton -49 73 src/perl/lib/OpenSRF/Server.pm -1 2 src/perl/lib/OpenSRF/System.pm +61 66 src/gateway/osrf_websocket_translator.c -commit 04558f38c1c1d314acb978a37193dacb4a6eba31 -Author: Lebbeous Fogle-Weekley -Date: Fri Jan 27 09:05:07 2012 -0500 +commit a77eb22c27183d23fb08ed40bc75469d8c54b884 +Author: Bill Erickson +Date: Fri Oct 26 15:06:13 2012 -0400 - JSON_v0 has been superseded, and it has insidious bugs anyway. - - For example, you cannot round-trip this through JSON2js() and js2JSON() - in IE8: http://paste.lisp.org/display/127338 + LP#1268619: Apache websocket translator module - This will make Evergreen's build fail until the change specified in - LP #922609 is applied. - - Signed-off-by: Lebbeous Fogle-Weekley Signed-off-by: Bill Erickson + Signed-off-by: Galen Charlton -1 1 src/Makefile.am -0 135 src/javascript/JSON_v0.js - delete mode 100644 src/javascript/JSON_v0.js +6 2 src/gateway/Makefile.am +427 0 src/gateway/osrf_websocket_translator.c + create mode 100644 src/gateway/osrf_websocket_translator.c -commit 89f41c82798dbac56716fdd5beeb6c0de3e4ce2e +commit 1dafbe7512f086a58212fcc66c07e348647f31ad Author: Bill Erickson -Date: Mon Nov 7 17:30:44 2011 -0500 +Date: Thu Sep 20 15:55:04 2012 -0400 - Sync parent/child write/read with lock file + LP#1268619: OpenSRF JS websockets plugin - Wrap parent writes to child socket and initial child reads of the - socket in file lock (via flock()) to prevent rare race condition - where child process reads to the end of the data before the parent - has written all bytes. + Adds an opensrf_ws.js handler. Requries some small modifications to + opensrf.js. Load opensrf_ws.js in DojoSRF. - This create a new lock file on the system, which resides in the same - directory as the pid files. The lock file is created and destroyed by - the opensrf perl mods at service start up and shutdown. + For now, to use, add to script: - See also https://bugs.launchpad.net/opensrf/+bug/883155 + OpenSRF.Session.transport = OSRF_TRANSPORT_TYPE_WS; Signed-off-by: Bill Erickson - Signed-off-by: Dan Scott + Signed-off-by: Galen Charlton -1 1 bin/opensrf-perl.pl.in -60 8 src/perl/lib/OpenSRF/Server.pm -3 2 src/perl/lib/OpenSRF/System.pm +1 0 src/javascript/DojoSRF.js +53 15 src/javascript/opensrf.js +104 0 src/javascript/opensrf_ws.js + create mode 100644 src/javascript/opensrf_ws.js -commit 3d089bdfd067676f99807f7cb2014e122c4dbf72 -Author: Dan Scott -Date: Mon Dec 12 13:09:13 2011 -0500 +commit cb56fd32eb43f037c4126e1398b0e9cd546d9f19 +Author: Mike Rylander +Date: Fri Jun 20 16:48:51 2014 -0400 - Update Perl OpenSRF build and tests for O:A:Validator + LP#1337401: Only care about our own processes - Kickstarted by wanting to bring OpenSRF::Application::Validator into the - MANIFEST and testing coverage, I noticed a few other files that needed - to be added to the MANIFEST as well. This gets us closer to acceptable - according to "./Build distcheck" + OpenSRF can run mutiple times, as different users, on one host. + Right now we look for all service processes, but we should only + look for our own. This patch does that. - Signed-off-by: Dan Scott + Signed-off-by: Mike Rylander + Signed-off-by: Galen Charlton -1 0 src/perl/Build.PL -22 0 src/perl/MANIFEST -6 1 src/perl/t/01-Application.t +5 5 bin/opensrf-perl.pl.in -commit 5e1fbcc1c8ae2f969dbeac93fe1da80c008ca42b -Author: Thomas Berezansky -Date: Fri Dec 9 15:19:12 2011 -0500 +commit 65ce998b02d0778541b3101379013448cba606d2 +Author: Ben Shum +Date: Fri Apr 18 16:36:38 2014 -0400 - OpenSRF Validator Service - - Add a new Validator service, and EmailAddress validators. - - The service runs a chain of one or more validators, each one being fed the - normalized output of the previous one. - - The return from each validator should be a hash of valid (0 or 1), the new - normalized output (the untouched input if invalid or nothing needed to be - changed), and if invalid an error string. Optionally, a validator can also - include an "additionals" hash of extra information to be included in the - final response. - - The complete list of validators included is: - - OpenSRF::Application::Validator::Base - The base validator. Always returns valid. - OpenSRF::Application::Validator::Invalid - Always returns invalid for testing purposes. - OpenSRF::Application::Validator::EmailAddress::Regex - Does a very basic regular expression check on email addresses. - OpenSRF::Application::Validator::EmailAddress::DNS - Uses Net::DNS to look up the domain on an email address + LP#1315525: Add trusty target and remove lucid from README - Signed-off-by: Thomas Berezansky - Signed-off-by: Dan Scott + Signed-off-by: Ben Shum + Signed-off-by: Galen Charlton -40 0 examples/opensrf.xml.example -3 0 src/extras/Makefile.install -50 0 src/perl/lib/OpenSRF/Application/Validator.pm -12 0 src/perl/lib/OpenSRF/Application/Validator/Base.pm -96 0 src/perl/lib/OpenSRF/Application/Validator/EmailAddress/DNS.pm -23 0 src/perl/lib/OpenSRF/Application/Validator/EmailAddress/Regex.pm -16 0 src/perl/lib/OpenSRF/Application/Validator/Invalid.pm - create mode 100644 src/perl/lib/OpenSRF/Application/Validator.pm - create mode 100644 src/perl/lib/OpenSRF/Application/Validator/Base.pm - create mode 100644 src/perl/lib/OpenSRF/Application/Validator/EmailAddress/DNS.pm - create mode 100644 src/perl/lib/OpenSRF/Application/Validator/EmailAddress/Regex.pm - create mode 100644 src/perl/lib/OpenSRF/Application/Validator/Invalid.pm +1 1 README -commit b6b64deb16ed3f005d64f99365b0220a82d72431 -Author: Jason Stephenson -Date: Wed Dec 7 15:08:42 2011 -0500 +commit be5c3d82ecba066b1f4b811af9a32a85eb1c6d70 +Author: Chris Sharp +Date: Sun Jan 26 10:41:31 2014 -0500 - Support installation for Ubuntu 12.04 Precise Pangolin. - - Update the README to include Precise Pangolin as a supported release. + LP#1315525: Updating Makefile.install for Ubuntu 14.04. Removing lucid support. - Update src/extras/Makefile.install to install two new debs required on - Ubuntu 12.04 alpha1. - - Signed-off-by: Jason Stephenson Signed-off-by: Chris Sharp + Signed-off-by: Ben Shum + Signed-off-by: Galen Charlton -1 0 README -15 1 src/extras/Makefile.install +12 11 src/extras/Makefile.install -commit 3a4ae77be13349fae180fdc81bcc23e5a93032b4 -Author: Dan Scott -Date: Fri Nov 4 09:42:50 2011 -0400 +commit 339ac28d47a466d2fd0009c24fe0385cb5326479 +Author: Galen Charlton +Date: Fri Feb 28 09:33:19 2014 -0800 - Add explicit chown command to README + LP#1286248: remove osrf_ctl.sh - Warren Layton noticed that there was no explicit command to change the - ownership of the files in the / directory to be owned by - "opensrf", although there was a statement that the files needed to be - owned by "opensrf". To reduce the chance of failure, add the explicit - command. + As osrf_ctl.sh was deprecated in favor of osrf_control, this patch + removes the deprecated script entirely. - TODO (for a willing volunteer): teach the installer to change the - ownership at the time the files are installed! - - Signed-off-by: Dan Scott + Signed-off-by: Galen Charlton + Signed-off-by: Bill Erickson -1 0 README +0 1 .gitignore +0 102 bin/osrf_ctl.sh.in +1 2 configure.ac +1 1 src/Makefile.am + delete mode 100755 bin/osrf_ctl.sh.in -commit a7be31f137ccf6e2f4522c9a4c690a23b5636db8 -Author: Bill Erickson -Date: Fri Oct 28 11:33:24 2011 -0400 +commit 8fb4405a2768dd752743dab71d6e2e8a50ee6cd5 +Author: Galen Charlton +Date: Wed Apr 2 15:24:06 2014 -0700 - Add SIGPIPE retry handling to child data sysread + LP#1285915: document that perl2JSON doesn't order hash keys - Similar to the SIGPIPE retry logic wrapped around the parent process' - syswrite call (for sending data to a child process), protect the child's - sysread call (as it reads data from the parent). In pre-2.0, the - sysread step was handled by Net::Server, but now we need to protect it - ourselves. + This patch documents that JSON strings returned by + OpenSRF::Utils::JSON->perl2JSON() should not be expected to have + hash keys sorted in any particular order. It also adjusts a + corresponding test case to consistently pass under Perl 5.18, which + introduces hash order randomization. + + Forcing JSON output to be in canonical form is another option, and + easily done by JSON::XS, but would add overhead. - Signed-off-by: Bill Erickson Signed-off-by: Galen Charlton + Signed-off-by: Bill Erickson -10 0 src/perl/lib/OpenSRF/Server.pm +2 1 src/perl/lib/OpenSRF/Utils/JSON.pm +5 1 src/perl/t/09-Utils-JSON.t -commit 40a753b10a3db58baa9179d75a76df1266589ea1 -Author: Dan Scott -Date: Wed Oct 19 11:39:41 2011 -0400 +commit 8a8b4cbbae62d3e927b24541f31fec93949b1752 +Author: Galen Charlton +Date: Wed Apr 2 16:05:33 2014 -0700 - LP878284: stop_osrf action should stop, not start, Perl + LP#1234816: improve const-correctness of osrfCachePutString and osrfCachePutObject - As reported by Vicent Mas to the Evergreen - developer's mailing list: + Since the cache key is not modified by osrfCachePutString and + osrfCachePutObject, this patch changes the key parameter of those + two functions from char* to const char*. It also updates one + caller osrfCachePutObject to not cast away const-ness. - """ - It seems I've found a small bug in the - /openils/bin/osrf_ctl.sh script. The line for the osrf_stop action is: + This patch has no functional impact, but enables future callers + of osrfCachePut* to pass constant strings without having to + cast away the const-ness. - "stop_osrf") stop_python; stop_c; start_perl;; - - but should be: - - "stop_osrf") stop_python; stop_c; stop_perl;; - """ - - Signed-off-by: Dan Scott + Signed-off-by: Galen Charlton + Signed-off-by: Bill Erickson -1 1 bin/osrf_ctl.sh.in +2 2 include/opensrf/osrf_cache.h +1 1 src/gateway/osrf_http_translator.c +2 2 src/libopensrf/osrf_cache.c -commit 07b5a335656be741353ab70c1d4717dacdbebc1b +commit 0d2c6d74cf60e000646e534a7682b508c84ea55a Author: Bill Erickson -Date: Tue Oct 18 09:17:10 2011 -0400 +Date: Thu Apr 10 13:27:34 2014 -0400 - Warn when sending very large messages - - Depending on configuration, messages of a certain size sent through a - Jabber server will cause the jabber server to disconnect the client. - This change allows admins to configure a message size warning threshold. - When a message meets or exceeds the size threshold, a warning is issued - to the logs with the message size (in bytes) and the message recipient. - It does not prevent the message from being delivered. It's purely - informational. + LP#1306044 Removing deprecated jabber register script - Use 1 800 000 as the default threhold. + This script is no longer user, since ejabberdctrl is used instead. + What's more, this script uses a Perl package (libnet-jabber-perl) which + is no longer available in Debian (Jessie). Signed-off-by: Bill Erickson Signed-off-by: Galen Charlton -3 0 examples/opensrf_core.xml.example -11 1 src/perl/lib/OpenSRF/Transport/SlimJabber/Client.pm +0 1 Makefile.am +0 50 examples/register.pl + delete mode 100755 examples/register.pl -commit ffb8bb73a2f505cfda9d8b97fab1f82aa3fb7097 -Author: Dan Scott -Date: Sat Sep 10 12:22:08 2011 -0400 +commit a53e3878ae172477582ae3cfe3ebd8ec9be14e65 +Author: Bill Erickson +Date: Thu Apr 10 12:05:08 2014 -0400 - Fix README typo: 'mod_offlinex' + LP#1306044 Debian Jessie Makefile.install target + + * Removes Perl Net::Jabber as a dependency. There is no Jessie package + for this and OpenSRF hasn't used it in a long time. - mod_offline is not that x-treme. + * Leaving Debian Squeeze in place for now - Signed-off-by: Dan Scott + Signed-off-by: Bill Erickson + Signed-off-by: Galen Charlton -1 1 README +1 0 README +15 3 src/extras/Makefile.install -commit 0725d1ddced0f16c351a5953f5fd3c14714cda1a -Author: Dan Scott -Date: Thu Aug 25 11:41:19 2011 -0400 +commit 2e919d795f0d6c5c17218fef68e894903b168a48 +Author: Mike Rylander +Date: Thu Mar 13 16:55:19 2014 -0400 - Don't define a variable inside a conditional block + LP#1292214: Improve docgen output - ./configure --disable-core --enable-javascript was dying with an error - due to CHECK_TESTS not being defined; move it outside the conditional - block so that we can ensure that it is defined as either yes or no. + Docgen output would be a bit more useful if it respected the formatting + (such as it is) of the signature content provided by the developer. So, + let's make that happen. - Signed-off-by: Dan Scott + Signed-off-by: Mike Rylander + Signed-off-by: Galen Charlton -8 9 configure.ac +1 1 src/extras/docgen.xsl -commit b24e90f1a1b1f2309ca3cdf0728cdd54f7822597 -Author: Dan Scott -Date: Mon Aug 22 09:49:45 2011 -0400 +commit 951d97a32db426874c4bb6314e473660d765f302 +Author: Bill Erickson +Date: Mon May 13 16:19:51 2013 -0400 - Make distro targets in README match Makefile.install + LP#1179660: remove OpenSRF.pm AUTOLOAD - Swap ubuntu-karmic for ubuntu-lucid and pull fedora14 as it is really - close to end of life. + Instead of simply producing an error message in the OpenSRF logs, calls + to nonexistent subroutines are now fatal errors which will stop code + execution. - Signed-off-by: Dan Scott + Signed-off-by: Bill Erickson + Signed-off-by: Galen Charlton -2 2 README +1 40 src/perl/lib/OpenSRF.pm