[OpenSRF-GIT] OpenSRF annotated tag osrf_rel_3_2_0-beta created. osrf_rel_3_2_0-beta

Evergreen Git git at git.evergreen-ils.org
Tue Oct 1 16:17:59 EDT 2019


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "OpenSRF".

The annotated tag, osrf_rel_3_2_0-beta has been created
        at  60d50d1436083c56d7a2ebf924be7152dc2a48e0 (tag)
   tagging  ecec8c069b7be137f0a72aa376fa37c6daa424a6 (commit)
 tagged by  Galen Charlton
        on  Tue Oct 1 16:17:42 2019 -0400

- Log -----------------------------------------------------------------
OpenSRF 3.2.0-beta
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iEYEABECAAYFAl2TtGwACgkQ+ECRQ8R3E0M7xACeOS+K0O9we+sAGscmsFV4Ww0I
+McAnRcRbdj7RZVjpy7NQ1DSr3gg/jBG
=ybb+
-----END PGP SIGNATURE-----

(no author) (1):
      New repository initialized by cvs2svn.

Ben Shum (23):
      LP#1315525: Add trusty target and remove lucid from README
      LP#1369169: Add generated README.html to the .gitignore file for OpenSRF
      LP#1369169: Standardize styling of root linux account for README
      LP#1369169: Remove trailing whitespace from apache2.conf
      LP#1369169: Add Apache 2.4 specific configuration file for websockets
      LP#1369169: Add websockets section to the OpenSRF README
      LP#1369169: Mention the requirement for valid SSL certificate
      LP#1369169: Remove hardcoded paths for OpenSRF directory
      LP#1391248: Fix NameVirtualHost warnings in websockets apache2.conf
      Docs: Keep all source syntax consistent in README
      Docs: Add [source, bash] to code blocks that were not defined in README
      Docs: Emphasize variables and paths consistently in README
      Docs: Fix mailing list link for help in README
      LP#1585041: Move debian_sys_config target for Debian distributions
      Docs: Add Xenial references in the websocket setup instructions
      Docs: Change 14.04 to Trusty in README
      LP#1603708: Remove support for Ubuntu 12.04 Precise
      LP#1672926: Disable/remove default nginx config in REAMDE steps
      LP#1708048: Add support for Debian 9 Stretch
      LP#1777180: Add zip/unzip to prerequisites
      Update README to include Bionic steps
      LP1834208 fix OpenSRF README asciidoc syntax
      LP#1835458: Add install support for Debian 10 Buster

Ben Webb (2):
      Respect DESTDIR during the build process
      LP 799718: Pass the DESTDIR variable to setup.py

Bennett Goble (1):
      LP#1002028: Cross Origin Resource Sharing for OpenSRF

Bill Erickson (130):
      Warn when sending very large messages
      Add SIGPIPE retry handling to child data sysread
      Sync parent/child write/read with lock file
      Perl pipe reading overhaul : data size header
      Perl parent/child write improvements
      Java dependencies update
      Perl libs for OpenSRF ingress tracking
      C libs for OpenSRF ingress tracking
      Set OpenSRF ingress value for srfsh/gateways
      Python libs for OpenSRF ingress tracking
      Refresh child file handles on status read
      Detect remote disconnect in Perl XMPP reader
      Prevent undef warnings on perl socket read nbytes test
      Java HTTP gateway interface
      Java gateway interface test class
      Java Gateway interface improved exception handling
      Detect and repair multipart/mixed message delivery errors
      Consolidate duplicate osrfMethodVerifyContext handler
      ChopChop is dead, long live ChopChop.
      Safer casting in java config parsing
      Prevent "uninitialized value" warnings in parameter logging
      Enable client logtrace with environment vars
      Logger.pm whitespace cleanup
      Block on recv instead of loop/polling in MultiSession
      Debian wheezy Makefile.install target
      Perl SIGHUP handling and config reloading
      Minor whitespace repairs in Server.pm
      Multisession blocking repair
      LP1198983 disable multipart/mixed for Firefox
      LP#1188195: Default per-process client locale (Perl)
      LP1204123 Set SIGCHLD handler to DEFAULT for children (perl)
      LP1204123 SIGTERM causes graceful shutdown (Perl)
      LP1204123 SIGUSR1 causes router unregister (Perl/C)
      LP1204123 SIGTERM graceful shutdown (C)
      LP1204123 opensrf.settings reload file option
      LP1204123 SIGUSR2 causes router re-register (Perl/C)
      LP1204123 Don't treat interrupts as errors
      LP1204123 osrf_ctl.sh supports sending signals
      LP1204123 Improved per-service control (C/Perl)
      LP1204123 Remove osrf_ctl debug echos
      LP1204123 opensrf-perl.pl expansion / replace osrf_ctl
      LP1204123 opensrf-perl.pl expansion continued
      LP1204123 opensrf-perl.pl improve logging
      LP1204123 install opensrf-perl.pl as osrf_control
      LP1204123 osrf_control improved sample usage
      LP1204123 more osrf_ctl/control script cleanup
      LP1204123 more osrf_ctl/control script cleanup
      C SIGHUP handling and config reloading
      LP1204123 osrf_control doc updates
      LP1204123 osrf_ctl.sh improvement
      LP#1204123 osrf_control --diagnostic
      LP#1204123 osrf_control --diagnostic improvements
      LP#1204123 osrf_control warn and exit on bad host
      LP#1204123 repair makefile.am warning
      osrf_control --start/stop/restart-services
      OpenSRF client disconnect robustification (Perl)
      OpenSRF client disconnect robustification (Perl)
      recover osrf_control router start
      recover osrf_control router start
      osrf_control router-de/re-register and reload commands
      osrf_control router-de/re-register and reload commands
      LP#1066131: srfsh.py should not require opensrf.settings
      LP#1284137: Avoid WARN logging on router shutdown
      LP#1179660: remove OpenSRF.pm AUTOLOAD
      LP#1306044 Debian Jessie Makefile.install target
      LP#1306044 Removing deprecated jabber register script
      LP#1268619: OpenSRF JS websockets plugin
      LP#1268619: Apache websocket translator module
      LP#1268619: websocket gateway repairs and cleanup
      LP#1268619: track websocket_plugin.h locally until replaced by makefile.install process
      LP#1268619: websocket JS additions
      LP#1268619: websocket translator
      LP#1268619: websocket; docs, more memory mgmt
      LP#1268619: websockets; free temporary osrf msgs; minor comment change
      LP#1268619: websocket gateway: improved memory mgt; logging
      LP#1268619: Sample Websocket translator Apache 2.2 configuration
      LP#1268619: temporary websocket installer README
      LP#1268619: websocket: do not disconnect ws() on osrf disconnect message
      LP#1268619: websockets: support WS via shared web workers
      LP#1268619: websocket translator idle timeout / graceful shutdown
      LP#1268619: websocket JS libs: reconnect and auto-connect
      LP#1268619: websockets : added config docs to install readme
      LP#1268619: websocket : more JS api docs
      LP#1268619: websocket : apache gateway minor fixes
      LP#1268619: websocket: avoid module auto configuration
      LP#1268619: websocket : add JS lib to makefile
      LP#1268619: websockets : gateway log inbound messages at internal
      LP#1268619: websockets: initial C libs api_level support
      LP#1268619: websockets: shared worker path; JS api_level
      LP#1268619: websockets: remove single-tab JS WS implementation
      LP#1268619: websockets: apache conf -> info logging
      LP#1268619: websockets : additional apache config docs
      LP#1268619: websockets: README typo repairs
      LP#1268619: websockets: apply syslog name in gateway
      LP#1268619: websockets: gateway code repairs & confing options
      LP#1268619: websockets: auto-upgrade to shared workers; SSL-always
      LP#1268619: websockets: detect connectedness of JS default sockets
      LP#1268619: websocket: avoid sharedworker for firefox 29
      LP#1268619: JS libs capture all method errors
      LP#1268619: JS status codes can come across as numbers; stringify for match
      LP#1268619: update JS/WS/SSL code comment
      LP#1268619: disable shared workers pending browser issues
      LP#1316245: JS now uses browser-native JSON routines
      LP#1343578: Perl/C syslog "logtag" additions.
      LP#1341687 listeners log/drop XMPP error msgs
      LP#1383828 Jessie/Trusty installer Apache "mpm" repairs
      LP#1418613 per-tab websocket send() JS thinko repair
      LP#1473479 Syslog configuration adoption
      LP#1612771: Perl max_chunk_size additions
      LP#1612771: set Perl / C max_chunk_size default sizes
      LP#1612771: implement C max_chunk_size server support
      LP#1638651: example Nginx websockets/http(s) proxy config
      LP#1667091 Remove non-SSL websockets sample configs
      LP#1711194 osrf_config --diagnostic reports max-children
      LP#1697029 Log and exit on write to dead child
      LP#1709710 Count Perl chunk/bundle sizes in bytes
      LP#1746577 Websocket responder exits on jabber disconnect
      LP#1744158 Websocket proc exits on ejabberd disconnect
      LP#1762815 Empty client TZ defaults to server TZ (Perl)
      LP#1777180 Websocketd gateway and test scripts
      LP#1703411 XMPP opensrf sub-element repairs
      LP#1703411 XMPP opensrf element make check repairs
      LP#1776510 JS libs handle transport errors
      LP#1711145 NGINX sample config security improvements
      LP#1711145 NGINX sample websocketd configs
      LP#1684970 Translator compatible with mod_remoteip
      LP#1706147 Perl Force-Recycle drone option
      LP#1803182 Websocketd graceful shutdown support
      LP1834208 Removing apache2-websockets
      LP1830642 Remove variable args from md5sum()

Chris Sharp (13):
      LP#1315525: Updating Makefile.install for Ubuntu 14.04. Removing lucid support.
      LP#1551090: Updating Makefile to accommodate ubuntu-xenial target.
      LP#1551090: Adding apache2 package to Makefile.install deb list.
      LP#1551090: Adding necessary connectivity for xenial deb installation.
      LP#1551090: Since we move apache to the "install_extra_debs*" targets,
      LP#1551090: Adding apache2-dev dependency to xenial and fixing whitespace
      LP#1670045 - Correct Nginx README instructions
      LP#1690206 - remove check of httpd.conf from OpenSRF Makefile.install
      LP#1243841 - Wrap truth test using "=" in an extra set of parens.
      LP#1243841 - Quiet unused return value warnings.
      LP#1243841 - Quiet unused return value warning in srfsh.c
      LP#1243841 - Quiet wrong format warnings during make install.
      Add support for Ubuntu 18.04 Bionic Beaver to Makefile.install

Dan Scott (58):
      Teach Buildbot to poll the new git repos
      Add a workdir for each GitPoller source repository
      Remove 'branches' reference in Buildbot branches test
      Typo fix: deprecasted -> deprecated
      Define version number in one place
      Comment on why we're pulling in version.m4
      Specify explicit branches for each builder, lazy-style
      Teach Perl Makefile to build Build for every target
      Turn on email and IRC notification about build breaks
      Move the buildbot workdirs to a non-volatile directory
      Change "Scheduler" to "SingleBranchScheduler" per 0.8.4
      Add a 0 to max_stanza_size in README instructions
      Make distro targets in README match Makefile.install
      Don't define a variable inside a conditional block
      Fix README typo: 'mod_offlinex'
      LP878284: stop_osrf action should stop, not start, Perl
      Add explicit chown command to README
      Update Perl OpenSRF build and tests for O:A:Validator
      We're not in Subversion anymore, Dorothy
      Update README to match Evergreen's format
      Remove reference to Fedora specific version in prereq installer
      Update max_user_sessions suggestion to 10000 to match wiki
      Include explicit instructions to copy the opensrf config files
      Copy opensrf_core.xml.example to a clean opensrf_core.xml file
      Add trailing period, "localhost" to ejabberd.cfg example
      Updated buildbot.cfg for current build environments
      Switch to autoreconf instead of autogen.sh
      Fix buildbot configuration
      Name the bootstrapping steps in buildbot
      autotools - do not explicitly include m4 directory
      Remove GNU default INSTALL file
      Change Java deps.sh to include . in CLASSPATH
      Clean up root directory: INSTALL, .gitignore, autoreconf
      Minor cleanups to Java dependency build process
      Revert inadvertently introduced debugging code
      .gitignore - ignore more built stuff in fewer lines
      LP# 953299 - Prevent get/set of invalid cache keys
      LP954059: Silence uninitialized var warning
      Remove comparisons that can never evaluate to true
      Remove Evergreen 2.0 from automated builds
      Update OS support in README / Makefile.install
      Add "tar" to base prereqs to appease autotools
      Bump version numbers to help with library compatibility
      No, Ubuntu Hardy is not well-tested for 2.1.0
      Remove the reference to Evergreen in the README
      Use apt-get instead of aptitude on Debian / Ubuntu
      Purge the wildly out-of-date Roadmap document
      Bump libopensrf version-info revision and age
      Bump release numbers, create 2.1.1 change log
      Whitespace in OpenSRF/System.pm
      Bump version numbers for 2.1.2
      Add 2.1.2 ChangeLog entries
      Typo in configure.ac: 'framweork'
      Support Apache 2.4 client IP address lookups
      Test for Apache executable in sbin dirs
      Stop using a non-standard default PREFIX for installs
      LP#1409055 Support specific protocols for OpenSRF gateway requests
      Remove Fedora as a well-tested target

Dan Wells (5):
      Protect gateway from format-string crashes in data
      Log redaction for sensitive input values, C side
      Log redaction for sensitive input values, Perl side
      Protect against empty/invalid log_protect sections
      LP#1635737 Add optional context to interval_to_seconds

Galen Charlton (59):
      LP# 953299 - defend against null and zero-length cache keys
      fix up index/position type for calls of various osrfList* functions
      LP#1132247: fix compilation warnings in C test cases
      LP#1101254: remove memory leak in HTTP translator
      LP#1162907: don't require installing RPC::XML
      LP#1188195: add tests for setting default client locale
      LP#1224647: remove two invalid tests
      LP#1257264: make test cases for JSON::XS Boolean-ness more generic
      LP#1257264: make test cases for JSON::XS Boolean-ness more generic
      LP#1180849: test case - ignoring subrequest responses after respond_complete()
      LP#1180849: test case - ignoring subrequest responses after respond_complete()
      typo fix
      x
      fix typo and remove repeated word
      Merge branch 'rel_2_3'
      LP#1170484: log failure to load library for C app as an error
      LP#1155446: add Debian/Ubuntu deps required for Python tests to pass
      LP#1286198: use --ignore-orphans rather than --are-there-no-prisons
      LP#1234816: improve const-correctness of osrfCachePutString and osrfCachePutObject
      LP#1285915: document that perl2JSON doesn't order hash keys
      LP#1286248: remove osrf_ctl.sh
      LP#1343578: document <logtag> in the example opensrf_core.xml
      Revert "LP#1350457: Pass caller's session to subrequests called via method_lookup"
      LP#1002028: support CORS for HTTPS
      LP#1002028: set Access-Control-Expose-Headers
      LP#1436047: make srfsh --safe act as if "! command" doesn't exist
      LP#1461625: ensure srfsh doesn't close STDOUT prematurely
      LP#1152272: do not log batch invocation of srfsh in .srfsh_history
      LP#1350457: add test case for perl2JSONObject change
      LP#1559121: remove Debian Squeeze support
      LP#1612771: don't adjust max_stanza_size during installation
      LP#1612771: update protocol documentation
      LP#1612771: fix error in POD
      LP#1612771: add release notes
      LP#1631522: include example of ->dispatch in example app
      LP#1631522: dev doc now describes ->dispatch
      LP#1631522: add release notes for ->dispatch
      LP#1612771: fix chunking for atomic C methods
      LP#1382038: adjustments to download instructions
      LP#1382038: clarify one step of installing websockets support
      LP#1638651: add instructions for using NGINX
      LP#1648188: example HAProxy configuration
      LP#1652122: fix infinite recursion in opensrf.system.method.all
      LP#1652382: handle cases where supplied key is longer than 250 bytes
      LP#1652382: more improvements to cache key munging
      LP#1666706: add --with-websockets-port configure option
      LP#1711194: avoid division by zero errors
      LP#1709710: write unit tests for osrfXmlEscapingLength()
      LP#1717350: fix chunking messages sent from Perl services
      bump up version numbers in master to reflect 3.0 as next major release branch
      and continue to bump up version numbers
      LP#1243841: quiet a misleading indentation warning
      LP#1729610: make it possible to set max_backlog_queue in opensrf.xml
      LP#1729610: return new OpenSRF status if backlog queue fills up
      LP#1729610: extend backlog queue to C apps
      LP#1824181: add test cases
      release notes for OpenSRF 3.2-beta
      bump up version numbers for 3.2.0-beta release
      update ChangeLog for 3.2.0-beta

