Windows: use Boost 1.59, msvc 14.0
[metaproxy-moved-to-github.git] / NEWS
diff --git a/NEWS b/NEWS
index 1bb2b90..68d2908 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,700 @@
+--- 1.11.0 2015/11/17
+
+frontend_net: connect-max anx http-req-max may be specified
+based on originating IP. MP-632
+
+frontend_net: fix leaks that would occur if http-req-max takes effect.
+
+Report file descriptor limit (RLIMIT_NOFILE) upon startup MP-631 
+
+--- 1.10.0 2015/10/01
+
+Fix sort: does not sort during leading present MP-630
+
+Filter frontend_net: dynamic thread pool. max-threads and stack-size
+may be configured MP-629
+
+Fix boost not found on debian-testing MP-628
+
+--- 1.9.3 2015/09/04
+
+Fix virt_db creates result-set for failed search MP-627
+
+--- 1.9.2 2015/09/04
+
+Fix load_balance: does not retry dead target MP-626
+
+Provide example of target auth MP-625
+Also update schema, becuase route is optional for target element.
+
+Replace indexdata.dk/gils with z3950.indexdata.com MP-624
+
+Describe auth attribute for multi filter
+
+--- 1.9.1 2015/08/19
+
+Avoid naked ptr in filter configure MP-623
+
+Update to debhelper 9 MP-622
+
+--- 1.9.0 2015/08/06
+
+Fix incorrect diagnostic for reverse cql2pqf MP-619
+The cql_transform_rpn2cql_stream_r returns Bib-1 diagnostics; not
+SRU diagnostics.
+
+deb: deprecated substitution ${Source-Version} MP-621
+
+Fix systemd: reload stops metaproxy MP-620
+Detect systemd and just do nothing when reload/force-reload is
+used. Log, however, that it really is not reloading.
+
+Add http-req-max to frontend_net MP-617
+
+--- 1.8.10 2015/06/24
+
+Fix multi: hideunavailable don't hide target that timeout MP-615
+
+--- 1.8.9 2015/06/01
+
+Fix race condition in MP log output MP-522
+
+Fix 'Group' is duplicated twice in RPM spec
+
+Fix crash in log filter when record syntax is omitted MP-613
+
+Change target z3950.loc.gov:7090/voyager -> lx2.loc.gov:210/LCDB_MARC8
+in examples.
+
+Fix Control-C does not stop Metaproxy spawned by shell MP-610
+Check for fork mode instead (-D) - rather than debug (-X)
+
+--- 1.8.8 2015/04/14
+
+sru_z3950: allow CCL in SRU search MP-606
+Makes the sru_z3950 filter convert to CCL queries if query type
+"ccl" is used, eg ?query=water&queryType=ccl&... for SRU 2.0.
+
+--- 1.8.7 2015/04/01
+
+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.