Version 1.8.7
[metaproxy-moved-to-github.git] / NEWS
diff --git a/NEWS b/NEWS
index 14ad257..b11dfdf 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,630 @@
+--- 1.8.7 2015/04/01
 
 
-Fixes for windows compilation.
+Fix dead lock in session_shared (init) MP-605
+
+--- 1.8.6 2015/04/01
+
+Fix session_shared caches set with diagnostic MP-604
+
+Fix assertion failed in session_shared filter MP-603
+
+Make /usr/share/metaproxy be part of metaproxy RPM MP-601
+
+Log YAZ version upon start MP-599
+
+--- 1.8.5 2015/03/17
+
+sru_z3950: undo Serialize identical SRU GET requests MP-598
+Now much more elegantly handled by session_shared.
+
+session_shared: anticipated init and search MP-597
+
+z3950_client: separate init timeout MP-596
+Both init-timeout and connect-timeout are configurable by this change.
+Default is 10 seconds.
+
+--- 1.8.4 2015/03/16
+
+zoom: support cf_-params MP-595
+
+http_client: returns 404 if no destination URI is given
+
+--- 1.8.3 2015/02/10
+
+zoom: allow / in user and password db args MP-592
+
+--- 1.8.2 2015/02/02
+
+Log rotate no longer reloads configuration - instead Metaproxy just
+re-opens log files when SIGHUP is received. MP-485
+
+Debian : init.d metaproxy reload should check configuration MP-591
+
+Fix Metaproxy stops logging after check config failed MP-590
+
+--- 1.8.1 2015/01/19
+
+Fix double free in log filter (with incorrect config) MP-589
+
+zoom: Add allow_ip feature - fixes MP-588
+Allow a list of IPs to be given separated by blanks
+<allow auth_url="http://mkc-admin.indexdata.com/..."
+   allow_ip="127.0.0.1 ::1" .. >
+
+cql2pqf.txt: Maps dc.subject to Bib-1 21 rather than 47
+
+zoom: fix CS write-check
+
+--- 1.8.0 2015/01/08
+
+zoom: handle contentAuthentication MP-587
+
+--- 1.7.2 2014/12/16
+
+Destroy router and filters in parent process MP-584
+
+Update NMAKE makefile to use Visual Studio 2013 along with Boost 1.57,
+ICU 54.1, Libxml2 2.9.2, Libxslt 1.1.28.
+
+--- 1.7.1 2014/12/02
+
+Use YAZ backtrace facility MP-582
+
+Fix libmetaproxy-dev depends on libgnutls-dev - MP-580
+libgnutls-dev is unavailable on jessie.
+
+Update template filter to avoid Pimpl MP-579
+
+cgi: POSTed content - part of MP-562
+
+Fix filter cgi does not relay session close MP-577
+
+--- 1.7.0 2014/10/28
+
+Add support for binding outgoing IP for http_client and z3950_client
+This is enabled by bind_host setting. MP-575
+
+--- 1.6.0 2014/10/21
+
+z3950_client: allows negotiation charset to be set MP-574
+
+cgi: more functional but no support for POSTed content yet (part of MP-564)
+
+--- 1.5.11 2014/10/20
+
+http_file: add include of sys/stat.h fixes MP-576
+
+Fix documentation about SRU client support MP-572
+
+Initialize Libxml2 - for threaded operation MP-571
+
+--- 1.5.10 2014/08/26
+
+On SIGTERM shut down connection+listening sockets MP-568
+This fixes a problem with 'metaproxy stop' sometimes taking a long time.
+
+--- 1.5.9 2014/08/15
+
+zoom: make retry on failure configurable MP-565
+The default and existing behavior is that backend failures (any
+diagnostic) makes the module re-search once. The behavior may
+be changed by db parameter 'retry'. If given value '0' disables
+retry and '1' enables it. If not given, the Torus record may
+specify with element retryOnFailure (value '0'/'1').
+
+--- 1.5.8 2014/08/01
+
+Fix race condition in SIGTERM handling. Could terminate whole metaproxy
+instead of just a child process. Extremely rare in real life, hit me with
+CF stress testing. MP-559.
+
+--- 1.5.7 2014/07/15
+
+http_file: passthru option MP-557
+New facility for http_file to passthru - even if an area is matched. The
+default behavior (passthru=false) is to return 404: Not found. With
+passthru=false, next filter is consulted.
+
+--- 1.5.6 2014/07/14
+
+Fix ref to freed memory in log filter 1line - MP-556
+
+echoedSearchRetrieveRequest support MP-555
+
+--- 1.5.5 2014/06/06
+
+zoom: allow hostname to be given for ipauth MP-552
+The Torus setting for that is called auth_hostname.
+
+--- 1.5.4 2014/06/04
+
+zoom: IP auth use field "ipRanges" rather than "ip" MP-551
+
+--- 1.5.3 2014/06/03
+
+session_shared: close in ~BackendInstance MP-549
+This fixes a serious issue where some MP would leak sockets.
+
+session_shared: mutex lock in BackendClass::release_backend MP-550
+Fixes a SEGV that could occur (in rare cases).
+
+--- 1.5.2 2014/05/22
+
+zoom: Do not include ZOOM C's fake surrogate diag recs MP-547
+
+zoom: fix invalid present response in some cases MP-546
+
+zoom: Relay Torus HTTP error message
+
+--- 1.5.1 2014/04/28
+
+Check for proper limits before using RecordCache functions MP-544
+
+--- 1.5.0 2014/04/24
+
+Build packages for Ubuntu Trusty Tahr 14.04 LTS
+
+sort: crash / invalid_read in filter sort MP-541
+
+sru_z3950: facet should be stored in additionalSearchInfo MP-533
+
+doc: fix missing man pages MP-542
+
+cql_rpn: fix threading problem with CQL to RPN conversion MP-497
+
+cql_rpn: allow conversion from RPN to CQL (reverse) MP-537
+
+--- 1.4.8 2014/04/02
+
+sru_z3950: fix facet response (memory corruption) MP-532
+
+log: fix crash idPass user is omitted MP-530
+
+--- 1.4.7 2014/03/25
+
+query_rewrite: pass-thru non Type-1 queries MP-527
+
+metaproxy stop (SIGTERM) kills all child processes spanwed by
+filter (if any) before invoking filter destructors. MP-525
+
+--- 1.4.6 2014/03/21
+
+http_file: only supports HTTP GET MP-523
+
+session_shared: shut down expire thread in destructor
+This ensures that expire thread is not running after destruction
+and does bad memory references, etc.
+
+frontend_net: fix segfault on startup MP-524
+Would happen if MP was listening on multiple ports and one
+of the ports was already in use (and MP would exit).
+
+frontend_net: fix memory leak MP-521
+This leak would occur if all sessions were in use and the input
+queue was cleared when a client would close connection (socket).
+
+frontend_net: fix compilation on Windows (SIGUSR1 does not exist)
+
+--- 1.4.5 2014/03/14
+
+http_rewrite: use local skiplist; fixes memory corruption. MP-520
+
+http_client: x-forwarded-for controls X-Forwarded-For presence
+If x-forwarded-for setting (boolean) is enabled, http_client will
+generate an X-Forwarded-For header entry which includes existing
+X-Forwarded-For (if any) and current peer address (immediate client
+of Metaproxy). By default x-forwarded-for disabled and X-Forwarded-For
+will not be generated.
+
+z3950_client: client_ip controls client-IP presence
+If client_ip setting (boolean) is enabled, z3950_client will
+generate a client_ip OID as part of init request which includes
+previous client_ip (if any) and current peer address (immediate
+client of Metaproxy). By default client_ip is disabled and client_ip
+will not be generated.
+
+HTTP X-Forwarded-For/Z39.50 Client-IP support
+virt_db, multi: relays Z39.50 client-IP.
+sru_z3950: converts X-Forwarded-For header to Z39.50 client-IP.
+zoom: uses Client-IP or origin address (prefer Client-IP).
+frontend_net: Strips tcp: from peer address (so that it is no longer
+printed and stripped in zoom filter).
+z3950_client: builds client-IP list - combining immediate peer address
+as returned by COMSTACK and existing client-IP list (if avaiable).
+The Origin only printes first X-Forwarded address.
+
+--- 1.4.4 2014/02/18
+
+Log when SIG{TERM,USR1} is received ASAP MP-513
+Do it in frontend_net event loop rather than in place for metaproxy
+main, which only exits when all sessions are terminated for SIGUSR1
+at graceful stop.
+
+metaproxy-config: quote some RHS values (that might include blanks)
+
+Fix leak in sru_z3950 filter - when explain is returned MP-511
+
+Allow stylesheet to be given for sru_z3950 filter MP-510
+This is based on a patch by Sven Porst and the functionality
+of the YAZ Generic Frontend Server.
+
+Allow base attribute in configuration file tags - the attributes are
+inserted by XInclude usage as mentioned on
+yazlist: http://lists.indexdata.dk/pipermail/yazlist/2012-Au
+and noted in a gist: https://gist.github.com/3551094
+
+Package metaproxy provides virtual package metaproxy6 MP-508
+This allows module packages to depend on a metaproxy server
+with version 6 API.
+
+Filter destructors called upon daemon termination MP-505
+When metaproxy daemon receives SIGTERM the stop method of each filter
+is called. The stop method existed before, but did not take any
+arguements (void).. The frontend_net filter can now distinguish
+between SIGUSR1 (stop bind, but keep sessions running) and SIGTERM
+(stop immediately). Note that this changes the API+ABI of Metaproxy
+filters.
+
+zoom: sync up with Pazpar2 WRT authentication handling MP-492
+
+Router: use shared_ptr rather than naked one - to avoid leak if an
+exception is thrown in configure.
+
+--- 1.4.3 2013/12/10
+
+zoom: Add nocproxy=1 for contentConnector sessions MP-501
+
+Doc: mention proper versions; fix link to Boost win binaries.
+
+Windows: update for Boost 1.55
+
+Windows: avoid warning when using boost::split. Done by defining
+_SCL_SECURE_NO_WARNINGS for Visual Studio.
+
+Fix LSB conformance for /etc/init.d/metaproxy MP-500
+Debian: add support for /etc/init.d/metaproxy status
+
+sort: Add const to Record less than operator in order to compile on
+OS X Maverick.
+
+--- 1.4.2 2013/11/15
+
+session_shared: fix element-set handling in record caching. MP-499
+
+document http_rewrite. MP-468
+
+http_write: Honor X-Metaproxy-SkipLink MP-479 . Filter understands and
+respects the header (which will normally come from the cproxy filter)
+
+--- 1.4.1 2013/10/31
+
+RPM: fix dependency for libmetaproxy5-devel MP-496. The libmetaproxy5-devel
+RPM was unsable in version 1.4.0.
+
+Remove log message about "backend classes". Appeared in version 1.4.0.
+
+--- 1.4.0 2013/10/04
+
+Build RPM/Deb packages with YAZ 5 and yazpp 1.5. Metaproxy still compiles
+with older version from source, but packages now use YAZ 5 that supports
+SRU 2.0.
+
+sru_z3950: Fix SEGV for decoding invalid SRU requests
+Incorrect reference to union (was explain response rather than
+search response).
+
+session_shared: match additionalSearchInfo (includes facets). In
+layman's terms means that means that facets are properly handled
+by this filter. Eg a change in requested facets will issue new
+search and facets from exisiting result set are cached.
+
+--- 1.3.62 2013/09/11
+
+http_rewrite: better handling of <script> content in HTML parser. MP-486
+
+http_rewrite: fix threading issue with regex. MP-482
+
+bounce: don't use strdup for fixed length content. Error occurred in echo
+mode only.
+
+session_shared: expire backend class when no instances left. This
+means memory clean up, but not really a leak fix.
+
+virt_db: fix leak for naked ptr.
+
+cql_rpn: use config relative path for cql2rpn file. MP-481
+
+Updates for upcoming YAZ 5.
+
+--- 1.3.61 2013/08/29
+
+New configuration directories ports.d/routes.d for metaproxy
+configuration. This allows 3rd party packages to install config
+for ports and new routes. MP-477
+
+--- 1.3.60 2013/08/21
+
+Fix metaproxy-config --libs to return non-mt over mt libs.
+The -mt versions do not exist as shared objects and cause
+linker errors for applications linking with Metaproxy.
+Problem present in versions 1.3.56 - 1.3.59. MP-475
+
+HTML: clean up char checks. Add ptr to HTML parse spec
+
+HTML parser stops eating tag when <-char is met  MP-473
+
+rewrite: do not even compare content types, if we don't have any
+the regex_match caused a segfault if we had no content-type in the
+headers. MP-471
+
+rewrite: within header=... matches only the header value
+Used to match the whole header line, but we need to use
+^$ anchoring for host-relative regexps, and they need to
+anchor at the ends of the value. MP-470.
+
+rewrite: Ruleset functional MP-469
+
+--- 1.3.59 2013/07/12
+
+session_shared: negotiate init sz parameters.
+By default, session_shared will honor the paramters given by client.
+An alternative, but not implemented, algorithm would be to only
+re-use sessions with same sz parameters. This however, could reduce
+re-use of sessions a lot. Hence this, simple algorithm instead. The
+negotiation to a maximum sz values can be enabled by using
+   <init maximum-record-size="sz1" preferred-message-size="sz2"/>
+in configuration. This will make session_shared send those values
+to backends and use returned init values in negotaition to
+client before session_shared.
+
+session_shared: resolve result-set references.
+The reference is substitued with the query for old set if database
+match and query type is Type-1. If not the reference will issue a
+diagnostic.
+
+sort filter: relays RecordComposition including elementSet in use for
+search.
+
+http_client: better diagnostics
+
+http_client: disables HTTP redirect handling by default.
+It can be configured with max-redirects in configuration.
+
+--- 1.3.58 2013/06/12
+
+Fix loading of filters cql_rpn and sru_z3950 . Was broken by 1.3.57.
+
+--- 1.3.57 2013/06/12
+
+Make RouterChain and RouterXML part of public API (libmetaproxy).
+
+http_client: honor X-Metaproxy-Proxy as an alternative to
+the "proxy" configuration. Allows proxy to be set per HTTP request.
+
+sru_z3950: For SRU requests recognize x-client prefixes as a way
+to ingest "database parameters".. The suffix of x-client- serves
+as database argument name. Multiple may be given. For example:
+  http://path/db/?operation=searchRetrieve&x-client-user=a&x-client-password=b
+is turned into Z39.50 database
+  db,user=a&password=b
+
+--- 1.3.56 2013/05/27
+
+New filter present_chunk. This filter allows splitting of present requests into smaller chunks.
+
+New filter sd_remove, which replaces surrogate diagnostics with
+SUTRS records. This filter tries to deal with clients that breaks
+when receiving surrogate diagnostics.
+
+new filter http_client. Same role as z3950_client, but just for
+HTTP. Allows Metaproxy to operate as a HTTP proxy.
+
+New filter http_rewrite1, which serves as purpose on how to rewrite
+HTTP content with Metaproxy.
+
+Use libboost-system if available, because newer versions of libboost-threads
+requires libboost-system.
+
+Allow frontend_net to serve SSL/HTTPS, because we can specify a server
+certificate now.
+
+--- 1.3.55 2013/04/10
+
+zoom: Torus setting: authenticationMode which may hold values "basic"
+and "url".
+
+--- 1.3.54 2013/03/27
+
+configure: check for Libxslt support in YAZ and rely on definitions
+from yaz-config, rather than doing own xslt/xml2 checks.
+
+Allow timestamp format for log lines to be given with option -m
+for metaproxy. Similar to yaz-ztest/GFS option -m.
+
+Document log category 'line' for log filter.
+
+Solr configuration example in etc/config-solr.xml
+
+multi: do not mess with request package. For scan and search,
+database-names were modified and the request package was left with
+dangling pointers that caused a log filter to fail (request package
+inspected after multi was invoked).
+
+Documentation: fix id of metaproxy-config ref .
+
+Documentation: update for USEMARCON support.
+
+--- 1.3.53 2013/01/31
+
+record_transform: allow OPACXML to OPAC conversion
+
+zoom: document content-proxy
+
+zoom: document db parm content-{user,password}, torus_url. Also
+<torus auth_url="..> which makes zoom operate in authenticated mode
+via Torus lookup.
+
+--- 1.3.52 2012/11/30
+
+zoom: fix http://-check. SRU search broken in 1.3.51.
+
+--- 1.3.51 2012/11/15
+
+zoom: only append http:// for SRU if not already given . Makes it
+possible to use https-URLs.
+
+Use yazpp 1.4 or later due to new ABI.
+
+frontend_net: allow max package size to be specified. Controlled by
+attribute 'max_recv_bytes' of element 'port'.
+
+--- 1.3.50 2012/10/29
+
+For most generated diagnostics by filters, typically temporary
+system error, augment addinfo message with filter name.
+
+Add support for CentOS 6 packages.
+
+sru_z3950: interpret Z39.50 diagnostics part of Init Response.
+
+Add man page for metaproxy-config.
+
+--- 1.3.49 2012/10/18
+
+zoom: new config element passthru. This defines an element set that is
+passed verbatim to the backend in pz2 mode.
+
+auth_simple: allow both idPass and open auth. Also fix SEGV that could
+occur for open auth.
+
+--- 1.3.48 2012/10/08
+
+z3950_client: fix string handling for init diagnostics in the case where
+addinfo was absent.
+
+query_rewrite: no charset conversion for error queries. Avoid performing
+charset conversion for query conversion errors. The resulting Type-1
+query is invalid in this case.
+
+--- 1.3.47 2012/10/04
+
+For graceful stop (SIGUSR1), metaproxy will kill children processes.
+
+Log when metaproxy is invoked in test mode (-t).
+
+Log PID for each log message.
+
+multi: combine both NSDs and multiple NSDs into one (diagnostics).
+
+z3950_client: fixup multiple NSD's too. Like surrogate diagnostics,
+a (backend=target) is appended for each diagnostic so that can be
+determined the origin of error.
+
+multi: hideerrors also in use for present response.
+
+Solr example in zoom man page.
+
+Fix typo in query_rewrite config example.
+
+Log at least first non surrogate diagnostic. Instead of
+"Z_Records_multipleNSD"
+
+multi: Fix check for opt Records in present response. A SEGV could occur
+if a target did not return records and no diagnostics.
+
+--- 1.3.46 2012/09/24
+
+Yet another fix for graceful stop.
+
+--- 1.3.45 2012/09/12
+
+sru_z3950: relay surrogate diagnostics.
+
+--- 1.3.44 2012/09/10
+
+zoom: Honor extraArgs, strip # in zurl.
+
+multi: fix SEGV for scan. Reported by Rustam T. Usmanov.
+
+zoom: url_recipe allow %{var[reg]} substitutions.
+It's like ${var[reg]} but does URI component encoding as well.
+
+--- 1.3.43 2012/08/22
+
+RPM/Deb: require yazpp 1.3.2, because it fixes a missing close of
+non-keepalive HTTP sessions.
+
+http_file: allow zero size files (bug fix)
+
+Fix zoom schema: auth_url is optional
+
+--- 1.3.42 2012/08/20
+
+zoom: fix un-init memory (could result in SEGV at session close)
+
+frontend_net: handle X-Forwarded-For. This is stored in package.origin()
+and may be used in filters as usual.
+
+zoom: authentication via Torus lookup
+Enabled by new configuration setting: auth_url . If this is defined,
+the zoom module will contact Torus for auth/IP lookup and that will
+define realm to be used in session.
+
+--- 1.3.41 2012/08/10
+
+virt_db: Fix database name - first character we removed by mistake.
+Bug introduced in 1.3.40.
+
+--- 1.3.40 2012/08/06
+
+virt_db: Don't use "unix path" as database for Unix sockets.
+
+--- 1.3.39 2012/08/02
+
+z3950_client: Don't tamper with / in zurl - fixes problems
+using Unix sockets for backends.
+
+session_shared: fix integer overflow problem with hit count.
+
+session_shared: avoid long usage of cached queries.
+
+zoom: New database argument , torus_url to set URL of Torus
+record to be fetched.
+
+--- 1.3.38 2012/07/04
+
+Fixes for 'metaproxy reload' for RPM/Debian packages. 
+
+zoom: Allow rpn2cql conversion to be augmented with a properties file.
+Element rpn2cql can be specified per-target for the zoom filter.
+
+log: New category "line" which is a single-line log message with
+most important parts of a HTTP/Z39.50 request/response.
+
+--- 1.3.37 2012/06/01
+
+frontend_net: add facility to report live statistics about response
+times and current thread usage. The report is an XML document
+and is triggered for a specific URL path. This is set by <stat-req>
+in the configuration of frontend_net. By default this report is
+disabled (same as empty value for <stat-req>).
+
+Fix reload problem in init.d script for RPM/Debian. 
+The '/etc/init.d/metaproxy reload' in some cases would stop but not
+start metaproxy - effectively stopping the service.
+
+Don't display start log message when config testing (-t).
+
+zoom: avoid CCL message limit of 1K in ZOOM filter.
+
+--- 1.3.36 2012/05/10
+
+metaproxy init script reacts to reload which does graceful stop +
+start and is used by logrorate script.
+
+--- 1.3.35 2012/05/09
+
+Fixes for Windows compilation.
 
 Metaproxy daemon reacts to SIGUSR1 in which case it will leave
 existing sessions running but terminate the monitor process that is
 
 Metaproxy daemon reacts to SIGUSR1 in which case it will leave
 existing sessions running but terminate the monitor process that is