commit 0a469559782c8e79e489e3fa003f90c7c92d51bf Author: Galen Charlton Date: Thu Feb 16 15:32:13 2017 -0500 add release notes for OpenSRF 2.4.2 Signed-off-by: Galen Charlton 28 0 doc/RELEASE_NOTES.txt commit e72a15842c10d4c2288323ede92f38d4b4b41794 Author: Galen Charlton Date: Wed Feb 15 16:58:06 2017 -0500 LP#1652382: more improvements to cache key munging - teach osrfCacheRemove to clean keys - fix implict declaration compilation warning - account for fact that iscntrl('\0') returns true Signed-off-by: Galen Charlton Signed-off-by: Jeff Davis 5 2 src/libopensrf/osrf_cache.c commit c1eae17ad8b61d62ad6795ca3cd01347c39c7903 Author: Galen Charlton Date: Wed Feb 15 14:12:34 2017 -0500 LP#1652382: handle cases where supplied key is longer than 250 bytes With this patch, if cache clients want to use a key longer than the memcached text protocol limit of 250 bytes, the key is normalized to 'shortened_' + md5_hex(normalized_key). Signed-off-by: Galen Charlton Signed-off-by: Jeff Davis 10 1 src/libopensrf/osrf_cache.c 4 0 src/perl/lib/OpenSRF/Utils/Cache.pm commit b2ed8ef36baa1242448beae89ffe51a98f8175d1 Author: Mike Rylander Date: Mon Jan 30 12:54:10 2017 -0500 LP#1652382: Make use of the clean key just created Signed-off-by: Mike Rylander Signed-off-by: Kathy Lussier Signed-off-by: Galen Charlton Signed-off-by: Jeff Davis 1 1 src/libopensrf/osrf_cache.c commit f608444010fff1b4b6da06b5ec49df643218b005 Author: Mike Rylander Date: Fri Jan 27 15:25:05 2017 -0500 LP#1652382: normalization of memcache keys in C code Memcache does not allow spaces in keys, so here we will actively strip them from any key we get from a caller. Some callers are not very proactive about sending clean keys, and this patch prevents issues that can poison C-based OpenSRF service backends. Signed-off-by: Mike Rylander Signed-off-by: Kathy Lussier Signed-off-by: Galen Charlton Signed-off-by: Jeff Davis 20 2 src/libopensrf/osrf_cache.c commit da98d30ca754a5a9bacb09982f8cad9c053a3105 Author: Galen Charlton Date: Thu Dec 22 15:53:12 2016 +0500 LP#1652122: fix infinite recursion in opensrf.system.method.all Under certain circumstances, calling opensrf.system.method.all on a Perl service can result in an infinite recursion when attempting to serialize an OpenSRF::Application object to JSON. In particular, this was observed to happen when doing an introspection of the opensrf.settings service. This patch avoids the infinite recursion (and consequent memory leak) by ensuring that the 'session' key is slated for exclusion from serialization from OpenSRF::Application objects during bootstrapping. Note that the problem does not affect all Perl services; if a Perl service declares at least one streaming method, the auto-registration of the .atomic method will result in 'session'-stripping. This patch fixes a regression introduced in bug 1350457. To test ------- [1] Run 'introspect opensrf.settings' via srfsh; observe that it never returns and that the opensrf.settings drone will grow in memory sized until killed. [2] Apply the patch, then repeat step 1. This time, the request should succeed. Signed-off-by: Galen Charlton Signed-off-by: Mike Rylander 1 1 src/perl/lib/OpenSRF/System.pm commit 5bd88d39d7d22e6deee85952f1dc827c138095c4 Author: Galen Charlton Date: Fri Mar 18 10:59:11 2016 -0400 LP#1559121: remove Debian Squeeze support Now that Debian Squeeze's LTS (long-term support) period has ended, Evergreen no longer offers community support for that distribution. This patch removes references to Squeeze from the installation scripts and documentation. To test: [1] Verify that Debian Squeeze is no longer referenced in the installation documentation. Signed-off-by: Galen Charlton 0 1 README 1 14 src/extras/Makefile.install commit 65ed54c4dc713919756644d3873f8fa7d851b427 Author: Galen Charlton Date: Thu Feb 4 13:09:48 2016 -0500 LP#1350457: add test case for perl2JSONObject change Signed-off-by: Galen Charlton 4 1 src/perl/t/09-Utils-JSON.t commit 675c7a693d9a5d4f228d7b7ca5fe3b3f7fd62214 Author: Mike Rylander Date: Wed Jul 30 13:29:46 2014 -0400 LP#1350457: Pass caller's session to subrequests called via method_lookup 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. This patch also teaches OpenSRF object registration how to strip certain object members -- in particular, the session -- so that introspection continues to work. Signed-off-by: Mike Rylander Signed-off-by: Galen Charlton 9 4 src/perl/lib/OpenSRF/Application.pm 8 1 src/perl/lib/OpenSRF/Utils/JSON.pm commit b484a31c413a017c6b7409f3f101636f68c08c9a Author: Jason Etheridge Date: Tue Jul 14 14:54:27 2015 -0400 LP#1474507: fix interval_to_seconds for weeks and seconds This patch fixes an issue where OpenSRF::Utils::interval_to_seconds() was not recognizing intervals expressed as seconds or weeks. Signed-off-by: Jason Etheridge Signed-off-by: Galen Charlton 2 2 src/perl/lib/OpenSRF/Utils.pm commit 61e6732111db9389038bce1b1f6f655b619fdc86 Author: Jason Etheridge Date: Tue Jul 14 15:10:15 2015 -0400 LP#1474507: tests for interval_to_seconds Signed-off-by: Galen Charlton 16 0 src/perl/t/09-Utils-interval_to_seconds.t create mode 100644 src/perl/t/09-Utils-interval_to_seconds.t commit 8f6923efc2c632548f860a9aaabd92fdf2545437 Author: Mike Rylander Date: Thu Sep 10 16:56:13 2015 -0400 LP#1494486: Limit damage caused by dropped drone XMPP sockets It is apparently possible for drones to get into a state where their XMPP socket is closed but they don't notice. This is bad because the drone can continue to receive requests from its listener but can no longer respond to them. To limit the pain this can cause, we should kill the drone as soon as we notice this condition. To avoid overhead, this commit notices when the socket returns an error (or raises a signal, in Perl) upon write, and exits immediately. One message will be lost, but the drone will no longer be a black hole that does nothing but absorb requests it can never fill. To test ------- [1] Start an OpenSRF stack and look for a drone process. [2] Use lsof to identify which socket that drone is using to talk to XMPP. [3] Use gdb to attach to the process and close the socket, e.g., $ gdb -p $PID (gdb) p close(11) # or whatever the socket number was (gdb) c [4] Use srfsh to make requests of that service. Eventually, one of them will hit the drone. [5] Sans patch, the request will get handled by the drone, but the results will never get sent, and the drone will remain available to handle other requests. [6] With the patch, the drone will exit when it discovers that it can no longer write to the XMPP socket. Signed-off-by: Mike Rylander Signed-off-by: Galen Charlton 4 2 src/libopensrf/osrf_app_session.c 5 0 src/perl/lib/OpenSRF/Transport/SlimJabber/XMPPReader.pm