Graham Billiau (2):
      LP#1704116: fix intermittant failure of parallel building
      LP#1704090: ensure make install respects DESTDIR

Jason Boyer (1):
      LP1834208 Rearrange proxy instructions to reduce repetition

Jason Etheridge (3):
      silence some uninitialized warnings
      LP#1474507: tests for interval_to_seconds
      LP#1474507: fix interval_to_seconds for weeks and seconds

Jason Stephenson (17):
      Support installation for Ubuntu 12.04 Precise Pangolin.
      Fix installation on Ubuntu Precise.
      Move setting of OpenSRF::Application::shared_conf to load_bootstrap_config.
      Change OSRF_JAVA_DEPSDIR so building Java just works.
      LP#1551090: Enable mod_perl2 on Ubuntu 16.04 (Xenial Xerus).
      LP#1551090: Update README for Ubuntu 16.04 (Xenial Xerus).
      LP 1703958: Update Websockets Intructions for Debian Jessie
      LP#1708048: Fix ld problems by renaming libraries.
      LP1340982: Ignore both 'comment' and '#comment' nodes in Settings Parse.
      LP#1243841 - Quiet additional Make warnings and some code cleanup.
      LP#1243841 - Quiet remaining Make install warnings.
      LP#1777180 Update README for websocketd
      Lp#1718459: Remove Debian 7 Wheezy installation support.
      Reorder Ejabberd configuration steps for Ubuntu 18.04.
      Lp 1808580: Remove Installation Support for Ubuntu 14.04
      LP1834208 Remove example Apache Websockets configuration
      LP1834208 Update proxy example configuration files

Jeff Godin (2):
      Add some additional boolean-related JSON tests
      Add some additional boolean-related JSON tests

John Merriam (2):
      LP#1824181: Allow 1st arg to logger to be string or subroutine
      LP#1824184: Change potentially slow log statements to subroutines

Josh Stompro (2):
      (doc) Reorder changes to ejabberd.cfg in install instructions
      LP#1445503 - Updated Ejabberd setup steps for Ejabberd 14.x for Debian Jessie

Lebbeous Fogle-Weekley (5):
      JSON_v0 has been superseded, and it has insidious bugs anyway.
      When running methods for clients, send plain warnings to "real" logs
      LP#1286198: When doing router-specific things, we don't need as much configuration loaded
      LP#1286198: Offer ability to ignore what seem like orphan processes when starting things
      LP#1286198: Teach osrf_router to (optionally) write its own PID files

Mike Rylander (31):
      LP#1257264: Use the built-in JSON-y test for bools
      LP#1257264: Use the built-in JSON-y test for bools
      Protect subrequests from post-complete messages
      Protect subrequests from post-complete messages
      LP#1292214: Improve docgen output
      LP#1337401: Only care about our own processes
      LP#1343578: Add support for log tagging
      LP#1350457: Pass caller's session to subrequests called via method_lookup
      LP#1436047: Allow disabling of "bang commands" in srfsh
      LP#1494486: Limit damage caused by dropped drone XMPP sockets
      LP#1350457: Pass caller's session to subrequests called via method_lookup
      LP#1485371: Use client-supplied TZ
      LP#1485371: Release notes for TZ handling in OpenSRF
      LP#1631520: configure install location of Perl modules
      LP#1612771: bundling and chunking
      LP#1612771: C support for receiving chunked responses
      LP#1612771: Add chunking support to JS implementation
      LP#1631522: Dispatch mode for method_lookup subrequests
      LP#1655449: Bundling/chunking limits for SubRquests
      LP#1652382: normalization of memcache keys in C code
      LP#1652382: Make use of the clean key just created
      LP#1616501: teach mod_perl handlers how to detect client disconnects
      LP#1635737: Unit tests for DST and date math
      Revert "LP#1635737: Unit tests for DST and date math"
      Revert "LP#1635737 Add optional context to interval_to_seconds"
      LP#1709710: Make chunk sizing smart about XML quoting
      LP#1702978: memcache Get methods use key as va_list format
      LP#1703411: Move OpenSRF XMPP attrs to subelement
      LP#1729610: Allow queuing (for a while) during child backlog
      LP#1729610: Add a service useful for testing behavior in slow response conditions
      LP#1729610: Add some debug/internal logging to backlog queue

Pasi Kallinen (1):
      LP#1208860: fix sprintf without format string.

Remington Steed (2):
      LP#1382038: Add instructions for implied download/unpack step
      LP#1729610: Fix incorrect param description

Thomas Berezansky (3):
      OpenSRF Validator Service
      Stop warning about missing parentheses...
      Nagios Example Plugin for monitoring services

