[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