2015.188:
- Fix parsing of MaxClientsPerIP configuration parameter when the
MaxClients parameter is also being specified.
- Allow connections from addresses that have write permission even
when the maximum number of connections has been reached. The reserve
space is currently 10 connections.
- Clarify in documentation that clients connecting from the localhost
loopback address (127.0.0.1) is only granted write permission if no
other addresses are explicitly granted write permission.
Mostly refinements and bug-fixes, this release contains one significant operator feature: the new MaxClientsPerIP parameter enforces a limit of connections per IP address.
Full change list:
2015.182:
- Dynamically allocate record buffer for use in slclient.c:HandleInfo()
in order guarantee that it is properly aligned for the host architecture.
Thanks Doug Neuhauser for identifying this issue (under Solaris x86).
2015.156:
- Update pcre to 8.37.
- Add 'MaxClientsPerIP' config parameter and -M command line option to
enforce a maximum number of connections per IP address. The limit does
not apply to addresses with write permission. Default is no per-IP maximum.
- Copy pcre/pcre_chartables.c.dist to pcre/pcre_chartables.c to avoid
symbolic link problems on, for example, Cygwin.
2015.149:
- Update libmseed to 2.16m.
- Restart listening server threads (SeedLink and DataLink) without
initializing the server socket when the socket is already set up.
- Continue accept()ing new connections and do not exit if the accept()
returns an error of ECONNABORTED or EINTR. These errors are
non-critical and should not cause the listening thread to exit.
- InitServerSocket(): close socket on error return from setsockopt() to
avoid leaving an open socket in that error condition.
Thanks to Doug Neuhauser for reporting and suggesting above fixes.
- Close corrupt ring buffer file when performing autorecovery in
all cases.
2015.074:
- Update libmseed to 2.15.
- Update pcre to 8.36. Note: development of pcre has moved to pcre2.
- Update mxml to 2.9.
- Improve detection of ring corruption by adding a 'corruptflag' to the
ring parameters, setting it in RingWrite() and checking it on initialization.
This will trigger consistent corruption detection on initialization
whenever the previous execution ended when RingWrite() detected an error.
- mseedscan.c: rearrange stored directory entry listing details to avoid
needing to copy potentially variable length struct dirent. This code now
works on platforms without dirent.d_reclen support, e.g. Cygwin. Thanks
to Eric Thomas for reporting this.
2014.269: Dudes!
- Update mxml to 2.8.
- Update pcre to 8.35.
- Update libmseed to 2.13.
- Changes to support much larger SeedLink requests:
a) Increase max internal regex buffer size from 65,536 to 1,048,576 by
changing SLMAXREGEXLEN and DLMAXREGEXLEN.
b) Increase max buffer for per-station/global selectors from 400 to 2,048.
c) Configure the PCRE to use an internal link size of 4 instead of 2.
The effective limit depends on the composite selection, e.g. number of
STATIONs and number SELECTions per STATION. With 6 selections each,
over 10,000 stations may be requested. Over 200 selectors for a
request with fewer stations. Requests can now be unreasonably large.
- Optimize packet search loop in RingAfter() and RingAfterRev(), which
are used to position a reader based on packet time, by avoiding the
regex tests when possible. Suggested code by Mark Chadwick.
- Include offset in the regex pattern in the error message printed when
pcre_compile() returns an error.
- Improve error messasges in sliclient.c when RingMatch() or
RingReject() return failures.
- Add " ..." to log messages that were truncated at 200 characters.
- Add example of using Match with the MSeedScan option to the man page.
- Clean up Makefile and src/Makefile.
2014.007:
- Increment transmission packet count per stream for SeedLink clients;
for transmission logging, packet counts were previously zero, byte
counts were (and remain) correct.