dbs (240):
      Fix some typos found while trying to improve osrf error messages.
      Add -D_LARGEFILE64_SOURCE flag to CGLAGS to avoid compile problems on 32-bit platforms.
      More typos, as I read through logs.
      Enable -l flag to work without an argument
      I'm pretty sure we want $log here, as in all the other calls. Perhaps we can get rid of the $logger import in the header?
      Install the JavaScript libraries into an OpenSRF library, in prepration for OpenSRF applications being able to use one known good JavaScript library for OpenSRF communication. (I'm looking at you, EG, and your two copies of JSON.js)
      Start installing the Python libraries as well. Destination directory is named python25 because Python3000 is just around the corner...
      Deliberately break applications relying on pre-OpenSRF 1.0 behaviour. JSON_v0.js represents "legacy" JSON format, while JSON_v1.js represents "modern" JSON format.
      Add a top-level javascript-install target
      Make Logger a little more robust by setting a default loglevel and ensuring that we don't try to regex an undefined value.
      Convert a few routine log messages from error to info level.
      Avoid an "undefined variable" Perl warning when we receive no parameters.
      Enable srfsh.py to load with the standard .srfsh.xml (no plugins)
      Correct name of prototype for osrf_message_get_last_locale()
      Format the date and time with leading zeroes to be easy on the eyes, and easier to parse.
      And let's not double-log messages. Sigh.
      Minor code cleanup: Avoid stepping on str's toes by renaming the variable 'str' to string. Explicitly call osrf.json and str methods rather than polluting global name space.
      This file will hold only OpenSRF XML functions. osrfObjectFindPath will be moved to the net_obj module.
      xml.py conflicts with other xml module namespace (boo). Renaming.
      Move towards Pythonic API style conventions (as informed by pylint)
      Further pedanticize logging method names.
      Add some basic locale support. Revert a dailyWTF that caused massive CPU & memory consumption.
      Add rudimentary locale support to srfsh.py
      Continue the march towards a pedantic 1.0 python API.
      Use distutils to install Python into the standard location Correct a syntax error in http_translator.py
      Enable Python build with regular user to avoid perm problems at clean time.
      Switch to setuptools to enable dependency installs as well
      Bootstrap setuptools, drop unnecessary directory metadata
      Bootstrapping doesn't work as desired on systems that already have setuptools
      Add a build flag for Python modules
      Make cleaning in Python dir optional as well, to avoid problems with missing setuptools
      Revert Gentoo changes (sigh)
      Add dnspython, libxml, and libxslt1 dependencies on behalf of pyxmpp
      libxml2 and libxslt1 Python modules are abnormal - remove them from requires list We'll document how to install these as system packages instead
      Set the Makefile shell to bash via the Makefile SHELL variable
      x.y.z version numbering seems to make setuptools happier... okay
      Make the path to opensrf_core.xml argument optional, with a default value based on the path used to invoke osrf_ctl.sh
      Bail with a reasonable error message if OPT_CONFIG does not exist
      Overcome old setuptools' inability to convert FTP listings to URLs with a direct URI for python-memcached
      Remove <domains> element - breaks gateway. Clean up whitespace, add modelines, and fix typo. Bump version of opensrf.xml to 0.0.3
      This could have been a puzzling typo
      Another potentially annoying typo
      Python is quickly becoming a requirement, not an option. Let's set the default accordingly.
      Prepare to rename this DojoSRF.js (avoiding code change and name change out of habit)
      What was OpenSRF.js, is now DojoSRF.js - and there was much rejoicing from the Mac-heads
      Patch from Kevin Beswick to use autotools for OpenSRF configuration and build
      Patch from Kevin Beswick (kbeswick00 at gmail.com) to address various problems with the autotools:   * src/libopensrf/Makefile.am:     * Fix typo for -I (includes) vs. -L (linking libraries) compile option   * src/Makefile.am:     * Propagate NDEBUG compile flag to all other makefiles     * Create target directories     * Set directories in example config files to match configured options   * configure.ac:     * Set default prefix to /opensrf/ instead of /openils/   * bin/osrf_config.in:     * Add --localstatedir option for osrf_config     * Correct output value for --apxs   * bin/osrf_ctl.sh     * Set default PID dir to localstatedir rather than sysconfdir   * Makefile.am:     * Propagate NDEBUG compile flag to all other makefiles     * Remove explicit rpath option, automake will figure that out for us (supposedly)   * examples/opensrf_core.xml.example, examples/opensrf.xml.example, examples/srfsh.xml.example:     * Set directories in example config files to match configured opti
 ons
      Change values of default directories in config file in installed files rather than in tree
      Switch to 'localhost' and standard port for memcached Fix trivial typo in PID name
      autogen.sh needs to be executable
      Link osrf_json_gateway to objson and opensrf libraries the autotools way
      A little more autotools love:   * Avoid the use of tmp dir by using noinst_ prefix for timejson   * Remove DEF_LDLIBS usage (it enabled compiling, but did not link to the     libraries) and replace with specific LDADD and LIBADD options
      Linking:   * automake automatically figures out many linking directories;     remove explicit linking options for . / .libs TMP files:   * automake automatically creates a unique directory within TMPDIR;     remove intermediate /opensrf/ directory (which causes problems for make clean)
      Set default for TMP to /tmp (autotools creates its own subdirectory)   * Ideally this would check for a user's TMPDIR env variable and use that instead
      Enable libtool to work its magic and install versioned libraries
      opensrf.settings is stateless; having the wrong setting here causes great agony
      Merge the following patches from Kevin Beswick:   * fixed location to copy apachetools.h from ...   * another typo...   * fixed directory error in copying of header file.   * move one more copy instruction for a header file.   * create the perldir and jsdir   * changed the place where headers are copied... fixed an error which caused them to be copied wrong.   * fixed a capitalization typo issue in src/Makefile.am   * updated opensrf.xml.example to use C math and dbmath implementation rather than Perl   * fixed make distcheck problems -- builddir needed to be changed to srcdir   * fixed directory replacement in .c file problem stopped the command added in the previous revision from running multiple times, fixed the location of the file to execute the command on.   * changed where the directory replacement happens for osrf_json_gateway.c (it was after it was compiled rather than before)   * corrected another error with installing header files ( can't install directories recursiv
 ely through the 'prefix_PRIMARY = files' apparently)   * went back to old way of copying perlmods and javascript. it will still be included in dist due to EXTRA_DIST in root makefile   * fix install of src/javascript and src/perlmods   * nobase_dist_lib_DATA defined twice... oops!   * fixed problem with order of execution of targets (install-data-local was being executed before files were copied. resulted in an error)   * fixed make dist, and changed ways that files are copied to their installed locations   * fixed path substitution for the rest of the files with hardcoded paths to ensure correct default functionality of opensrf
      Cheap hack to enable kbeswick's cheap hack to get opensrf-c automake probably gives us a better way to do this, but hyphens are pesky
      Commit autotools patch from Kevin Beswick (adjusted slightly for Bill's objson API compatibility layer removal)
      Fix for installing gateway and translator (thanks to Kevin Beswick)
      Give Apache modules the support they need to work Push the apxs compile stage into the local install steps as it seems to require root privileges to write during build
      Use a slightly more robust scheme for setting OpenSRF locale in DojoSRF.
      Apply patch from Kevin Beswick: "add the new opensrf-perl.pl script to the autotools build for OpenSRF"
      Restore RPATH so that we do not need LD_LIBRARY_PATH messing with our environments
      Log the locale for each request in the activity log
      Typo - because typos in error messages just make me angry when I'm beating my head against a debugging problem
      Provide more command line help for login in srfsh
      Let's check in the default INSTALL file to start with, and customize from there. Lazy, lazy dbs.
      Check in a real file, not a link. Sheesh.
      Put a more real README in place
      Might as well point to the latest Makefile.install
      Disable Python by default as it is not currently required
      Make the option help tell the truth
      Correct configure options in install README
      Hey, we need to adjust the system's dynamic library path here
      Minor typo (remove redundant "change this")
      Use the standard memcached port in example config
      Document the canonical hostname determination method for Linux (And fix a couple of annoying typos to boot)
      opensrf.settings needs to be stateless for a stock install
      Libraries are currently built as osrf_math.so and osrf_dbmath.so rather than lib*
      Fix build of OpenSRF Python support: we cannot use a fully-qualified pathname for packages and scripts vars
      Add a basic Python client example
      Add a prerequisite installer for OpenSRF (carved out of the Evergreen installer)
      Flesh out README with standalone install instructions
      Clean up the source tree a little more:   * Delete setup.py.in (as we're not modifying it)   * Make math_client.py be modified with SYSCONFDIR location per other scripts     (although slightly longer term we'll need to stop modifying all of these     in place, because that doesn't work after the first ./configure run)   * Add a few files to automake's tracking so that make dist is a little happier
      Replace in-place modification with built files; enables one to re-run configure multiple times
      dokuwiki-doc-stubber.pl is generated rather than modified in place
      Add notes about CPAN configuration, per wlayton's recommendation
      Force Class::DBI install, as dependencies have started making test t/11 (triggers) fail; We don't use trigger support in Class::DBI, so forcing the install should be okay.
      Correct syntax for forcing Perl modules
      Minor updates for prereq makefile
      Minor typo fix
      Cheap hack to enable OpenSRF to build on recent glibc systems (already in use in src/libopensrf/osrf_system.c) Seems to stem from HOST_NAME_MAX moving from /usr/include/sys/param.h to /usr/include/bits/local_lim.h
      Continue factoring out the Evergreen prerequisites from OpenSRF prereq installer
      Let's remove one step from getting OpenSRF running out of the box; give the persistence database a real default location
      Refer to Intrepid, not Ibex (to be consistent with Gutsy and Hardy)
      Merge patch from Scott McKellar for better Unicode handling
      It's so alluring to install packages instead of compiling from source, except when the packaged versions are broken in crucial ways. Argh.
      wlayton found a bad search and replace for ibex -> intrepid - thanks!
      Use an explicit shell (bash) to avoid complications on systems with different default shells
      Cover the developer case for bootstrapping the source
      libgcrypt-dev and libgdbm-dev are dependencies for XML::LibXSLT
      Update README to cover new Makefile.install targets, as well as optional language support at ./configure time.
      Broader search'n'replace for LOCALSTATEDIR
      Sync up the sample bootstrap conf from rel_1_0 - more explicit public vs. private
      Sync up README with rel_1_0 - cover multidomain configuration
      Debian and Ubuntu both want libgrcypt11-dev explicitly specified
      So, djfiander says "fix the code so it's not case-sensitive", so this seems to fix it. OpenSRF locale gets xx-YY, even though Dojo locale is xx-yy.
      dojo.locale is the preferred method of determining Dojo's current locale; avoids having to explicitly set djConfig.locale
      let's avoid creating double-hyphened locales, too
      Bug in CentOS prerequisite installer - thanks Carl T. Miller!
      Remove old install target for CentOS - thanks Carl T. Miller!
      Non-Mozilla browsers want an explict dojo.declare() for a given namespace. Partially addresses http://svn.open-ils.org/trac/ILS/ticket/40
      OpenSRF r1692 + OpenILS r12809 broke the Evergreen build; this fixes it
      Use autotools a bit more to our advantage:   * In osrf_ctl.sh, use the configured location for osrf_config by default   * Differentiate between prefix and exec_prefix to respect configure options   * Make configure output slightly more consistent
      Use autotools to set the default values in opensrf-perl.pl to what was passed in to ./configure
      Add a linefeed to the Perl "print hostname" command
      Use working Perl syntax in example print hostname command.
      Make building & installing the core components of OpenSRF optional.
      W h i t e s p a c e matters when defining automake targets
      And place headers in /prefix/include/opensrf/ again, fixing regression to /prefix/include/
      Let's give OpenSRF a spin on Ubuntu Karmic
      Add a '-l' option to treat the hostname as 'localhost', to match osrf_ctl.sh.
      Chop chopchop out of the default make / install target
      Clean up and clarify configure help and messages a wee bit
      Improve the 'help' output for srfsh:   * Document the method-name parameter for the introspect command   * Document the currently supported srfsh variables   * Reorganize the help slightly to place more emphasis on     introspect and request and cut down on some of the blank lines.
      Patch from Jeroen van Meeuwen (Fedora Project) <kanarip at fedoraproject.org> to use $(APXS2)
      Partial fix for launchpad bug 489294: OpenSRF seems to depend on explicit --prefix configure option
      Futher cleanup for autoconf substituted variables
      Transition from libmemcache to libmemcached - an actively maintained memcached client library.
      So. libmemcached has only been packaged on really fresh distros. Install from source elsewhere.
      Remove vestigial TODO now that it is TODONE
      Address long-standing typo: clense_ISO8601
      Get on board the typo train - woo woooooo!
      Prevent WebKit-based browsers (Chrome and Safari) from requesting multipart
      Add an example Apache virtual host configuration and curl script for testing the math service
      Provide a thread if the translator wasn't passed one in the request headers
      Forward-port Dan McMahill's portability patches r1907 and r1908
      Forward-port r1908 + r1914 from rel_1_2 to improve portability without breaking
      Forward-port r1919 from rel_1_2 to prevent Internet Explorer from making multipart-mixed-replace calls
      Ensure target JavaScript directory is created before copying files into it
      Simple demo of text services; returning a string, an array, a hash
      Apply patch from Lee Dickens <ldickens at esilibrary.com> to add support for RedHat/CentOS
      Forward-port r1943: install packaged DateTime Perl modules instead of CPAN
      Gutsy is way out of support, pull it from the list
      Remove Ubuntu Intrepid support - EOL is this month (https://wiki.ubuntu.com/Releases)
      Make it possible to install just OpenSRF Python with ./configure --disable-core --enable-python
      First rough attempt at Fedora 13 support
      Add in a few dependencies for Fedora 13
      A few more Python dependencies that we don't need to compile
      Teach autoconf about Fedora-ish default locations
      Apply patch from Lee Dickens <ldickens at esilibrary.com> for better RHEL5/CentOS prereq support
      Rename example Apache configuration file to include ".conf" suffix
      Merge updated Makefile.install patch from Lee Dickens <ldickens at esilibrary.com>
      Remove cruft - unused definitions of DEF_RECV_TIMEOUT and DEF_QUEUE_SIZE
      Move on up to Lucid; drop Karmic along the way
      Recent testing has been with libmemcached 0.40; bring that into line
      Typo fix to display all OpenSRF methods: sysemt -> system
      Teach opensrf-perl.pl the same PID directory as osrf_ctl.sh
      Whitespace / description cleanup
      First cut at adding Debian Squeeze to OpenSRF prerequisite installer
      Make log length in Perl logger a configurable value to assist debugging
      Make the names of the rules for installing extra Squeeze debs line up
      Get the extra_debs into Squeeze as well; fix a typo in libmemcached-tools
      Update the manifest for Perl modules to avoid build warnings
      Bump trunk version number for OpenSRF up to 1.8.0; better than 1.4.0.
      Work around a Net::Domain bug that can result in fqdn's like foo.example.com,bar.com
      Make opensrf-perl.pl handle missing configuration for services more gracefully
      Add a streaming version of the split() method in simpletext example
      Add a Python and curl example of invoking the Perl simpletext services
      Minutes and months were reversed in Python logging timestamps
      More debuggery for the spawning of child processes
      Fix daemonize problem that surfaced in start_all
      Make pylint happier with PEP8-compliant argument name
      Reference constants properly
      Typo: Pass in the array of servers to the memcached client if we have one
      Typos: s/wait_for_child/try_wait_child/ and s/min_childen/min_children/
      Try not to stomp on global variable names and built-ins, add docstrings
      Give opensrf.py reasonable defaults for options
      Make start_all automatically daemonize services
      Assign, don't test equality (thanks berick)
      Enhanced do_start() implementation in Python management script
      A solution for starting all Python services: make sh do the work
      osrf.json clean up
      Commit some unit tests for Python osrf.json module
      Add the sanity-saving step of a munged PERL5LIB to the README
      Use the same PID directory as the opensrf-perl.pl and opensrf.py scripts
      If an alternate config file is pointed to in osrf_ctl.sh, respect it
      Limit list of Python services to those within the domain-specific activeapps section
      Lenny needs zlib1g-dev package to install XML::LibXML and others
      Prepare for version 2.0.0 with versioning for 2.0.0
      Apply patch for dnsmasq documentation
      Apply libtools versioning to OpenSRF c-apps as well
      Remove extraneous line for dnsmasq / Python
      Straighten out -f / -d flag confusion in libmemcached prerequisite
      Remove max_requests config stanza from C language implementations in example config
      Clean up Python server implementation, guided by pylint
      Add hints to increase max_children config variable if we're hitting the maximum
      Get that brace back in the right place
      Trivial typo fix (also tests OpenSRF buildbot)
      Set the correct number of expected tests so that we don't fail 100% of the time
      OpenSRF::UnixServer doesn't live here any more
      Check in a sample buildbot configuration file for OpenSRF
      buildbot configuration: add mail notification, explicit builder name
      Try sending failure notification to the -dev list
      Add OpenSRF rel_1_6 and rel_2_0 builds to the OpenSRF build slave
      Correct copy/paste error in Build.PL metadata
      We're not just OpenSRF trunk, we've got other branches
      To specify trunk in the ChangeFilter, use branch=None
      Create a function for explicit trunk changes (shouldn't be necessary, but...)
      Use an Exporter-approved version number (only one decimal place)
      Whitespace consistency (tabs for Makefiles I guess)
      Add Evergreen to the buildbot configuration
      Resolve encoding problem found by attempting to register patrons with Unicode names
      Recommend Fedora 14 as F13 goes out of support in a few months
      Distinguish between the projects being built (duh)
      Coerce the weird test env for MFHD into working inside buildbot
      Avoid running Perl unit tests when our branches have them not
      Syntax, baby, syntax (for the buildbot)
      The syntax fix, it is wafer-thin; just one more!
      Rather than specific branches, test for the existence of the directory
      Fix reversed logic in test for Perl tests. Oh the irony.
      No mas. dir existence checks were checking buildmaster, not slave
      Add GPLS' buildslaves to the mix (YAY)
      Define the builders and give them a slot for username/password
      Forward-port AsciiDoc-ized README from 2.0.0-rc2
      Run OpenSRF JavaScript through jslint for a light cleanup
      Improved PID file handling in osrf_ctl.sh
      Add DOH-based unit test harness for OpenSRF JavaScript
      Get more DRY; generate builders from a small list of branches and distros
      A few more tests for JSON_v1.js
      Give Python services introspection methods matching C and Perl
      Make javascript unit tests more granular to ease tracking down errors
      Handle the common NXDOMAIN problem with Python a bit more gracefully
      Sidestep JSON object ordering in unit tests
      Add a C unit testing framework and tests for OpenSRF
      Add Check dependencies for Fedora
      Add Python unit testing and coverage report to "make check"
      Fix unit tests for Python in a twistd instance
      Inline TestObject for net_obj_test.py as well

erickson (944):
      altered makefile, header includes
      altered makefile, header includes
      altered header includes
      added child killing code
      slightly more clear log message
      added new_message_from_xml function
      updated to work with latest message code
      removed Auth.pm include
      changed OpenILS to OpenSRF
      changed logger include
      *** empty log message ***
      updating to work with the new cvs layout
      making to work in new environment, added 'system_client' login for system clients
      changed some logging
      fixed some dum NULL strdup problems
      changed some config file stuff so it's not router specific
      added an 'all'
      changed ILS to SRF
      some sanity checking, syntax error fixups
      added better error handling
      added exception passing from dbmath through math back to the client
      added a router_command type of "query".  The only supported query so far is "servers" (which is passed in as the body of the message).  The router then makes a list of all of the server_node's and returns the string to the sender of the query
      removed the "libxml.h" dependency which is unnecessary (and requires source)
      LGPL'd json C library.  Slightly modified to build a .so file so we can link it into our code.
      headers for libjson
      added la_time as timestamp and serve_count
      updated, removed the userAuth stuff
      re-enabled process automation
      fixing subrequest support
      v1, currently only answers to 'exit', 'quit', 'help', and a single router query command
      added brokenSession
      added a function to format a timestamp in human readable form
      changed unixserver app retrieval
      some syntax stuff
      moved to new config settings
      moved to new config settings
      moved to new config settings
      new config settings
      added a sanity check
      removed reference to 'param'
      using new config settings
      new config settings
      Beginnings of the new config parsing and client classes
      first round of the settings app
      added new config handling
      added command line passing of bootstrap config file
      fixed up to make the remote settings grabbing work...
      now we only get the router target from the bootstrap file if we are connecting to 'settings'
      cleaned some
      added utility method for retrieveing a list of transport targets..
      fixed up the magic auto-introspection and made sure we were closing connections when necessary
      made him a proper subclass
      added 'component' login functionality to the lib code
      sha.* is necessary for the component authentication, component is just an example component test client
      added DIGEST style authentication to the clients
      removed prints
      added a debug_handler for verbose output added a utility method for extracting the domain of a jid add trusted server domains to the router.  now any router level commands will only be fulfilled if the sender is in a trusted server domain.  more testing to follow
      added check for settings server, and removed some logging peer connection
      added a cache flag to the settings client
      added some logging.
      fixed logic error
      added 'last' command to redo the last command
      Changed some config settings to load all jabber stuff from the bootstrap config
      added sanity check for app for loop
      OK.  This is the first early C version of the OpenSRF stack.  It's highly incomplete at this point.  In particular, included in the stack code is is the osrf_message code wich the router now needs.
      ugh
      added "opensrf." to front of method name
      returning empty array when no results
      cleaned some stuff out of the makefile
      the marcdumper!  takes command line params
      moved to the Open-ILS tree
      added named params to bootstrap_client to allow config file
      update bootstrap client to use the named params
      changed some ps output.
      updated to call opensrf.math
      altered the cache a little to allow for the servers to be passed in instead of reading them from a config file
      added 'named' configs. log file and log levels are set by functions and not by direct config file reading. added request framework to srfsh so we can make requests of any servers
      updated help message
      if no params, send an empty array
      sanity checking on request complete
      added 'disconnect' to session requests
      srfsh now: 	shows request elapsed time 	formats request params as arrays internally
      added a opensrf.router.info.stats method which returns info on all connected server classes and server class nodes
      added json pretty printer for formatting result content data
      removed the command line login requirement and now we just us the transport connection build by bootstrap_client
      moved to readline.
      added srfsh to the top level makefile
      added the ability to 'stream' results added opensrf.system.method.all we now send a 'request complete' message after requests so clients won't be expecting more data
      can't forget the header file ;)
      added opensrf.system.method.all in the list of returned methods from the the method.all request
      now requests are finished and sessions are destroyed
      fixed DISCONNECT message formatting in app_session, we don't resend if the request is complete
      added an 'install' target to these makefiles that just copy their binaries to the top level opensrf bin directory for now
      if no config file is specified on the command line, we check $HOME/.srfsh.xml for a config file
      now do an explicit kill me on the session after the host config is retrieved so that the session is not forked and propagated
      we now return undef if any level of the sought config doesn't exist
      we now delete the tmp net::server config file
      fixed logic error in using the config file
      fixed logic error in message building. we now dynamically parse the json string held in the result content node instead of making it a string
      added some basic exception handling and propogation
      added router 'unregister' loop to DESTROY
      pass up internal server errors as user exceptions
      now magically does both memcache and persist caching if the persist option is enabled when new is called.
      removed some comments, added some sanity checking, trimmed down MathDB since json has better number handling
      fixed some memory logic errors
      added external command running by entering !<command> [args]. forks and runs the command in the shell.  when the child dies, control returns to the srfsh
      added 'relay' which allows you to use the last received result as the param to the next request
      added _CACHEVAL_ to the slot names to make them a little more unique/controlled
      we don't add 'newlines' to history.
      moved definitions to srfsh.h for maintainability
      added history file so history is saved across sessions
      history and config file checking are more granular as far as what we can do with the file
      saw and fixed memory leak.
      fixed mispelling
      added sanity check on relay command
      added some more sleep time
      fixed (hopefully) the $0 * addition
      added longer sleep time
      added some debugging output
      checking for HASH ref explicitly
      changed 'slot' to 'key' for clarity, should have no effect on behavior
      added line to remove trailing ';'
      added some debug lines
      found likely candidate for router crash.  on remove_server_class, the received message is freed in multiple places.  ( once in server_class_handle_msg and again in remove_server_class)
      piping to 'less' for long data
      added newlines after commas in pretty_print
      turned on pretty print by default
      fixed request timing issue since we're using 'less' now
      added some sanity checks
      found leaked xml string
      added == to number
      added escaping for internal " characters
      incorporated math bench into srfsh. see help for details
      fixed makefile to remove the .so file
      added ctrl-c handler to exit the currently running command
      memory leak cleaning, more to come.
      fully bypassing persist if persist isn't true
      added help line
      added a warn line for debugging purposes
      found the (i believe) the remaining leaks in the transport code
      added some cleaner code handling to reduce valgrind errors
      moved back to non-method_lookup method to test 'original' speed
      added an 'introspect' command
      added login functionality to the shell
      included stack dependency in makefile
      added some sanity checks to make sure we're not sending if we've been killed
      removed sig-int handler for now, annoying.
      added check to make sure log line didn't kill things
      lib dir is added now
      changed buf size, not sure how it got shrunk
      raised command line buffer to accomodate large chunks
      script to build fieldmapper.js file for using fieldmapper objects in javascript
      recently added to json by maintainer
      C apache gateway.
      added a field to store the original JSON string received from a request
      updated to newest code, made my usual usability changes.
      using our log stuff instead of stderr
      added a field on each object called classname to return the object hint
      morphing into shape
      changed to fit fieldmapper stuff magic casting and to_stringing
      fixed bug where session id's were always coming up the same added some debugging
      we now have session caching. sessions only disconnect on every 20 requests
      on connect, we only connect if we're not already connected
      removed some debugging stuff
      removed some unused lines
      added handling for jabber errors
      added some debugging
      added a del_session function which removes and cleans up sessions when it's their time
      added some debugging added the ability to not automatically parse json in inbound messages fixed some typos and logic errors
      altered debug message that was causing problems
      added line to better report exceptions
      removed unused variable, added log line
      checking for only one server
      getting "can't call toString on unblessed reference" in the commented out log line
      durrhhhh
      addede space
      should have been commit some time ago
      moved to Open-ILS tree
      extra info in debug, added space to casting string
      changed some of the debug lines
      this is the code that has the 'failed' method as well as a utility method 'gather' that wraps up simple requests
      app name changes
      just letting the exceptions stringify
      altered to use new osrf_message json string format
      slimmed a chunk of code
      added the ability to bypass JSON parsing for adding request parameters. use osrf_message_add_param(json_string) instead of adding a json blob.
      added some debugging when hunting memory error
      utility for string arrays
      header for the string array
      bug squashing party on the gateway.  we now explicitly format the xml as UTF-8 when putting docs into memory
      added gateway build
      moved extraneous comma...
      testing
      done with test
      adding patch code to fix wonky array/objects
      more fixin
      logic
      checking for object
      NULL!
      logic
      more stuff
      Let the onslaught continue...
      removed gateway from the 'all' target since it required apache
      now using the max persist time in the config file
      creating text nodes differently now for proper escaping...
      moved to utils
      moved from libtransport
      added objson
      moved sha.c
      moved some of the utility code out that has no other dependencies, used accross different packages
      added
      moved some code out to utils.h
      moved some code out to utils.c
      adding early custom json code
      added objson target
      adding
      creating header dir if necessary
      removed unused test code
      C fieldmapper stuff
      build the header here then copy it over
      Stateless code, round 1...
      removed number overloads removed number casting, just using string for numbers
      added stateless hack for now
      logging empty data on socket
      fixed name issue for process
      added stateless flag (couple days ago ;)...
      added -lobjson to makefile
      removed fieldmapper from the 'all' target
      router bypassing code
      regex to determine unix-ocity for the socket
      if no router, change the connecting resource
      router-less login mangling
      more smarter src makefile.  does all of the dependency calculation in this makefile so the sub-makes may be simpler now passing down env variables to sub-makes
      slimmed down makefiles which get most of their vars from the higher up src makefile
      Chop Chop, Jabber
      moving header files into the directories where they are used.  makefiles now copy over header files to include directories where necessary
      again... moving header files to their home locations, makefiles copy them to right place
      moved to the utils dir
      moved into their respective src dirs
      moving to it's src dir
      moved over from the include dir
      *** empty log message ***
      using different header location
      added for completeness
      broke out a lot of the code from generic_utils into their own packages and moved them here
      pointing to headers in this dir now
      more tweaking to point to the right header files, etc.
      it's functions have been farmed out to utils.c, logging.c, osrf_config.c
      took the config functions from generic_utils and put them here
      removed generic_utils.h
      added other useful headers
      moved apache header dir to the toplevel makefile
      renamed some more apache makefile vars
      oops :)
      hunting segfaults...
      removed connect since math_bench runs in stateless mode
      slowly replacing libjson with objson calls..
      added a note
      added -g for debugging for now
      added license info and some additional comments
      added some license info and comments
      fixed a number of bugs regarding number parsing
      __param is now param
      moving over to install.sh build
      changed lame code to smarter code -> dumping document element instead of doc and remove declaration
      method not found now returns the name of the method and package that is supposed to implement it
      another error message that we'll hopefully never see
      added some debugging, safety measures
      unlinking sock file
      changed arg.array to arg.a to match the fieldmapper stuff..
      fixed some a bug in jserver, added some debug lines
      removed all of the old libjson dependencies added some objson methods
      cleaned up a little
      removed some unnecessary 'use' statements
      objson now accepts empty array and object values if STRICT_JSON_READ is not defined and writes null array and object values as empty strings if STRICT_JSON_WRITE is not defined
      moved back to nulls
      added shutdown call before closing socket
      added try block for catching un doable things
      basically reverted back - left the try catch
      completely reverted to original
      building objson with strict writing enabled (includes nulls)
      added support for script files.  when we detect that we're runnin from a script output is not sent to 'less', but stdout instead.
      fixed some typos, logic errors
      added EXEC_DEFAULT compile option for srfsh which is set by default.
      now piping to open shell for unknown commands so that there is only one shell used
      fixed issue where the err message was not getting set correctly
      example gateway config file
      example router config file
      small tweaks and changes to make the install process more useful
      set raw_print true forces srfsh to bypass 'less' for output
      example bootstrap config file
      changed name
      more install arranging
      made it so it doesn't complain about not having any apps to load
      added exception for when trying to send to non-existant recipient this will prevent some of the vague 'no app_session returned from server build' errors
      added handler for STATUS_CONTINUE
      example config file
      copying over the opensrf.xml config file
      added a line of hopefull helpful debug output
      more install goodness, fixed random jserver bug added an opensrf_all script to load jserver, router, and opesnrf core
      using Logger instead of Log
      more install goodness, fixed some bugs, etc
      for convenience, changed to work with new default layout
      more debugging
      removing unix files
      more config file mangling
      moved redirect to latest mod_perl added a .js file to the opac that was missing fixed unitialized value logging in appsession
      fixed bug in opensrf_all
      checking in... see diffs
      C based xinclude processor
      changed add_index to set_index to match some updated objson
      added a stringisnum function
      some code cleanup, some unfinished projects, etc.
      now allow S and E in class hints :)
      apachetools is some generic apache module helper functions xmltools are some generic xml helper functions mod_xmltools is the beginning of our XML monster for processing DTDs, xincludes, and potentially xslt's
      removed some unused comments, etc.
      moving to OpenILS
      move the log_free to after the cleanup is done so we don't see error logging going to the terminal after log_free
      much work toward the dtd-on-the-fly architecture for locale changing
      moved C over to all JSON all the time
      removed some comments
      code cleanup and memory debugging
      removed debug line
      added microseconds to get_timestamp_millis()
      removed dependency to self in makefile
      added client connect code for INET and UNIX.  UNIX is tested, INET is not.
      added ability to bind to a specific IP address for TCP server connections. TCP client code is now tested and appears to work
      jserver now has ability to listen on a specified IP address
      patched up to work with new jserver
      added method to allow waiting for a single client socket instead of waiting on every socket
      moved transport code over to utils/socket_bundle so we can keep the code centralized and take advantage of the unix socket handling.
      added the setting for unixpath
      fixed a problem in utils where I was using a va_list after calling va_end on the list found a couple of memory leaks in gateway got exceptions going through the REST gateway made makefile a little smarter
      added external file to hold the commonly used jabber XML
      disabled REUSE since it was affecting router
      updated make process to copy over new web stuff and not old web stuff removed the old transport_socket stuff
      make install.sh slightly smarter removed compiler error for 'osrf_stack_process' by making it a global variable set by the stack (osrf_app_session no longer needs to know about the stack directly)
      moved router, gateways to a single config file opensrf_core.xml remvoed router_config.xml and gateway.xml config files make config.sh only ask for prefix, other directories are assumed (and can obviously be changed in install.conf if necessary)
      added an example srfsh file
      now copying over example srfsh file
      added a header file for the gateway
      fixed problem where a NULL unixconfig was causing segfault took the sleep out of the apachemods makefile
      added the pretty printer here
      made json formatter a little smarter/better srfsh now uses json_format_string found in the json code added a 'clone' method to the json code
      fixed message hints to go with new code
      added basic xpath support to JSON added some utility functions
      removed libjson
      cleaning up the JSON code some added host config retrieval for the stack did some more memory checking
      forgot to add these...
      removed 'test' dependency
      typo
      adding utility methods adding the preforking for server apps fork code
      new json api changes new config reader code created and inserted
      addiing some xml utility code
      adding config code
      see diffs
      all opensrf related headers are shoved into opensrf/*.h
      changed the CC_OPTS and LD_FLAGS to CFLAGS, LDFLAGS, and LDLIBS so that MAKE can implicitly build .o files (don't have to repeat build flags in makefiles) makefiles are cleaner this way
      Young C server code added
      math server (really dbmath code)
      added dbmath made some api changes to session, more to come
      added some more api wrappers json parser now takes variable length args added some comments to osrf_math
      added CONNECT handling added respond complete (general message batch handling) changed Dispatcher to Context cuz i thought it made more sense added gnarly function to change the process name for C progs laid groundwork for statefull keepalive loop
      changed router binary to opensrf_router to prevent opensrf_all from destroying some other process called router - (needs to be pid based eventually...)
      small bug fixes
      fixed makefile ommission
      added a function to check the file descriptor before adding it to the select call
      changed initialize to osrfAppInitialize and childInit to osrfAppChildInit
      added caching and cache initialize routine to the bootstrap call
      added the md5 server (opensrf.version) some memory debugging slight api change (OSRF_METHOD_VERIFY_CONTEXT no longer creates local vars) added a basic 'application' level logging numerous small changes
      changed around the status method some added the framework for processing 'system' method (introspect, etc.) implemented opensrf.system.method.all
      cleaned up Biblio some
      some api changes tested the cache stuff better added #define for enforcing argc on methods system methods are registered through the same facility as regular methods
      made C auth server added utils code for C servers, including some fieldmapper handling code fieldmapper now copies headers over to INCLUDE/openils/ install scripts now install c-apps
      added objson dependency to libopensrf
      added list and hash code based on libJudy re-coded the router added preliminary transport_group code for client redundancy (far from functional) various twists and tweaks fixed memory error in string_array code update makefiles
      removing in favor of new router code
      added atomic method cabilities 	register the method as streaming and an atomic version will also be registered
      slight C api change, method options are now passed as a single OR'ed group of option flags added some info logging to system
      logging returned content at info level
      gutted chopchop moved to osrfList and osrfHash for faster lookups added core server 2 server code
      various tweaks
      added section for chopchop since it now reads xml config instead of command line
      fixed logic bug in the xpath finder
      some more sanity checks
      disabled chatdbg function cuz it's way too heavy
      added newline in debug output
      made the JID functions safer updated where necessary made some modifications to the test version of the client redundancy code
      added section in core config for C client bootstrap
      not allowing the code to be run as root
      forcing user opensrf to start the system added -pipe for faster compile creating pid and sock dirs during install
      using get_timestamp_millis() instead of manual time gathering
      added the <language> block to the opensrf app config so the servers will know which apps they need to run
      added <language> for docs
      cleaned up the code some
      explicitly removing pre-existing connections when two overlap fixed typo
      moved session code to osrfHash and osrfList instead of manual linked lists added some logging to the transport group stuff and a disconnect method
      fixed bug where removing a node didn't always register
      checking <language> for perl in listener and unix children
      opensrf_core now builds libopensrf.so and opensrf-c
      handling 'hostname' more carefully
      durrrr.. typo
      rolling back hostname change because of mysterious performance problem needs investigations when time permits..
      added pop method to osrf_list makefile builds mod_xmlbuilder code
      tosimplestring now returns int/double as expected
      one more log line
      if client has been bootstrapped and is currently connected, bootstrap_client will not re-connect (since all it will do is over-write the exact same connection)
      cleaned up and commented
      moved C code to a unified logging framework which currently supports syslogging and file logging
      patching up some more logging stuff
      final C code logging patchups
      drastically simplified logger code now supports logging to file and syslog logger is backward compatible, but future calls need only have the form: $logger->error($msg); $logger->warn($msg); $logger->info($msg); $logger->debug($msg); $logger->internal($msg); $logger->activity($msg);
      setting log file to just "syslog" (instead of "syslog:") uses the default facility
      activity log is now a standalone log target: file or syslog:<facility>
      removed these since the C code is now using the unified log code in utils/log.*
      added variable arg to jsonNewObject for formatted strings
      freeing json response object
      added some log statements, fixed some typos
      Setting the logging service name to the application we're serving
      added qw(:level) to CDBI.pm because we were getting empty log levels
      added content-type back into gateway added some apache logging
      incorporated ilseents.xml file into opac added an event entity to lang.dtd
      Added new C event code for handling the auth login events (just remembered that i need to read the events file from the settings server)
      added a "restartforce" option to force the code to at least try to restart this is added since the restart script may get hung up on other code (srfsh) occupying the jabber port
      srfsh now takes login commands like so: login <user> <passwd> [ <type> <orglocation> ] this allows testing of different login types and org locations
      auth code now returns { authtoken : <t> , authtime : <sec> } as the payload so the OPAC will know what the timeout should be
      setting the logger app name for debugging
      added a NO_SESSION event for when a login session does not exist Event.pm now takes arbitrary parameters
      Changed some log levels from INFO to DEBUG since they are highly repetitive
      started work on xul-based requestor/recipient holds avoided (but not fixed) bug in the gateway modules where you cannot send escaped URL params to vsnprintf.  This will need to be fixed.
      re-arranged the log code so that VA_LIST_TO_ARGS (which runs vsnprintf) will only have to be called once per log.  This appears to make vsnprintf happy with regard to printing embedded %'s Happily printing the URL's in the gateway now
      for some reason, doing "throw $err $err->stringify" was causing a generic method exception to be thrown.  Fixed by doing "throw $err".  This should allow the /real/ error to be passed to the client, and not "method not found".
      explicitly returning STATUS_NOTFOUND when a method is not found
      srfsh reports to stderr when a config file could not be found
      gateway now assumes status is OK on a message unless it recieves a message which proves otherwise
      added some NOT_FOUND events for record, copy, and circ (more to come)
      escaping embedded %'s so syslog won't barf
      changed a log line
      removed some "warns"
      moved some warns that will happen often to info logs
      srfsh accepts exit and ExIt
      URL can now contain api_level as a param to set the opensrf api_level for the method
      Changed log level for "disconnect on timeout" because it happens frequently
      removed extraneous warn
      leaving parse methods early if proper fields aren't defined (avoid warnings on system start)
      Added additional param to all the osrfLog* calls which mark the file and line number of each log call
      added a default freeItem function for freeing list items
      added additional sanity check to index call
      module now dies with a message if bootstrap_client has not been called (instead of printing meaningless error about can't call 'env', etc.)
      Moved some log messages from INFO to DEBUG level because of their repetitive volume in the logs
      testing cache timeout resets without removing the item in question
      re-vamped gateway to make it more stable and faster. also moved the apachetools stuff into the opensrf tree since it's all pure opensrf and the gateway made good use of it.
      osrf_json_gateway is tested and working. removing this older version
      removed mod_ils_gateway targets
      fixed bug where the ptr** was freed prior to the ptr*
      format fix
      small changes, fixed some typos
      forcing array-ness on non-existant params
      moved the Judy implementation to osrf_big_list and made osrf_list a standard array based list
      added osrf_big_list to the makefiles
      added utility macro
      added method to allow creation of list with a starting size
      added method to insert items at the first NULL slot in the list.  useful for removing random items and inserting random items where order is not necessary
      Open-ILS/src/c-apps/oils_auth.c
      moved stderr line to a log line
      added "CALL" to the param debugging line for ease of grepping
      white space :) added some log lines
      updated to work with new login params
      moved osrf_hash code to osrf_big_hash as the Judy big hash implementation osrf_hash is now a custom hash
      formatting errors as JSON strings so they come accross as, well, JSON :)
      now printing bad XML data to the log file.  my feeling is that this is what is causing the "<blah> is not connected to the network" errors... clients will be disconnected when they receive bad XML
      added some macros for speeding up tight loops - taking advantage of those macros
      raised history size
      taking advantage of macros
      added hopefully more useful log line
      added basic opensrf.system.time method
      replaced regex with CORE::time
      making better use of macros for speed
      added some additional logging and some cleanup functions for improving memory leak detection
      removed depracated call
      like the Perl server, you can now no longer re-bootstrap clients in a process that already has a client socket open.  you can force it, which the forked children must do to get their own sockets, but in general, a single process will share the same connection
      added child init handling to the C stack
      added more debugging
      fixed bug
      added some logging, etc.
      added a flush_socket method to the jabber client code to allow a unix child process to drop any pending socket data before continuing on
      chopchop will now timeout if trying to send to a client that can take no  more data as opposed to blocking indefinitely on the send socket
      more debugging
      removed some unnecessary log lines
      more debugging, sanity checking read loop in apachetools as well as buffer_add
      ap_get_client_block returns -1 on error.. detecting
      handling any less-than zero returns
      gateway now requires a list of allowed services all other service requests will receive a not_found
      checking for socket connected-ness on sysread inbound now re-connects on disconnect error
      added some more diagnostic logging if we have no data to send to the unixserver, we don't try
      fixed linked list bug which as pushing app responses onto the front of the queue, and some general cleanup
      added log line
      added pointer check to prevent the router from crashing when it receives the second bounce message on a recipient node
      added some additional debugging
      adding cookie parsing - disabled in gateway for now
      added request duration
      the code in these examples is way too old.  best to delete.
      added connection oriented statefull session handling to the server stack
      added a userData pointer
      added some error logging
      better, more-flexible, easier to use, all in one control script this does not have chopchop support yet it uses a pid directory and pid files to control processes when it can sometimes it can't in which case it uses the same hacks the older scripts use
      changed ps name for more accurate grepping
      cleaned up, added some info
      added error message for cached data on a closed socket
      limiting message size to prevent syslog warnings piling up
      installing osrf_ctl script
      added a free function pointer for the user data
      free pointer
      dies if user is not "opensrf"
      typo
      fixed logic error in disconnect
      copying userData to the atomic method
      attempting to update the documentation
      added IP addresses to log line
      added \ escaping
      return error when client is disconnected
      returning error code on disconnect
      encoding char=30 (record seperator) in ToJSON
      removed some unused non-apache2.2 friendly code
      removed old code
      cleaning up startup logging
      removed runtime print statement .. interfering with apache
      removed debug warning
      Fixed issue: when the router received two messages on a single socket that both fit into the read buffer, only the first message was being processed
      logging the session id at client creation time for debugging
      logging all requests + params to activity log
      when a backend child is not able to connect to jabber, the child now goes away so it's not sitting around polluting the server pool
      put time into resource to ensure uniqueness accross machines
      testing multi-message fix in parser
      logging put errors instead of throwing exception
      remove method call that does not exist
      fixed log line
      updated log output to be more srfsh-ish
      sending authtoken in request header and logging to activity log
      truncate messages more to prevent syslog overflow errors
      clearing tmp buffer before use
      more aggressive uniquness measures just to be sure
      added escape for 0x1 char
      changed some logging
      moved json parsing methods to non-printf style methods, added new Fmt to behave the old methods did (which treats all embedded % chars like format flag chars)
      removed a bunch of old code
      added a log line
      put free calls back in to free the xml from messages
      added var check to prevent warnings on the numerous timed_read(0) calls
      changed format of log line just a little
      doing better job of propogating network errors up the stack
      fixed bug in child pipe reading code which limited the total readable bytes
      added logic to reconnect to jabber if the child receiving data realizes the connection is gone
      added message processing time to C stack
      moved processing duration up to info
      elevated recv timeout to INFO cuz it is important
      added .1 second sleep to inbound processer when it goes nuts on reading empty socket data.. still not sure what the cause is, but this will prevent the log storm
      when the gateway is not bootstrapped.. it is useless, doing a short sleep, then going away
      elevated response log to info because it is crucial for determing who a perl backend is talking to
      escaping hash keys
      finally implemented opensrf.system.echo[.atomic] - useful for nagios-style testing against all C apps
      Now, when no children are available to pass a request to, the parent process blocks on a select() call until any child is available.
      stateful backend sessions now only timeout of no request was received within the keepalive timeout.  previously, if a request took long enough to process, the session would timeout after sending the result back because the entire time the forker waited on queue_wait exceeded the timeout
      changed log line
      changed a log level to clear up some error logging
      added a log line that will hopefully give us more info on what appears to be a network error of some type, without turning the logging up
      uncomment some unnecessary code
      added a comment
      committing a simple jabber registration script
      refactored redunant perl2JSON call
      added space in the utf buffer to handle 3-char characters
      removed two warning logs to prevent the unixserver logs from bloating up with the warnings
      replaced (printf style) format buffer calls with non-format calls to prevent issues with embedded % symbols
      removed big hash/array dependencies to remove libjudy requirements
      any unhandled char below ascii 32 will now be encoded as utf8 (\uXXXX)
      adding python libs
      reduced hash size (just now comitting, been like this for a while on dev)
      removed libjudy dependencies from makefiles
      Added support for the opensrf XID, which is a transaction string that's passed around via the jabber message and inserted into each logged message to relate activity accross different processes
      added timeout url param to set the request timeout
      added a is-true wrapper for bool objects
      fixed bool parsing bug -- off by one on the string size enforcement
      added child exit handling code and example
      removing old, unused child_finish_hook
      do a kill -9 after kill -s INT to make sure no stubborn processes stick around
      added the <client> block to the gateway.  moving everything to "localhost" for consistency
      removing unused log section
      applying spelling fixes and making db names/passwords match accross default config files thanks to patch by Dan Scott.  Thanks, Dan!
      refactored the unix::server config handling by getting rid of the old temp config files and passing config params directly to the net::server run() method
      lowered some logging
      added more portable (perl) hostname fetching to pass to the C code, updated docs
      added "use Net::Domain" in the package that calls hostfqdn()
      removed the deprecated rest_gateway config; added comment on router name changes
      removing deprecated files
      removing install of deprecated files
      added an info log line to log the called method
      forcing int on timeout values in process and timed_read
      applied patch from Dan to provide an example usage
      removed some old code and the unnecessary select-as-sleep calls
      made new child creation more robust
      committing scott m's buffer protection patch
      added size check to constructor
      added some more index sanity checks.  added const qualifier where necessary
      added java jabber layer
      added the woodstox stax jar files
      fixed some logic bugs with the body parsing, added some comments
      added initial opensrf stack layer objects.  more tuning/testing of the jabber layer
      added support for opensrf-serializable objects and JSON output of those objects. updated some JSON test code
      added JSON reading ability, including serializable objects
      adding more base objects, started on stack layer. added config parser
      implemented enough of the stack/session logic to make stateless requests and receive responses
      added a lot of documentation
      fixed some doc strings.  added sample makefile
      implemented client bootstrap.  created a status object to model connection statuses.  remodeled the client test code to run arbitrary methods
      added a settings server client and test.  made the global config object wrapped in a method instead of using static methods all around
      added a memcache client and test
      committing added jars
      added memcache lib to makefile
      updating to jdk1.5 build
      rethinking deployment
      added a make target to sample makefile for fetching jar/source dependencies to ease deployment
      committing scott's safer MALLOC macro and a new buffer_release function patches
      broke network-object logic out of the JSON parsing code
      returning OK status in respond method, instead of no status at all.  most code uses respond_complete, which is why this has not been an issue in the past.  writing new client libs exposed it, though
      changed log level on what really should not be a warning message
      added math bench code.  added shutdown method to disconnect from jabber.  updated makefile to used fetched version of the stax jar
      added some inline comments
      added some more descriptive logging.  removed old signal handling code.  no longer freeing return value from strerror since it should not be modified
      no longer freeing return value from strerror since it should not be modified
      slimmed some logging.  capturing errno locally after the recv() call so it is not replaced by a different system call before the check
      removed some error lines printed to stderr.  not used and they also have the potential of overwriteing errno
      ported XML parsing from libxml2 to Python's builtin xml.dom.minidom to reduce dependenies
      adding sample makefile and install.conf file for opensrf installation
      adding gateway parsing code.  so far, we have XML gateway handling using python minidom.
      removed unused TEMPLATEDIR directory creation.  thanks, Dan S.
      rolling back changes to objson includes. opensrf cannot find "opensrf/<blah>" since there is no external include directory yet.
      Added a new XML-2-JSON utility for converting XMLized OpenSRF objects to their internal JSON representations Added a new gateway param "input_format" to define the param format. Options are "json" and "xml". Unless overridden, input_format will match format
      Cleaned up the network hint / object registration code in net_obj Added object2XML function for posting XML to the opensrf gateway updated the gateway to deal with the new object API
      testing email
      testing email 2
      more tuning of hinted object handling.  added support for hinted object parsing in gateway parser
      made the logging module fail gracefully when syslog is not present
      Merged libopensrf source directories (libtransport, libstack, and utils) into a single libopensrf directory Moved opensrf headers to trunk/include/opensrf Moved objson headers to trunk/include/objson Updated #include's throughout to be fully qualified.  e.g. <opensrf/utils.h>, <objson/object.h> Removed old, unused trunk/src/xinclude code Cleaned up Makefiles to support new directory layout
      forget to add libopensrf Makefile with latest re-org commit
      testing email
      testing email2
      updated the sylog and activity log file handling to accomodate differences from bootstrap.conf and opensrf_core.xml
      removed some initial (non-error) stderr logging.
      fixed bug in to-json logic -- was still using older api
      fixed bug where no-text-data resulted in incorrect array index when parsing hinted objects
      reformated error for easier reading
      repaired conflicting declarations
      Initialized merge tracking via "svnmerge" with revisions "1003" from svn://svn.open-ils.org/OpenSRF/branches/new-json2
      Patch from Scott McKellar to repair srfsh buffer overflow:
      added config contexts for config files.  fixed some osrfNetworkObject handling bugs.  did some re-tabbing to change to space-based tabs
      fixed bug in json encoding of hinted objects and some display bugs
      Merging changes from branches/new-json2
      Patch from Ed Summers:
      ressurrected the srfsh time command
      added a bunch of comments to the test client to help explain the api made the makefile 'run' command more verbose
      added JSON gateway support
      python only evaluates default function param values once, so mutable types will always be pointers to the original default val.  change the default osrfNetworkObject init function to None and setting default manually
      added a try/catch around the XML parsing and an error log
      making sure error logs are logged to stderr even if syslogging is not an option -- eventually, it should fall back to stderr logging like the C code does
      re-factored and cleaned up the registered class base-class object
      added shutdown call to cleanly disconnect from the opensrf network
      synchronizing the initial xmpp login to prevent thread race condition on authentication
      adding basic logging api with a filelogger version and a test module
      adding new JSON parsing JS code, for wrapped class objects
      for now, we reference the wstx stax implementation directly to resolve class loader issues
      minor layout change.  calling notifyAll to ensure all threads are notified
      added multi-threaded client support to the opensrf network/xmpp layer this is all managed below the covers so that clients can continue to safely use bootstrapClient and will all "just work"
      updated to work with opensrf.jar with doing 'make run'
      added support for multi-threaded client interactions.  much like the java lib, each thread is allowed 1 jabber connection, as opposed to 1 process-wide jabber connection.  also did some re-tabbing to force 4-space tabs (not raw tabs) - more of those to come
      not creating new handle if the current thread already has one.  changed resource layout
      fixed import statement
      safer extraction of data from the in-memory object
      adding thread name to the log output
      added an atomic method for simple, one-off calls
      added cache cleanup code
      repaired logic bug which left the parser state in the JSON_STATE_IN_KEY state after exiting from an empty JSON object.
      added some more rigorous checking of session connected-ness and some logging
      provide a warning-level default logger if none is defined
      returning explicit true/false on data received
      added new constructor to build from class hints
      fixed infinite loop bug by hopping out of the loop if timeout gets down to 0, but the code still allows the the loop to occur once if timeout is initially 0
      changed imports to be fully qualified
      added ability to log to a file
      removed hard-coded reference to python 2.4
      Cleaned up exception messages so they will not be bloated with newlines (which are rendered as '\n' in syslog and local apache logs, anyway) and layers of "Mess:" tags.  Logging the ISO timestamp instead of the default output of Perl's localtime()
      repaired variable name
      replaced str() calls with unicode()
      added ability to parse attributes and elements containing no children or data to the xml2object parser
      removing out-of-date jabber2d patches
      in addition to pushing the received message to the callback, we return the message from recv()
      removed debug statement
      added error message. re-tabbed to 4 spaces
      adding a caching api.  requires memcache: ftp://ftp.tummy.com/pub/python-memcached/
      added a default timeout cache setting
      added the proof-of-concept http multipart translation code.  still needs request parsing to handle client disconnect messages and more testing with non-multipart
      added cache delete.  updated some logging
      parsing requests so the translator can return OK and stop waiting on DISCONNECT messages.  added some debug logging.
      removed unnecessary log line
      returning if config is not defined since next line of code tries to use config
      Added support for "migratable" opensrf services.
      created external script for downloading java dependencies.  added new install.conf settings for where dependency jars are kept and whether or not to build the java libs
      adding a generic xml flattening utility with test
      created a simplified XSL processing class with test
      adding a basic mutlisession manager
      parsing logfile settings and initing logger
      added iscomplete method
      added internal log level.  added some crucial log lines.  logging thread id
      added an xml flattener similar to the java xml flattener
      added a multisession class for agregating requets into a single recv manager
      added a flag to encode/decode flattened data as json
      changed osrf python version from 1.2. to 1.0 to match opensrf
      forcing int-ness on timeout value
      repaired stderr call
      added a static method to see if there is already a globally connected cache client
      changed str to msg to prevent clobbering.  changed repr call to unicode, which seems more appropriate for human-readable error message
      removed assumption that settings values would be numbers.  cleaned up the code some to make it more readable
      made exceptions a litte more generic, passing msg to superclass for networexception
      providing option to connect to memcache at general connect time
      using new C-based JSON parser: JSON::XS - this new code wraps the to/from JSON calls with opensrf class management
      repaired expire time logic to force use of the configured max if timeout is indefinite (0) or larger than max
      removing old, unused code
      I started adding some basic bootstrap options looking ahead to server-side python. This resulted in a small set of code cleanup including:     move from camelCase to lower_under for method names     move from global variables to class-level static variables     move from global functions to class-level static functions
      added the ability to use cjson for json encoding/decoding.  gracefully falls back to simplejson
      added the ability to wait forever by passing <0 to recv.  explicitly setting sender address in messages to be correct.  added ability to create a message from raw xml
      created a shallow clone method
      python opensrf pre-forking server implementation.  this component manages the "inbound" and drone processes for server applications.
      appending neglected boolean object to growing JSON object.  Thanks, Scott
      updating legacy JSON parser to store numbers as strings
      try/except/finally combinations are only supported in Python 2.5.  in this case, the finally is not necessary. removed it
      gracefully handle a null server resposne
      makeing osrfSystemCacheInit() a "public" function.  pushing osrfSystemCacheInit() into the child_init phase to prevent shared cache handles.
      updated to fit new opensrf updates
      added a ":" to the getopt "c" option so it would take a param
      Added support for multi-router registration replaced unnecessary <domains><domain/></domains> with a single <domain> element in opensrf_core.xml wrapped the top-level <router> element in a <routers> container element in opensrf_core.xml to     support additional router configuration Updated the python, C, and Perl to match the above changes Gave the router the ability to launch more than one router process, based on the config Added a transport_error flag to C session to indicate a communcation error, which will prevent     client sessions from hanging when making bad requests
      updated to match new config layout
      Updated OpenSRF Javascript client library.  Currently, it only implements XMLHttpRequest as a transport layer, and, thus far, only implements the multipart/x-mixed-replace (server push) content type, which means only Mozilla browsers are support.
      added support for hash-encoded json objects
      added support for ses.request(method, param1, param2, ...) style requests
      added connect/disconnect support, with onconnect callback
      added connect-only handling
      added support for blocking connect and request calls
      added a basic signal handler for the top-level C process which sends SIGTERM to its children to clean up
      made the pid file reading smarter.  removed the nasty killalls since they are no longer necessary
      added special case to avoid wrapping boolean objects
      adding service name to the "stopping process.." log line
      rolling back change in changeset 1277 for default osrf_clearbuf handling.  not sure of the exact problem yet, suffice to say the services wont start with the "!!!..." version of clearbuf enabled
      as it turns out, this was actually a problem with the makefile, not the utils.h macro def.
      forcing router exit without friendly cleanup for now until a socket bug is squashed
      updated srfsh math_bench return value since json no longer returns the extra 0s
      for easier debugging, logging method and params on NULL return
      updated to match new opensrf_core.xml domain layout
      added session/request locale support
      added some debug logging
      implemented onerror, onmethoderror and ontransporterror.  moved the callbacks into the main stack for clearer processing
      added ontransporthander support for multipart requests
      implemented the majority of server-side python.  still need to add settings server parsing and other stuff i have probably overlooked
      logging http result status
      This patch replaces the regex-based XML stream parsing mechanism with an XML::Parser (expat) based parser. The API and parsing behavior should behave identically This requires a new OpenSRF Perl dependency -> FreezeThaw
      raise an exception when the xmpp recipient is not found.  http_translator turns this into a 404; srfsh prints a user error
      added support for log transaction IDs
      The functionality in these files (that isn't deprecated) has been replaced by opensrf.js Leaving opensrf_jabber_transport.js in place for reference...
      changing name to match name style; added comment to indicate this code is not usable yet
      At long last, removing old objson sources.  This will not affect the legacy libobjson.so support, since that's all handled by libopensrf/osrf_legacy_json.c
      importing json and md5 code
      checking socket connect state before sending final packet and calling shutdown (to prevent warnings)
      disable use of cjson for now because oddities have been seen in mod_python (potentially beyond).
      set the logging transaction ID earlier in the process
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      exiting early when hash iterator returns null
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      added date/time info when logging to a local file
      No longer globally setting the network recv_callback handler to None because it clobbers the callbacks of other python clients running in the same within the same process.  Now we capture the existing callback and replace it after the request has been processed
      testing svn email..
      mild doc update, some changes from testing
      added new disconnected exception.  added some error condition logging.  no longer disconnecting on network handle clear, because parent process may be using the handle.
      now disconnecting and clearing network handles where appropriate, but not always both
      defaulting to string for info message
      added echo system method
      added millisecond to the time output
      updated some docs
      the latest cleanup broke GET requests by essentially ignoring them.  fixed
      removing chatty debug log line
      moved stop/start actions out to functions
      default to help when invalid option is provided
      added some hopefully useful comments
      defaulting to config.opensrf for config context.  added some initial settings server loading
      added activity logging ability.  activity logging any REQUEST messages that come through the translator
      changing default router log level to "warn" since you only use the router log for serious debugging.. as is, just filling up space
      added some cleanup code on child exit to ensure friendly shutdown of sockets
      initial C version of the opensrf http translator.  not complete.  I have not plugged it into the build env.
      fixed broken call to sizeof(). replaced ap_rvputs with more appropriate ap_rprintf.  removed some unnecessary string freeing calls
      don't run the cleanup/shutdown code more than once per process
      using a static buffer to store the multipart content type string
      added a buffer_chomp function to drop the last character from the buffer
      added the string mangling to collapse a set of responses into 1 for non-multipart requests
      adding the http translator
      commented out the testing debug line
      returning server error on disconnected jabber socket
      removed example log line comment
      no longer in use
      removing default config path so we don't have to mangle the C files at install time
      * remove the objson API compat layer.
      This patch removes the remaining autotools bits for objson, in particular giving the user the choice of whether to build legacy json.
      This script provides per-service control of OpenSRF Perl processes.  In other words, you can stop/start/restart individual services.  Note that you can only stop services that have been started with this script.
      kill spawned processes at shutdown time set process name
      checking browser agent to see if multipart is supported
      wait for the parent proc to go away before we unlink the file
      merged in Shawn's build tools checker for autogen
      removed misplaced "my"
      config file, context, and cache server now have apache config settings.  keeping a static version of the translator on hand to reduce a layer of malloc/free
      added start all and stop all, changed some var names for clarity, needs testing
      removed extra parens and unnecessary if test
      using single "=" in test for more general compliance
      typo on header name
      added a force set option on log XID to override it even we can act as an origin client
      setting/clearing log XID.  honoring client log xid if present
      expired cache data is a common occurrence.  log at debug level, not warning
      make sure we send the log xid in outbound messages
      set log xid on outbound messages
      fixed bugs in start/stop_all
      added a configurable startup pause delay.  after opensrf.settings has been started (which will always be the first service to start), pause the top-level process for the configured amount of time before starting any more services
      change from info to debug log
      make sure service is not already running
      use the new process-specific perl control script
      removed a bunch of old, unused code.  removed code that is now handled by the external opensrf-perl.pl control process.  mild refacatoring otherwise.
      added verbose option to print which services/pids are being stopped/started
      io::socket::inet, somewhere between version 1.29 and 1.31, requires the peerport to be explicitly cast to an int.  also updated error handling to use correct error var
      the pool cleanup handler which was thought to only run on top-level child process exit is running on cloned processes cleanup.  this is how mod_cgi runs scripts.  disabling cleanup for now.  note: this cleanup is new to 1.0
      disable the new internal logging of sent data by default.
      in trunk, go ahead and run the perl control script with verbose flag on
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      2 Patches from Scott McKellar, with slight modification:
      in the interest of clearing some log cruft, move two highly repetitive messages from INFO to DEBUG level logging
      Two patches from Scott McKellar:
      add support for encoding boolean types to JSON
      protect against unknown clients, except when running in migratable mode
      slight re-org of unknown client handling
      protect against "null" locale
      clear remote ID on subsequent non-conntected requests and on disconnect
      clear remote id on connec as well
      correctly capture the JID of the backend server process for the session cache.  only create a session cache if there is a CONNECT message in the batch.  be more aggressive about removing session caches
      wrap the top case statement in brackets... i guess the macros are confusing things...
      if we are only connecting, we are still connecting.  same with disconnect
      updated to use multidomain by default
      running in no-router/single-service mode was checking a config value that is not required to exist.  if we still want to support running in no-router mode, let's make it an explicit confuration option
      we neeed to keep router_name so that opensrf clients will know what router_name to use
      handle the case where only one service is registered for a given router
      multidomain is required.  no use for a static list of allowed services.  removed support
      rolling back latest change because of macro variable oddities.  this macro will eventually be replaced with a real function anyway
      need a copy of the service when it's pulled from the cache, since the sessionCache object is freed.  use apr_pstrdup so Apache will manage the memory for us
      set the log xid before we read the POST data
      like the old gateway, log the full request params as JSON
      repaired config data structure ref check for registering routers
      make config parsing more tolerant
      added what amounts to -l (use localhost as fqdn) support for correctly reporting status to the terminal
      not sure why this is an issue now (different perl/json:xs verions?), but $obj->{$k} = JSONObject2Perl($bool) results in 'Modification of a read-only value attempted', while $obj->{$k} = $bool does not, even though the JSON::XS::Boolean object is not altered by JSONObject2Perl(). just missing something? patched
      gotta protect the JSONObject2Perl() when decoding arrays as well
      don't try to close the socket if it's not there
      in IE, localeMatch might be null
      IE mad.  IE throw tantrum.  Bill give IE a Baby Ruth
      try the various xhr loading techniques
      make OpenSRF 'global' so IE won't clobber it
      hash keys have to be escaped like regular strings
      capture osrfServerError responses
      pass unknown string as second param to osrfLog to avoid literal % parsing in vsnprintf
      don't set stream state to disconnected on a non-stream error.
      go ahead and log the cache keys when we log the cache data
      activate the config options, need to that if you're going to use a cache server that's not == localhost:11211
      no need to wrap each method description in an object container with class 'method'
      added final bits for stateful sessions (drone keepalive)
      until full settings support is added, comment that out for now.  added example keepalive
      opensrf.py can now read the opensrf.settings file for managing apps.  added start/stop_all actions.  support for service name syslog ident
      try finding osrf_config in the users PATH first to prevent the use of 'find' when possible (find + NFS = watching paint dry)
      define OSRF_HOSTNAME globally to prevent 'unbound variable' error
      don't try to 'kill' an empty pid / prevents warnings
      flush_socket now flushes data through the xml stream parser to prevent the destorying the validity of the stream.  now discarding RESULT messages passed to server sessions.
      added a session_data disctionary to ServerSession class for storing per-session data.  fixed bug where no params caused serer-side confusion.  added exmample of session_data usage to example app
      added session callback support with example method.  added method-not-found handling.  added network socket flush for clearing stale inbound data.
      call cleanup instead of running the death callback directory when server session expires
      until we make the router / C processes write their own PID file, put a short sleep in after startup to give each time to show up in the 'ps' output.  this should help prevent lingering router processes after service stop
      check NULL-ness on hash the key before calling find_item
      reduce unnecessary calls to fcntl() while reading from the socket
      set the 'from' address in outbound xmpp messages
      set the 'from' address in outbound jabber messages
      repaired partial change from 'class' to 'pkg'.  added use strict/warnings
      assume 'yes' to fetching dependencies; reduce the verbosity of package downloads
      for consistency with other config files and ease of install automation, set the default password to 'password'
      initial support for capturing bytes read from gateway response
      Prevent infinite loop (with logging) in child process reaping.
      Patch from Joe Atzberger:
      similar to recent opensrf-c changes, keep active and idle child procs in separate lists for faster access and simpler code.  also some formatting/comment updates
      Added some fault tolerance to the inbound-to-unixserver message handoff process.  In some conditions, the unix socket will result in sigpipe (anecdotally, seen more oftenvirtualized environments).  these changes add a call to select before writing to the socket to check for socket availability and add a sigpipe handler that forces the inbound process to wait a brief period of time before trying the delivery again
      added some debugging / sanity checks to python gateway response handler
      Due to the async nature of xmllhttprequest, processing http responses (which often lead to further async-request laden callbacks) at receive time can result in out-of-order message handling.  To bring order to this chaos, push all inbound message onto a queue, then go back to processing the older messages in order of oldest to newest.
      Replace Net::Server with local pre-forking server
      added support for reading ContinueStatus opensrf messages in the JS opensrf lib
      removing vestigial references to Inbound.pm, which no longer exists in the repository.  this also removes get/set_listener, which were never taken advantage of and are no longer of use since the listener is thoroughly hard-coded into the opensrf stack now
      in json encoder, replace 2 sub calls w/ 1 hash lookup in heavily called code path.  we lose some abstraction, but it's probably worth it here
      when we add xhr responses onto the end of the queue, stash the original session as well, otherwise we're attempting to ask a session questions about requests it's not tracking
      implemented an optional per-service stderr log for capturing miscellaneous stderr output from services, similar to the old-style _unix.log files, since there are often useful warnings and error messages that never bubble up to syslog.  for clarity, the files now use _stderr as a suffix instead of _unix.  stderr logs are enabled by default.  included opensrf.xml example of how to disable it for a given service
      log message processing duration at INFO level, instead of DEBUG, consistent with the C libs
      consistent w/ the C libs, only log server message processing duration at INFO.  log server response processing duration at debug and w/ slighly different wording.  let the processing duration log message act as the indication of a successfully handled message to reduce logging
      socket_bundle typo patch from Jason Stephenson
      added osrf.apps to installed pachages (thanks for the tip, dbs).  bumped version in prep for 2.0
      patch from Michael Giarlo for better sanity checking during settings file reading in python (avoid #comment's)
      Patch from Michael Giarlo to integrate python service control into osrf_ctl.sh.
      killed the terminal colors in srfsh.py output.  They are cute and all, but are likely the cause of readline oddities/artifacts (and kind of distracting).  Default to raw (json) output for consistency
      rely on logic, not failure through try/catch, to determine of an object is a registered network object;  if an object is unregistered, do not treat it as an __unknown network object (which obfuscates and provides no value).
      removed debug print statement
      repaired logic in the as-yet-unused import_array_data; use the more efficient enumerate func; capture array length outside of loop for efficiency; avoid calls to set/get_field and access _data directly inside of the NetworkObject class for faster accessor/mutator's
      added 'router' command for router class info queries; improved redline tab completion; more changes for consistency with C version; general cleanup
      added network disconnect func
      added support for paging through 'less' (like C); added 'router' query docs;  added separate env vars for pretty printing json and for print network object keys;   explicit opensrf disconnect on exit
      install srfsh.py when --enable-python is set
      added support for introspect operation
      in the rare case the select() is interrupted while waiting on child statuses, exit early to prevent read()'s on invalid file handles and allow the calling code to loop back around and try again
      add fault tolerance (e.g. recover from interrupted select/sysread); always perform idle maintenance when there are any active child processes; exit check status early when no active processes exist
      avoid calling sysread when select exited from interruption.
      added opensrf.system.sleep method; takes 1 param (seconds); useful for debugging child process management
      don't clean up child attributes until we're done with them;  added pid map hash for easy/quick access to child via pid
      fail gracefully when opensrf.settings is not up and running
      improved select/read/write fault tolerance; cleaner and more efficient child process idle/active list management; improved logging
      on second thought, removing debug sleep method, which is (more than most) a DOS waiting to happen.
      Python srfsh enhancements
      repaired bug in total request time calc, particularly when a request returns no response
      make the api CALL log line consistent across Perl and C and make it something that can be pasted directly into srfsh
      repaired call to handle_request for router query; cannot survive without the self.
      added sample rsyslog opensrf configuration file
      consistent w/ sigpipe handling in osrf 1.6, provide a warning and retry mechanism for syswrites that fail as a result of sigpipe
      bug fix with srfsh.py introspection; better handling/reporting of service exceptions
      additional settings in sample rsyslog config: disable EscapeControlCharactersOnReceive
      change proc managament debug message from Info to Debug
      Patch from Kevin Beswick to support set operations on certain opensrf message fields.  note, this does not currently affect behavior, since values for messages are initially set from parsing JSON without using the access/mutators for setting values.
      move jabber_state_machine_struct into header to keep 'make check' happy

gmc (5):
      set transaction ID by default to make it easier to trace requests from srfsh
      remove ntp and ntpdate dependencies
      remove executable bit from module files that don't need it
      updated mailing address of the FSF
      no longer need FreezeThaw

miker (414):
      FIRST POST! ... dump numbers correctly in JSON
      making the router optional, and allowing multiple routers
      updating with a new method registration and lookup mechanism
      updating method lookup and registration in the demo
      adding subrequest support
      adding subrequest example to Math.pm
      howto on Application development
      started introspection API; added thunking flag; added "atomic-ifier" and stream flag to registration; repurposed "protocol" to be "api_level"
      add api_level to introspection responses
      added server_class to the method struct, this will let us provide transparent remote subrequests
      adding session-wide api_level setting
      initial stab at a roadmap for OpenSRF
      adding the transparent subrequest logic, it will be enabled when the Settings server is ready
      removed stale comments regarding config
      more logical shortcircuit for disableing remote method lookup
      No longer used
      accidentally reverted some fixes... puting them back
      no longer used
      removing old references to OpenSRF::DOM::Element::userAuth
      need to grab the content from the result message
      added the rest of the magic remote subrequest stuff
      removeing C++ style quote support
      added "api_name" wrapper method
      first cut at the Persist Application
      adjust RESULT objects to allow empty string
      ARG... sqlite is pain
      fixing to allow empty strings, and must be called as a class method
      added nondestructive "peek" methods to stack, queue and object APIs; added "size" to object API; added "depth" to stack API; added "length to queue API
      Added "register_death_callback()" interface to run code at the begining of "kill_me()".  This is the first thing needed to provide a transparent transaction interface somewhere down the line.  It is added now to support database transactions that span multiple requests.  We need this in order to send a ROLLBACK to the DB in the case of a session killing error during a DB transaction.  We don't want to leave locks or failed transactions lying around in the DB, right?
      using a single jabber connection per process, since we do not actually care about the JID we are
      added nondestructive (queue|stack).peek.all interface for grabbing the entire slot without removing anything.  the base registered methods are streaming, so a ".atomic" version is generated by the system.
      make sure there is some space between interval parts
      added .create_expirable interface.  accepts a Utils style interval, and sweeps at each "_flush_by_name"
      added .slot.set_expire interface for setting/removing/updating the expire time of a slot
      fixing create/destroy bugs introduced with the API updates
      WHEEEEEEEEEE! using the router to discover remote apps now
      making return on failure sane
      introspection bug fix for a single method lookup
      API Documentation for the Persistance Application
      spelling correction
      using new client syntax
      using OO syntax
      dunno why that was there.... removed dead code
      allow packages other then the explicitly named application_implementation to publish methods
      settings client fixups
      added extended callback support to sessions
      using disconnect before kill_me during non-error destruction on the server side
      allow max_requests to be infinite on the server side
      fixed numeric opperators
      should fix perist bug with expriable slot creation
      adding -fPIC for x86_64 support
      get_expire method
      added .slot.find for bill
      logging and error detection fixups
      using an O(log n) [n=JSON elements] algo instead of the (worst case) O(2n**2) algo...
      fixed minor bug in the class casting regex; added class finder sub to support said bugfix; added a default class (type hash) for unknown hints
      fixing JSON bug with top level non-casted hashrefs
      fix for JSON::object_unknown
      fix for JSON regexes
      registering classes during load and introspection
      using old regex method + default class
      added profiling mode
      lots of debuging to find that the zombie loop was broken
      removing computed regexes and commenting out unused code
      fixing double cast and format
      removing expire times
      YAY! Unicode works now!
      removing C++ comments, cause they hate me
      oops... left a "warn" in there.
      transactions are working now ... some cleanup is needed
      magically handle any class in JSON.  no need to register class hints anymore!
      automatic generation of most "Publish" methods
      fat fingers make for silly bugs...
      fixing xml quoting issues
      working regex!
      not escaping "/" characters
      eet leevs
      disconnect on magic subrequest, and record message processing time
      fix for embeded $
      bootstrap_client now registers a dummy client server_class
      adding -fPIC to makefiles so they work on amd64
      adding full_request (not sure if we need this) and fixing thinko on disconnect
      added initial limiter and cache population
      error checking in Cache.pm
      cach update
      added general storage result caching where applicable; added actor::card to the fieldmapper
      fleshed out "actor.usr" interface, and stream behavior adjustment
      allow method lookup for a single method.  open-ils.storage takes 10s without this fix...
      first stab at an XSLT to convert the xml fieldmapper config into a pile of javascript
      adding perl XSLT and (maybe?) finishing up the javascript one
      first stab at CDBI autogen
      clarifying namespaces and adding new xslt
      up the timeout for long queries
      adding routerless config support; adding local UNIX domain socket support
      stubber for dokuwiki -- OpenSRF
      set up deps for single builds -- add install-prep to individual install lines
      better sorting and nesting
      aliasing respond_complete to respond
      making introspection filter regexy
      adding filtering and sorting to the introspection stubber
      adding filter info to the help
      added date clenser so we can use DateTime::Format::ISO8601
      adding more fixup support for DateTime::Format::ISO8601; exporting datetime-esque methods
      remove extranious "null"s from JSON
      removing duplicate "complete" messages by completing the server side of the request
      adding MethodException backtrace
      rolling back useless logging change from earlier
      using implicit connect with "method_lookup" style calls;fixing "max_requests" state with an explicit connect; reset request timeout on STATUS=100
      adding new ContinueStatus message
      default to api_level 1
      adding echo method
      passing numbers as bare strings
      fixing number bug in JSON
      changes to support the REST gateway
      the rest gatewaty, eets alive!
      fixing bare "array" inside fieldmapper objects
      making class handling more generic
      bug fix
      bugfix
      removing (confusing) extranious definition
      quoting xml characters, bug fixes
      either my escaper is to naive, or something is wonky with buffer_add_char
      bugfix for buffer_fadd
      moor boogz
      staving off memory leaks
      daemonizing and hushing warnings; logger reopens files instead of writing blindly to an open FH
      removing some minor debuging info
      ooops... octal ;)
      testing reveals bugs, bugs get squashed!
      minor bug fixes and removal of some extra stringifications
      fixing preconstructed Result test in AppSession
      getting rid of some spurious warnings
      add socket options to allow socket recovery and speed up streaming
      protect hash keys by quoting
      protect hash keys by quoting
      protect hash keys by quoting
      separate REST gateway now compiles ... installation is untested
      normalizing wide chars
      matching non-letter and non-number
      matching non-letter and non-number
      matching non-letter and non-number
      matching non-letter and non-number
      fixing up the date scrubber
      adding support for alternate APR header dirs
      logging added by bill
      settings client does not need to bootstrap itself, system will do that
      move the moved call to the right place...
      added "connected" method for stateful sessions
      stripping bad characters
      fixing unicode escaping in JSON
      arg! cut-n-paste error
      touchup on the unicode handler
      cleaning up the pretty printer
      give reasonably unique default for service name
      reduce the overhead of JSONification by removing multiple NF?() calls; make Unicode JSONifcation more robust by using unicode character regexes
      truncating long log lines that go to syslog, as it kills the perl sprintf for some reason...
      moved timeout to global var; later, refactor to command line or config file option (this was needed for storage debuging)
      added lookup_class and lookup_hint methods to support param class instance checking
      added (disabled) signature parsing and (disabled) param count, type, and class checking
      enabling signature parsing; added "notes" pointer from .atomic versions to the original method
      enabled param checking
      updates for the perm editor -- FM dance required
      more opensearch fixup; bugfix for "no need to re-bootstrap"
      sort field and sort order support; signature fix for bill
      turn of signature checking for now
      moving to UNIVERSAL::require to suck in implementation modules
      refactored copy targeter to use new JS copy tester; adjusted object relationships; added ranged tree methods for record and volume
      fixups, and starting a paged interface
      more support for introspection paging
      adding xml format support to the gateway
      moving over to the new gateway xml format
      adding an ISO timestamp builder
      fixed sig building (I hope)
      improving datetime parsing in clense_ISO8601()
      only handle timezone if there was actually a time
      removing session cache; adding support for quiet remote exceptions
      MultiSession, YAY
      modding the result, instead of inside the hash function
      oopsie ... off-by-one potentially causing unbalanced session use
      adding duration timing to requests
      streamlining collection
      adding example script for OpenSRF::MultiSession
      date clensing works properly now... oops
      smarter default "recv"
      optional hash function parameter; minor debuging
      moving debuging to INTERNAL
      debuging changes
      fixing recursion bug
      adding ability to set recv_timeout per session
      adding new open-ils.cstore app; moving new IDL generator to a better home; added userData support to method context
      allow a null param element if argc is 0
      attempting to fix the extra null in respondComplete
      adding a tree filter for future common use
      fixing old fieldmapper_lookup generator
      adding client-side stream push method; working on the ingestor
      experimental port of the C parser (it is slower...)
      fixing typo in the bowels
      logging cleanup
      chopping up dup messages in Client::process()
      fixing month calculation in interval_to_seconds
      switching to some UTF8 code from perl
      switching to some UTF8 code from perl
      new unicode stuff compiles now
      inline the utf8 stuff
      ugly, but it does not warn
      handle the first byte all special-like with utf-8
      off-by-one ... arg
      printf format fix
      using Net::Domain instead of the shell to get the fqdn of the current host
      adjusting comment in example config re bug #518
      spacing adjustment
      Typo reported by Dan Scott
      completely untested and possibly broken settings extention to retrieve defaults when host specific fails
      Avoiding memory leaks in string opperations   - patch provided by Scott McKellar   - http://list.georgialibraries.org/pipermail/open-ils-dev/2007-April/000724.html
      Exiting with a usable error message rather than segfaulting  - patch provided by Scott McKellar  - http://list.georgialibraries.org/pipermail/open-ils-dev/2007-April/000727.html
      printf family format fixup found (har har) and suggested by Scott McKellar -- %lf -> %f (no need for the precision and/or scale of %Lf)
      stderr output cleanup Patch supplied by Scott McKellar http://list.georgialibraries.org/pipermail/open-ils-dev/2007-May/001006.html
      Correcting previous comment.  The right mailing list pointer is at: http://list.georgialibraries.org/pipermail/open-ils-dev/2007-May/001002.html
      const-ification
      Failure cleanups suggested by Scott McKellar; modified from patch at http://list.georgialibraries.org/pipermail/open-ils-dev/2007-May/001006.html
      reordering breakage; const qualifier in header
      strndup() and strnlen() implementations from Jeroen Ruigrok van der Werven See bug #551 for original details -- http://open-ils.org/cgi-bin/bugzilla/show_bug.cgi?id=551
      cut-n-paste error in logged message -- thanks scottmck
      moving this to strn_compat
      compatability functions for strnlen and strndup
      ignore non-leaf text nodes
      From Dan Scott: EOL Whitespace is now stripped in the perl config file, hopefully saving some debugging time in the future.
      XSD from Dan Scott for validating the ~/.srfsh.xml config file. http://list.georgialibraries.org/pipermail/open-ils-dev/2007-May/001030.html
      http://list.georgialibraries.org/pipermail/open-ils-dev/2007-May/001092.html Patch from Scott McKellar to:
      At Scott McKellar's suggestion, using (long) cast and %ld format for getpid()
      Several combined cleanup patches from Scott McKellar:
      Patch from Scott McKellar; allows the compiler to warn us of missing casts coming from undefined safe_malloc()s, NULL-initialize pointers (\0 != NULL).
      Patch from Scott McKellar; reasonable and non-intrusive diagnostic message in the case that we've been given on port or unix socket path to connect over.
      swapped the formats -- typo
      Patch from Dan Scott; adds -rpath=$(LIBDIR) to the default LDFLAGS for OpenSRF, obviating the need to set up non-standard system search paths for any libs that OpenSRF loads that either don't have a lib prefix or live outside the normal system library paths.
      Change suggested by Scott McKellar; handle c-app children death without a signal handler.
      dueling patches of pedantism
      Patch from Scott McKellar;  Adds calls to strerror() where appropriate in OpenSRF/src/utils/socket_bundle.c.
      Patch from Scott McKellar; cleaning up several error conditions
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar with minor adjustments:
      Patch from Scott McKellar to clarify errors in bootstrapping of the server process
      Capturing the return value of the bootstrap call and emitting a message when encountering a non-success value
      Patch from Scott McKellar:
      Patch from Scott McKellar;  rearranges some logic to avoid a potential memory leak
      Patch from Dan Scott to fix up the OpenSRF build process in the new SVN repo:
      Patch from Scott McKellar to add stderr logging when config (and thus configured logging) is unavailable:
      Added osrfLogGetLevel method, then applied partial patch from Scott McKellar:
      thinko, need to return an int from osrfLogGetLevel()
      allow the OSRF_HOSTNAME env variable to specify the local hostname -- for single-box installs
      Patch from Scott McKellar to improve default logging:
      adding router commands to gather some stats about request counts
      adding yet more router commands to gather some stats about request counts
      Patch from Scott McKellar, finishing off the "log to stderr when all esle fails" work:
      I missed patching the header somehow ... (Part of a patch from Scott McKellar. See http://svn.open-ils.org/trac/OpenSRF/changeset/977 for details.)
      Patch from Scott McKellar:
      arg ... Patch from Scott McKellar that:
      Patch from Dan Scott to move perl OpenSRF core bootstrapping settings into opensrf_core.xml.  This removes the dependency on the INI style bootstrap.conf file:
      test for failed forker creation before touching struct members
      cleaning up XML indentation via xmllint; removing bootstrap.conf, which is no longer needed (yay Dan!)
      Patch from Scott McKellar implementing cleaner daemonization; moved daemonizing code above worker forking in system boostrapping:
      Patch from Dan Scott to finish up the removal of bootstrap.conf:
      Patch from Dan Scott to move JSON to OpenSRF::Utils::JSON:
      Completing the JSON perl module move started by patch from Dan Scott.
      removing vestigial DOM code from back when opensrf talked XML
      do the process separation dance on server bootstrapping, just like with the C code
      capture the perl pid using ps instead of $! (forking for daemonization)
      need to wait for perl to catch up ...
      removing signedness warnings coming from libxml2
      moved from custom is_number() to standared ctype.h isdigit()
      a little bit more cleanup from previous DOM/DomianObject removal
      adding COPYING and LICENSE.txt
      Patch from Scott McKellar for declaration cleanup and improved error handling:
      Patch from Scott McKellar to remove srfsh.h and push all relevant delarations into the implementation file, with some additional cleanup to remove "declared by not used" warnings:
      Patch from Scott McKellar to fix potential local buffer overflow attack against srfsh:
      Patch from Scott McKellar, with modifications, to remove unused code and provide some memory protection:
      changing back to an array, from calloc.  more straight-forward, and avoids memset overhead
      Patch from Scott McKellar to clean up srfsh's user interface:
      Patch from Scott McKellar to fill buffer overflow holes:
      Patch from Scott McKellar providing:
      Patch from Scott McKellar to address potential buffer overflow in router query inside srfsh.
      Patch from Scott McKellar to provide defined behavior when passing NULL to an sprintf
      initial sender_locale support ... probably going to break stuff; also, patch from Scott McKellar to define some undefined behavior in an snprintf call
      unbreaking the perl session locale stuff
      formatting fixes; protect against NULL apache setting
      arg ... left out one minor fix
      formatting ... they are all tabs! ;)
      un-crazy-fy current_locale
      more locale cleanup
      Patch from Dan Scott to remove mentions of open-ils from the example config file
      Patch from Scott McKellar to protect SHA-1 against an off-by-one bug
      patch from Scott McKellar to use const pointer qualification during object serialization
      patch from Scott McKellar to examine and report the exit status of child processes as they shut down
      Patch from Scott McKellar to log service name on child process startup and exit, along with more exit status info
      Patch from Scott McKellar which introduces a const-accepting and -returning version of jsonObjectGetKey.  This is the first step in a plan to push const-correctness on the OpenSRF stack when dealing with complex objects.  The hope is that this will increase the utility of compile-time checks in new client code.
      Patch from Scott McKellar to improve const-correctness in srfsh:
      Continued const-correctness improvement from Scott McKellar:
      Use of const-correct osrfObjectGetKeyConst() from Scott McKellar:
      Patch from Dan Scott to:
      Broad patch from Dan Scott to move towards better memory management:
      Patch that:
      adding -l for localhost support
      Patches from Scott McKellar covering:
      Patch from Scott McKellar to clean up some const qualification and initialize a pointer to NULL.
      Patch from Scott McKellar to increase const correctness in the JSON parser.
      Patch from Scott McKellar to provide more const correctness to functions using osrfJSON objects
      make the perl local support match the C version
      uber-patch from Scott McKellar cleans up large amounts of const-correctness issues and static-ifies several areas of unused header-based code; several cleanups to use simpler APIs such as buffer_release
      pushing locale through in the perl
      for-loop initial declaration issue; realigned some const-ification
      still working on the perl locale stuff
      thinko, sorry
      debug logging
      thinko, sorry
      propogate locale from server to client
      removing some debug logging
      Patch from Scott McKellar:
      removing confusing dead code
      Patch from Scott McKellar which adds a free-object-pool for jsonObjects, reducing malloc/free overhead by a large degree
      track malloc()-created objects
      tracking actual list length based on adds and uses
      arg ... add tracking in both "new" functions
      Patch from Scott McKellar to clean up const-iness and simplify the parser internals
      Patch from Scott McKellar to speed up parts of the growing_buffer API; return values from buffer add/reset API brought into a consistent state for proper return value checks
      Patch from Scott McKellar to correct some problems with _jsonParserError(), which constructs and issues a message about a parsing error:
      Patch from Scott McKellar to allow E as well as e for scientific notation
      Patch from Scott McKellar which adds some const-correctness.
      Patch from Scott McKellar; use camelCase instead of under_score function names
      Patch from Scott McKellar; use camelCase instead of under_score function names
      Patch from Scott McKellar; use camelCase instead of under_score function names
      Patch from Scott McKellar; use camelCase instead of under_score function names
      Patch from Scott McKellar; use camelCase instead of under_score function names
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Two patch sets from Scott McKellar
      Memory leak plugged by Scott McKellar:
      Memory leak fixes for the old-style gateway:
      JSON to XML patches from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      turn \d{1,10} into a number on the wire
      camelCasingPatch from Scott McKellar
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar to fix up some const correctness issues.
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar to replace some deprecated identifiers
      Patch from Scott McKellar to plug a memory leak in the mathbench test application
      Patch from Scott McKellar to plug a memory leak in the mathbench test application
      Patch from Scott McKellar:
      Patch from Scott McKellar (including commentary):
      fix paging for large app introspection
      add JSON::XS-based true/false support
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      small memory leak plugged by Scott McKellar in the math-bench test app
      Const correctness patch from Scott McKellar.
      Const correctness patch from Scott McKellar
      Patch from Scott McKellar:
      Parially, a patch from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar providing speed improvement by using fread() instead of fgets()
      Patch from Scott McKellar which removes harmful use of osrf_clearbuf()
      Plug for a a memory leak from Scott McKellar
      dojo wrapper to opensrf JS libs
      Patch from Scott McKellar:
      Patch from Scott McKellar (with commentary on future plans):
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Applying diff from superceding patch provided by Scott McKellar
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      better locale configuriation support
      removing redundant file. covered by DojoSRF.js
      add a copy of the DCO for convenience
      removing overly agressive locale normalization
      give subrequests access to the session (will not be used by respond())
      doh ... not that way, nope
      session passing for make_atomic, at least
      allow methods do decide on their strictness; properly parse params text signatures
      doh ... use m instead of g
      adding explicit request timeout detection
      need to copy automake files instead of linking
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      Patch from Scott McKellar:
      force default locale on all messages
      typo; this fix will precipitate a new release to support connected sessions through the translator
      Patch from John Craig fixing a problem with the pre-reqs makefile
      teach interval_to_seconds about negative intervals
      teach interval_to_seconds about HH:MM:SS format time intervals
      give decodeJS a way to try to load a class that was requested but does not yet exist
      keep the typo around for a while ... sorry, dbs ;)
      add non-destructive methods for grabbing first and last responses on the response queue
      just adding a marker for where the "peer domain" logic should likely be plugged in
      Add response chunking support to the Perl implementation of OpenSRF
      Mike, when adding the length, actually add the length, not the string
      always use respond_complete to finish a request, whether there is a final message or not
      return the trace-augmented message as written to the log

phasefx (20):
      Initial revision
      oops, perl syntax
      Need to set a global myPackageDir before loading the OpenSRF scripts. I'm sure there is a better Mozilla way to do this (what directory in chrome am I actually running from?)
      A XUL version of the math app example.  Some assembly required with the client_config.xml file.
      We're not using authentication past Jabber anymore.
      casting
      complete is a method
      the domain object stuff will be going away
      oopsie
      oopsie
      Need to revisit this stuff
      Some bugfixes from Bill
      We had casting removed for the cat demo.  We need to revisit this.
      syntax
      adding initial test file for generating all fieldmapper implementations from a config file
      quote-o
      srfsh.xml tweaks
      forgot a noun
      correct the test for modifying the *.xml.example files
      fix usage example

pines (2):
      adding possible "methods" element
      moving from XML to JSON in the core messaging

sboyette (48):
      merging perl CPANification/normalization branch work
      OpenSRF::Util::JSON requires JSON::XS, not JSON
      typo
      missing deps found via testing
      can has use tests for all modules
      initial steps toward OS X portage
      OpenSRF.pm version changes
      initial checkin for perl Makefile.am
      adding src/perl to AC_CONFIG_FILES
      removing perl special-casing from src/Makefile.am
      M::B changes
      M::B changes
      Build.PL built; build/test/install all selfcontained and automatic now
      Added distclean-local: target and DISTCLEANFILES to make 'make distclean' work superawesomely Added ACLOCAL_AMFLAGS at the behest of libtoolize
      AC_CONFIG_MACRO_DIR added at the behest of libtoolize
      Added DISTCLEANFILES to make "make distclean" work better
      Going back to dumping a script (unbreaking non-root make vs. make install)
      'make' will now just plain make again without proceeding to install. Added Build to files swept by 'make clean'
      removing files no longer needed
      added separate install fail diagnostic message
      updating MANIFEST for Module::Build-ness
      'make check' works as promised. perl tests moved to 'check' target
      preƫmptive version bump
      local doc updates for recent changes. wondering how much point there is in keeping these around, long-term
      that last version change was rather poorly timed, as it turns out
      ditto
      method prettyJSON doesnt exist anymore
      removed $VERSION construct which caused undef warnings when not under svn, and only occurred in 2 modules
      new test files for Utils breakout
      rearranging things a bit, docs. no actual code changes.
      removing OSRF::Utils::LogServer at berick's suggestion
      shuffling around, adding POD stubs
      removing _json_hint_to_class
      removing use of LogServer
      yanking LogServer test file
      more cleanup and documentation in progress
      first tests
      changed 'my' globals to 'our' globals for testing purposes
      WIP
      stowing WIP
      sync
      more test
      WIP
      WIP
      100% test coverage
      POD/docs cleanup
      LogServer was removed from distro but not from MANIFEST - fixed
      exit with error code when tools are not found

scottmk (208):
      Add a new function buffer_add_n(), and the corresponding function-like macro OSRF_BUFFER_ADD_N.
      1. In osrf_stack_transport_handler(): removed the memset() as    pointless.
      This update restructures the mechanism for queueing incoming transport messages.  In addition, the update to transport_client.c rearranges the logic a bit in client_recv().
      This update boosts the performance of the jsonFormatString function.
      Tinkering with macros.
      1. Make the functions reset_session_buffers() and grab_incoming() static, since no other source file references them by name.
      Eliminated four dead functions that are never called except by each other:
      Eliminated the obsolete function osrf_message_free(), which is now completely replaced by the equivalent osrfMessageFree().
      Eliminate the old obsolete function osrf_app_session_connect(), which has now been completely replaced by the equivalent osrfAppSessionConnect().
      Oops, missed one last instance of osrf_app_session_connect(). Replacing with osrfAppSessionConnect().
      Rewrote the OSRF_MALLOC macro so that it evaluates each of its arguments only once.
      Prepare for #inclusion in C++ programs
      Add compilation guard; prepare for #inclusion in C++
      Add compilation guard; prepare for #inclusion in C++
      Add compilation guard; prepare for #inclusion in C++
      Add compilation guard; prepare for #inclusion in C++
      Add compilation guard; prepare for #inclusion in C++
      Add compilation guard; prepare for #inclusion in C++
      Rename macro for compilation guard; prepare for #inclusion in C++
      Rename macro for compilation guard; prepare for #inclusion in C++
      Rename the macro for compilation guard; prepare for #inclusion in C++
      Rename macro for compilation guard; prepare for #inclusion in C++
      Rename macro for compilation guard; prepare for #inclusion in C++
      Move nested headers into complation guard; prepare for #inclusion in C++
      Move nested headers into complation guard; prepare for #inclusion in C++
      Move nested headers into complation guard; prepare for #inclusion in C++
      Move nested headers into complation guard; prepare for #inclusion in C++
      Move nested headers into complation guard; prepare for #inclusion in C++
      Move nested headers into complation guard; prepare for #inclusion in C++
      Move nested headers into complation guard; prepare for #inclusion in C++
      Rename macro for compilation guard, to avoid conflict with osrf_hash.h.  Prepare for #inclusion in C++.
      Prepare for #inclusion in C++
      Prepare for #inclusion in C++
      Prepare for #inclusion in C++
      Prepare for #inclusion in C++
      Prepare for #inclusion in C++
      Prepare for #inclusion in C++
      Prepare for #inclusion in C++
      Prepare for #inclusion in C++
      Prepare for #inclusion in C++
      Prepare for #inclusion in C++
      Prepare for #inclusion in C++
      Prepare for #inclusion in C++
      Prepare for #inclusion in C++
      Prepare for #inclusion in C++
      Move the xmlSAXHandler out of the header and into the implementation file, along with the declarations of the associated callback functions (which are now static)
      Move the xmlSAXHandler out of the header and into the implementation file, along with the prototypes of the associated callback functions (which are now static)
      Bug fix.  In some circumstances (unrecognized status code from server) we were trying to free the same osrfMessage twice.
      In the macro OSRF_LIST_GET_INDEX: placed all occurrences of the macro arguments in parentheses, to prevent unexpected effects when one or more of the arguments is an expression.
      1. Replaced the innards of an osrfStringArray to include an osrfList instead of a pointer to an osrfList.  This change eliminates a layer of malloc and free when creating and destroying an osrfStringArray.  It also eliminates a layer of indirection when performing other operations.
      Reformed the macros OSRF_METHOD_VERIFY_CONTEXT and _OSRF_METHOD_VERIFY_CONTEXT.
      Add a function osrfMethodVerifyContext() to do what the existing OSRF_METHOD_VERIFY_CONTEXT macro does.  Use it in _osrfAppRunSystemMethod() and osrfAppEcho().
      Add a new function osrfStringArrayTokenize.  It parses an input string into tokens separated by a specified delimiter character, much like strtok() or strtok_r(), and loads them into an osrfStringArray.
      This update mainly tightens the error handling.
      Replace the OSRF_METHOD_VERIFY_CONTEXT macro with an equivalent call to the osrfMethodVerifyContext function.
      Replace the OSRF_METHOD_VERIFY_CONTEXT macro with an 2 equivalent call to the osrfMethodVerifyContext function.
      eplace the OSRF_METHOD_VERIFY_CONTEXT macro with an 2 equivalent call to the osrfMethodVerifyContext function.
      1. Added a missing #include
      Plug a memory leak reported by Steven Chan.
      In osrf_system_shutdown(): provide a return value for an early return (since the function is of type int).
      1. Create a new osrfListExtract function, which removes an item from an osrfList without destroying it, and returns a pointer to the item thus removed.
      In osrfConfigGetValue(): plugged a memory leak reported by Steven Chan.
      New JSON parser -- simpler, faster, and more robust in the face of syntax errors
      Performance tweak for osrfLog* functions: don't pass the message through VA_LIST_TO_STRING unless you're actually going to use it.
      1. If an input line ends in a backslash, remove the backslash and append the following line as a continuation.
      Fix a bug whereby, if there was only one <service> entry for the public router in opensrf_core.xml, the service would fail to register.
      Add two new commands, "open" and "close", to open and close ongoing connections to specified services.  (Otherwise a connection is created and destroyed for every request.)
      This is a performance tweak to the osrfHashGet function, a widely used utility function.
      Performance tweak to jsonIterator.
      Extended the JSON_INIT_CLEAR macro to avoid segfaults.
      1. Add comments to be recognized by doxygen or other such documentation generators.
      1. A minor streamlining of va_list_to_string(), to eliminate a layer of copying.
      1. In osrfListSetDefault(): install the standard function free() as the default item-freeing callback function, instead of the gossamer-thin and useless wrapper for it, osrfListVanillaFree().  This change eliminates a layer of function call overhead.
      Enhanced the error messages from osrf_settings_host_value() and osrf_settings_host_value_object() to include the requested search path.  That should make it easier to identify the caller and thereby figure out what went wrong.
      Tweaking comments for doxygen:
      1. Moved the declaration of the osrf_host_config struct out of the header. Nothing outside of osrf_settings.c needs access to any members of this struct.
      In osrfNewHash(): specify a size for the osrfList used as a hash table, so as to avoid wasting memory.
      In osrfStringArrayRemove(): fixed a bug whereby we would decrement the size member even if no string was actually removed.
      In osrfBigHashFree: added a const qualifier to key, and removed a pointless cast.
      In osrfSystemBootstrap(): added a const qualifier to appname.
      In osrfAppSessionClientInit(): added a const qualifier to domain.
      In apacheGetParamValues() and apacheGetFirstParamValue(): applied const qualifier to nkey.
      In osrf_json_gateway.c: added the const qualifier to three different local variables, all named "str".
      Changed the signature of osrfStringArrayGetString():
      1. Add doxygen markup for documentation.
      1. Changed osrfLogFacilityToInt() so that it accepts a const pointer.
      1. Eliminated some memory leaks by replacing calls to jsonObjectFindPath() (whose return values weren't getting freed) with calls to jsonObjectGetKey().  This change will also speed up the configuration a bit by avoiding the cloning of objects.
      Comment out an error message added in the previous patch.
      We routinely grab a chunk of configuration file that doesn't apply to the router process.  When we detect the spurious hit, we throw it away and go on to the next one.
      1. Add doxygen-style comments to document functions in the recursive-descent JSON parser.  Tidy up or correct existing comments here and there.
      Change the return type of jsonObjectGetString so that it is a pointer to const char, instead of to non-const char.
      Enhance the performance of the recursive descent JSON parser, mainly the jsonParse() function.
      Tweak jsonObjectDecodeClass so that it preserves classnames that are already present.  The previous version would add new classnames, if it found them encoded, but would drop any old ones.
      Created a new function osrfHashExtract().  It extracts an item with a given key from an osrfHash, without destroying it, leaving the rest of the osrfHash intact.
      Performance tweak to message handling.
      Small performance tweak.
      Fix a bug in md5sum() (which only affected code compiled with debugging turned on).
      Performance tweak to the logging routines.
      1. osrfLogGetXid now returns a pointer to const.  We don't want the calling code to be able to overwrite the cached copy of the transaction id.
      Add doxygen-style comments to document all functions and all variables at file scope.
      Add doxygen-style comments to document macros, and an overview at the top.
      1. Replace the old JSON parser (jsonParseString()) with a newer, faster one (jsonParse()).
      1. Moved the declaration of socket_node from the header into the implementation file.  No other source files need to be exposed to it.
      1. In socket_open_tcp_client(): use getaddrinfo() instead of gethostbyname(). The latter is obsolete, according to the man page and other sources.
      1. In socket_connected(): if the select() fails because it is interrupted by a signal, it doesn't mean that the socket is invalid, so try again.
      Eliminated _socket_route_data_id() as a separate function, incorporating its contents into the end of socket_wait().
      Various cleanups in transport_session.c:
      Implemented session_connected(), which had been declared in the header but never defined.
      Merged _socket_route_data() into its only caller, after untangling its logic.
      1. Moved several macros from the header to the implementation file.  They aren't used anywhere else.
      1. Added comments to document the process of connecting to Jabber.
      1. In endElementHandler(), responding to an error: don't explain what a 401 error is unless that's the error that happened.
      1. Tidy up the white space.
      Add doxygen-style comments to document the transport_message structure.
      1. Tidy up the white space.
      Tinkering with white space and comments.  No substantive changes.
      Fixed a bug in osrfRouterClassFree().  We were trying free the same osrfRouterClass twice -- once directly, and once by an unintended recursion.
      Changed the signal handling.
      New function: client_sock_fd().  It returns the socket fd used by the transport_session underlying a specified transport_client.
      1. Move the declaration of osrfRouter out of the header and into osrf_router.c.  There's no need for any other source file to know about the internals.
      In the main loop of the router: if the select call fails for any reason other than an harmless signal (i.e. one whose handler didn't set a switch to stop the loop), then break out of the loop and terminate.
      1. Changed several functions that were returning int so that they return void instead.  We weren't checking the return codes anyway, since the functions in question handle their error conditions on their own.
      1. Added an osrfHashIterator as a member of osrfRouter, so that we can reuse it when repeatedly traversing the list of classes. This way we don't have to create and destroy an osrfHashIterator on every iteration.
      Eliminate a potential (if unlikely) memory leak:  Free a transport_message.error_type before overlaying it.
      1. Further refinement of comments.
      Several bug fixes:
      Corrected a glitch in the command-line parser.  Now commas are treated as the equivalent of white space between parameters.  For example { "a":5 },{ "b":true } is parsed as two separate JSON objects, even though there is no white space between them.
      Miscellaneous minor tweaks:
      No substantive changes.
      1. Fixed a bug whereby the display of request results was not showing up when pretty-printing was turned off.  We were calling jsonObjectGetString() when we should have been calling jsonObjectToJSON(), and thereby getting NULL instead of a usable string, for any but the most trivial of results.
      Tidied up various things:
      Pulled the creation of a single osrfMessage from a jsonObject into a separate function.  This change simplifies osrf_message_deserialize(), and will make it easier to create a replacement for it.
      Created a new function osrfListClear() to take an existing osrfList and make it empty.
      Create a new function osrfMessageDeserialize(), as a replacement for osrf_message_deserialize().
      Replace the the call to osrf_message_deserialize() with a call to osrfMessageDeserialize().
      Move the libxml headers out of the header and into the implementation file.
      1. Changes to comments and white space.
      Eliminated two members of the osrfMessage structure: result_string and sender_tz_offset.  Neither is used for anything, and either may be easily reinstated if necessary.
      Tinkering with comments and white space.
      Replacing calls to the old JSON parser with calls to the new JSON parser.
      Added some comments, tinkered with white space; no substantive changes
      Eliminated the function pointer osrf_stack_entry_point so that osrf_app_session_queue_wait() can call osrf_stack_process() directly. This change entails some juggling of declarations, headers, and the like, but does not substantively affect the processing.
      Add three new functions:
      1. In osrf_app_session.[ch]: Create a new function osrfAppSessionSendRequest(), similar to osrfAppSessionMakeRequest() but without the param_strings parameter.
      Replace calls to osrfAppSessionMakeRequest() with calls to osrfAppSessionSendRequest().
      Replace calls to osrfAppSessionMakeRequest() with calls to osrfAppSessionSendRequest().
      Log a warning message whenever the deprecated function osrfAppSessionMakeRequest() is called.
      Correct a typo in a warning message
      1. In the parent router process: wait for all of the immediate child processes to terminate before exiting.
      Add routines for calculating SHA1 and MD5 digests, based on the gnutls package.  These routines are designed to replace the current functions shahash() and md5sum(), but they are not drop-in replacements because they have different signatures.
      Add a stream parser for JSON, and a format_json utility that uses it.
      Changed the way pending requests are stored in an osrfAppSession.
      Incorporate _osrf_app_request_resend into osrf_app_session_request_resend(), which had been its only caller.  The code is trivial enough that it will be simple to break out again if necessary.  Meanwhile having it all in a single function makes it more readable.
      Finished adding doxygen-style comments to document the app session functions.  Removed comments from the header so that they wouldn't override more complete comments in the implementation file.
      Mostly tidying up white space and comments.  Also rearranged the #includes a bit.
      Moved nested #includes out of osrf_prefork.h and into the implementation files. Somne of the #includes turned out to be unnecessary, so I eliminated them.
      Added or modified a lot of comments; made some minor tweaks to white space.
      In srf_app_server_session_init(): if the requested session already exists, treat it as an error.
      1. For keeping track of the child processes: use a doubly-linked list instead of a singly-linked list.  The resulting list manipulations are both simpler (fewer special cases) and faster (no need to traverse then entire list just to find the end).
      Tinkering with comments and white space; nothing substantive.
      Close a substantial resource leak in drone processes.
      Refactored the signal handling so that we shut down in an orderly fashion instead of calling _exit() from inside a signal handler.
      Instead of keeping all child processes in a single list, keep them in two separate lists: one list of those which are currently servicing requests, and another list of idle children.  Move the children back and forth as their status changes.
      1. Correct some mangling of the linked list pointers that keep track of child processes.
      Reverting to a previous version believed to be good. A recent update introduced a nasty bug, not yet squashed.
      Bug fix.
      Rearrange the error handling a bit in send_request().  The old code looked like it would segfault in the case of a relay command.
      1. For the "request" command: removed the calls to osrfAppSessionConnect() and osrf_app_session_disconnect().  There's no point in opening and closing a connection for a single request.
      Tidying up various things; nothing substantial.
      1. Change xmlSaxAttr() to return const char* instead of non-const char*.
      1. Reworked the xmlDocToJSON and _xmlDocToJSON functions for clarity. In particular: _xmlDocToJSON() now returns void, and requires its second parameter (the jsonObject*) to be non-NULL.  The old version behaved differently depending on whether the second parameter was NULL. I found that arrangement confusing.
      1. Added doxygen-style comments to document all functions.
      1. Refactored _do_client() and _do_server() so as to untangle some needlessly convoluted and confusing logic.
      Tidy up white space and comments; no substantive changes.
      Tidying up various things; nothing very substantial.
      Miscellaneous minor changes. mostly for clarity:
      A small performance tweak.
      Tidying up white space; no substantive changes.
      Added a const qualifier to one variable.
      Apply the const qualifier to one variable.  Tidy up white space.
      Apply the const qualifier to the return value from osrfMessageGetResult().
      Fix the jsonFormatString function.
      Set the appname to the logging routines at the beginning of osrfAppRegisterApplication() instead of at the end, so that messages issued during initialization of the application will be properly identified.  This change particularly affects apps that do a lot of initialization, such as cstore, rstore, and pcrud.
      Fix a bug that occasionally caused OSRF not to shut down cleanly.
      Write the PID file from the child process (the one that launches the listeners), not from the parent process; and only if it actually launches a listener.
      Eliminate the daemonize_write_pid function (thereby reverting a previous change).
      When traversing a list of osrfMessages: don't free the messages. The list owns them.  Instead, get the list to free them when you're done, by calling osrfListClear().
      1. Changed an error message to make it clearer.  This is the message that relays an error message from the Jabber server.
      Rearrange the way that a listener juggles its drones.
      Add a bit of bulletproofing.
      Provide a mechanism whereby a server drone can terminate immediately, without waiting for max_requests or a DISCONNECT message.
      1. Make osrfMessageToJSON() available at global scope.
      1. Add a buffer to osrfAppSession structure; for future use
      Implement the chunking of OSRF messages.  I.e. bundle multiple OSRF messages into an XMPP message, up to about 10k bytes, so as to reduce networking overhead.
      Fixed a bug in the chunking.
      Cruft removal; there should be no outwardly visible effects.
      Provide a way for a service to set the effective buffer size for a specified method.
      Adding comments and tinkering with white space. No substantive changes.
      Minor cleanup:
      Eliminate the old JSON parser, implemented in osrf_json_parser.c and the associated header osrf_json_utils.h.
      Add some macros for upward compatibility from the old JSON parser.
      Minor performance tweak: replace a call to buffer_add() with a call to buffer_add_n().
      Pedantic change for const-correctness: replace two calls to jsonObjectGetKey() with calls to jsonObjectGetKeyConst().
      Pedantic change for const-correctness: change three calls to jsonObjectGetKey() to call jsonObjectGetKeyConst() instead.
      1. Pedantic change for const-correctness: replaced all calls to jsonObjectGetKey() with calls to jsonObjectGetKeyConst().
      Several minor and inconsequential changes:
      A few minor tweaks in the name of const-correctness.
      Plug a minor memory leak that could occur when we opened a TCP connection to a server.  In practice this meant whenever we opened a Jabber session.

-----------------------------------------------------------------------


hooks/post-receive
-- 
OpenSRF


More information about the opensrf-commits mailing list