* 3.15:
rsrv: fix recv() error handling on WIN32
rsrv: export CASDEBUG to iocsh
rsrv: flush any queued messages before forced disconnect
rsrv: locking in cas_send_bs_msg()
rsrv: missing send lock around send_err()
rsrv: drop un-commited VERSION message
rsrv: add some comments
rsrv: avoid possible overflow in vsend_err()
Use static strings for epicsInterruptContextMessage()
# Conflicts:
# src/ioc/rsrv/camessage.c
Accounting of message size doesn't take into account
space used by header of failed message (16 or 24 bytes).
This would allow a theoretical really long error message
to overflow the send buffer by 16 or 24 bytes.
It isn't needed, and in some configurations it causes build failures.
Similar problems could still occur for other file types with a similar
vpath, but it's less likely that other file types would be installed in
an equivalent $(TOP)/../<dir> path.
The original issue with .pl files was caused by an installation of Base
where the parent directory had a bin/<host> soft-link pointing to the
same bin/<host> of a newer installation of the same version of Base, so
it had all the necessary .pl files in it. The vpath allowed the build in
src/tools to search $(TOP)/../bin/<host> when checking the buildInstall
dependency, and since it found those .pl files through the vpath it
didn't bother to install them. When they were run later on in the build
from the $(TOP)/bin/<host>/ path they weren't present so it failed.
The callbackRequest() routine was passing a stack-allocated
string to epicsInterruptContextMessage() but on RTEMS the
pointer is queued without copying the string. This fix uses
static strings for the 3 messages instead.
Fixes LP: #1705219
GNUmake will *usually* spot recursive "include" loops first, but
not if the loop is in another module that we're just checking.
In that case Release.pm eats file descriptors until they run out
without this fix.