Commit Graph
100 Commits
Author SHA1 Message Date
Michael Davidsaver 4972803ce2 scanEventTest: use testSyncCallback() 2018-05-14 10:49:49 -07:00
Michael Davidsaver 3b7e348a8c dbUnitTest.h add callback sync. and global mutex
Add testSyncCallback() to wait for in queued and
in-progress callbacks to complete.

Also add testGlobalLock() to help tests avoid
use after free when destroying sync. primitives.
2018-05-14 10:49:49 -07:00
Michael Davidsaver 00a974ce52 callback.h: add epicsCallback alternative to CALLBACK
Add epicsCallback as an IDE friendly alternative to CALLBACK.

IDEs like qtcreator have long been confused by the use
of CALLBACK, a name which has long been used by other libraries,
which prevents code using it from being parsed correctly.
2018-05-14 10:49:49 -07:00
Michael Davidsaver 490c504736 scanEventTest: use dbUnitTest.h for IOC lifecycle 2018-05-14 10:49:49 -07:00
Michael Davidsaver 734d16291f rsrv: buffer for IP too small
An IPv4 address and port number
has 21 characters max.
2018-02-01 09:42:51 -08:00
Michael Davidsaver e794639e31 ioc/db: avoid possible race in db_close_events()
lp:1730982
2017-11-08 14:42:08 -06:00
Michael Davidsaver 2af98c33c9 std/rec: aSub handle INAM changing outputs
Allow EFLG="On Change" to work with INAM.
2017-11-08 14:29:30 -06:00
Michael Davidsaver 111cac8e47 merge 3.14 2017-08-01 17:14:34 +02:00
Michael Davidsaver 5c8e5c52ef rsrv: fix recv() error handling on WIN32
For WIN32 osiSockIoctl_t is unsigned, so

> osiSockIoctl_t nchars = recv(...

is casting signed -> unsigned which treats
errors as success.
2017-08-01 17:02:41 +02:00
Michael Davidsaver 546df1c1f0 rsrv: export CASDEBUG to iocsh 2017-08-01 17:02:41 +02:00
Michael Davidsaver 603331e7a5 rsrv: flush any queued messages before forced disconnect
Avoid loss of various ERROR messages which camessage()
has queued.
2017-08-01 16:44:48 +02:00
Michael Davidsaver 4b272cc0cf rsrv: locking in cas_send_bs_msg()
Must lock around "pclient->send.stk = 0u;"
2017-08-01 16:44:48 +02:00
Michael Davidsaver 619a99bf99 rsrv: missing send lock around send_err() 2017-08-01 16:44:48 +02:00
Michael Davidsaver 1f8cb740f1 rsrv: drop un-commited VERSION message
This is a no-op as cas_commit_msg() isn't called.
A VERSION message is already queued during create_tcp_client().
2017-08-01 16:44:29 +02:00
Michael Davidsaver 322f7a97de rsrv: add some comments 2017-08-01 16:44:29 +02:00
Michael Davidsaver 0fc770166c rsrv: avoid possible overflow in vsend_err()
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.
2017-08-01 16:44:08 +02:00
Michael Davidsaver a7c14ec995 Merge remote-tracking branch 'launchpad/3.14'
* launchpad/3.14:
  ioc/rsrv: bounds check DBR
2017-05-03 16:53:43 -04:00
Michael Davidsaver e430d097b7 ioc/rsrv: bounds check DBR
avoid array overrun when evaluating dbr_size_n() macro.
2017-05-03 16:49:28 -04:00
Michael Davidsaver 875e4db3f9 Merge remote-tracking branch 'launchpad/3.14'
* launchpad/3.14:
  missing include

Conflicts:
	src/ioc/dbStatic/dbStaticLib.c
2017-05-02 18:38:40 -04:00
Michael Davidsaver 8c8604c503 Merge remote-tracking branch 'launchpad/3.14'
* launchpad/3.14:
  ioc/dbStatic: dbFreeBase() don't double free alias'd records
  ioc/dbStatic: plug leak in dbFreeBase()
  ioc/dbStatic: whitespace
  Fix indentation warning from GCC
  libCom/test: errlog test more verbose
  libCom: STATIC_ASSERT use c++11 static_assert when possible
  Check for empty PV names in Perl catools

Conflicts:
	src/ioc/dbStatic/dbStaticLib.c
	src/libCom/osi/epicsAssert.h
2017-05-02 18:31:40 -04:00
Michael Davidsaver 9d7c4434ad rename iocshFind -> iocshFindCommand 2017-05-02 18:23:52 -04:00
Michael Davidsaver 38be82a154 missing include 2017-05-02 18:22:57 -04:00
Michael Davidsaver 27cd9fd051 ioc/dbStatic: dbFreeBase() don't double free alias'd records
dbFreeBase() has been broken since alias() was introduced.

Traversal of recList in the function assumed that dbDeleteRecord()
remove only the current dbRecordNode.  However, dbDeleteRecord()
called dbDeleteAliases() which removes alias dbRecordNode s.
If this happens (as it often does) to be the node immediately
after the real node, dbFreeBase() will then iterate using
a ellDelete()d node.
2017-05-02 18:04:06 -04:00
Michael Davidsaver 1ffce72a38 ioc/dbStatic: plug leak in dbFreeBase() 2017-05-02 18:02:05 -04:00
Michael Davidsaver dcac64d50f ioc/dbStatic: whitespace 2017-05-02 18:01:39 -04:00
Michael Davidsaver 57cbe61709 libCom/test: errlog test more verbose 2017-04-27 16:53:40 -04:00
Michael Davidsaver a2ab17a782 libCom: STATIC_ASSERT use c++11 static_assert when possible 2017-04-27 16:52:33 -04:00
Michael Davidsaver c6910decfc oops 2017-04-27 14:19:15 -04:00
Michael Davidsaver b01dd38526 std/filter/test: use dbUnitTest 2017-04-27 14:09:41 -04:00
Michael Davidsaver 82ff67a204 travis-ci enable mingw w/ dll 2017-04-27 12:57:01 -04:00
Michael Davidsaver e751480b06 Merge remote-tracking branch 'launchpad/3.14'
* launchpad/3.14:
  travisci
  catools: Fix SEGFAULT from bad PV names
  typo
2017-04-27 12:55:35 -04:00
Michael Davidsaver 3184371e8d travisci 2017-04-27 12:53:35 -04:00
Michael Davidsaver 22b10adf29 ioc/db: testdbGetFieldEqual() detect zero size 2017-04-21 16:14:43 -04:00
Michael Davidsaver 8382367495 libCom/test: epicsCalcTest use exact postifx buffers
exposes INFIX_TO_POSTFIX_SIZE() bug
2017-04-21 16:13:18 -04:00
Michael Davidsaver f3841c4767 avoid void* += 2017-04-17 18:58:19 -04:00
Michael Davidsaver 0c02c5cb30 update notes 2017-04-15 19:38:56 -04:00
Michael Davidsaver 1f90e98491 libCom/test: ipAddrToAsciiTest skip cleanup unless valgrind is possible 2017-04-15 19:34:04 -04:00
Michael Davidsaver 352fd32c45 libCom/test: add ipAddrToAsciiTest to testHarness 2017-04-12 20:30:23 -04:00
Michael Davidsaver b624222a0f db/test: dbPutGetTest check dbGet() of long string field 2017-04-06 20:28:04 -04:00
Michael Davidsaver 739a112bec db: dbGet() ensure long string nil and actual string length 2017-04-06 20:28:01 -04:00
Michael Davidsaver 5e082bb75d db/test: dbPutGetTest check for dbGet() attribute crash 2017-04-06 20:27:37 -04:00
Michael Davidsaver 8ebfd0821a db: fix dbGet() for attributes as long string
dbGet() of "rec.RTYP$" with DBF_CHAR and nRequest==1
not handled correctly.  Results in crash.
2017-04-06 20:27:34 -04:00
Michael Davidsaver fc8d4c2b5f db/test: dbPutGetTest add test for lp:1678494 2017-04-06 20:27:18 -04:00
Michael Davidsaver 1888253093 db: fix dbGet() of link fields as DBF_CHAR
dbGet() DBF_CHAR with nRequest==1 not handled correctly.
Results in crash.
2017-04-06 20:27:13 -04:00
Michael Davidsaver 8edefb9d63 dbUnitTest: add testdbGetArrFieldEqual() 2017-04-06 20:27:03 -04:00
Michael Davidsaver 0f31e35b87 db/test: add dbPutGetTest 2017-04-06 20:25:55 -04:00
Michael Davidsaver 2a0cd00958 libca: lock when removing from msgMultiPVList 2017-02-27 14:48:30 -05:00
Michael Davidsaver d744b06a28 libca: findOrCreateVirtCircuit() can return w/ piiu==NULL 2017-02-27 11:07:17 -05:00
Michael Davidsaver 048b75304d libCom/test: add ipAddrToAsciiTest 2017-02-25 19:08:46 -05:00
Michael Davidsaver 5783823e25 libCom: revise ipAddrToAscii
create multiple light-weight engines to
track transactions by engine and cancel
all transactions when an engine is released.

prior to fix for lp:1527636 this was ensured
for the last/only owner for the engine singleton.
2017-02-23 20:08:46 -05:00
Michael Davidsaver 4223b31f9a bswap16/32 as functions
Turn bswap16() and bswap32() into functions
to avoid evaluating the argument more than once.
2016-07-08 16:20:35 -04:00
Michael Davidsaver 0f6c997288 osdNetIntf: ignore 0.0.0.0 as a broadcast address
It seems in some situations Linux (at least)
sets IFF_BROADCAST bug leaves the bcast address
set to 0.0.0.0.

Fixes lp:1581505
2016-05-13 09:31:26 -04:00
Michael Davidsaver 704c748fbd Revert "libCom/osi: osiSockDiscoverBroadcastAddresses() finds 127.255.255.255"
This reverts commit e805abe971.
2016-05-13 09:14:20 -04:00
Michael Davidsaver 26c04844cf add test for lp:1577108 2016-05-01 13:30:45 -04:00
Michael Davidsaver a3d981ad0a dbLink.c: fix dbGetLink for array of length 1 2016-05-01 13:30:45 -04:00
Michael Davidsaver 2226f3acb9 libCom/test: don't include epicsTimeZoneTest for vxWorks 2016-04-27 12:45:18 -04:00
Michael DavidsaverandRalph Lange 55895e6d66 ellSort: comments and redundant asserts 2016-04-27 07:58:39 -04:00
Michael DavidsaverandRalph Lange 77d6609bbd fixup comments 2016-04-26 20:19:19 -04:00
Michael Davidsaver 51dd371784 rsrv: add rsrvCS_shutdown to avoid race in destroyAllChannels()
A race can occur between rsrv and cac by way of asLib
whereby casAccessRightsCB() is called after
a channel_in_use has been removed from
chanList/chanPendingUpdateARList.
casAccessRightsCB() would then attempt to remove
the node again, causing corruption.

Create a new rsrvCS_shutdown state when the
channel is not in either list.

Attempt to resolve lp:1571224
2016-04-26 17:06:22 -04:00
Michael DavidsaverandRalph Lange b035bd9963 test ellSortStable 2016-04-26 13:57:22 -04:00
Michael DavidsaverandRalph Lange 70fc52bca0 dbCreateRecord use ellSortStable()
sort records once per dbLoadCOM()
2016-04-26 13:57:22 -04:00
Michael DavidsaverandRalph Lange 56d5a59356 dbScan: optimize addToList
Insert from back to maintain ~same order.
Avoid iterating entire list each time
in the common case where all PHAS==0
2016-04-26 13:56:57 -04:00
Michael DavidsaverandRalph Lange b392c1ca7d whitespace 2016-04-26 13:56:57 -04:00
Michael Davidsaver 93597e20d5 add epicsTimeZoneTest to libCom test harness 2016-04-26 09:59:22 -04:00
Michael Davidsaver f0453faf36 libCom/test: add test for HST time zone
Test US/Hawaii zone which does not observe daylight saving time.
2016-04-26 09:28:09 -04:00
Michael Davidsaver 106fae3b26 dbStatic: prevent overflow in dbPutString()
The bounds check should be before the string
copy.  Also zero the last element out of
paranoia (should already be zero).

Fix lp:1563191
2016-03-29 17:36:39 +09:00
Michael Davidsaver 7a1766279c dbLock: dbLockerAlloc() accept const array of non-const pointers 2016-03-24 13:42:49 -04:00
Michael Davidsaver 45db78981c iocInit: no need to break DB_LINK when isolated
This is being done to free the link private struct,
but dbDbRemoveLink() is not used to avoid the overhead
of splitting every lockset just before the PDB
is free'd.

No reason to do this for non-isolated until scans threads
are stopped.
2016-03-20 09:43:40 -04:00
Michael Davidsaver 7d94d05bb7 iocInit: special clear link set in doCloseLinks() 2016-03-19 17:15:08 -04:00
Michael Davidsaver 6b9bfb09a5 pWaitRelease in wrong place
waitRelease==false indicates that pThread
has not be delete'd
2016-03-16 17:43:52 -04:00
Michael Davidsaver 4e312b9f64 libCom: exitWait() from thread exit handler corrupts stack
The epicsThreadCallEntryPoint() function stores a pointer
to a local variable in epicsThread::pWaitReleaseFlag.
Calling epicsAtThreadExit::exitWait() from that thread's
epicsAtThreadExit() handler writes to this pointer
after epicsThreadCallEntryPoint() has returned.
Thus corrupting the stack.

Set pWaitReleaseFlag=NULL before return to prevent this.

fixes lp:1558206
2016-03-16 14:40:37 -04:00
Michael Davidsaver 19680d7869 libCom/test: fixup epicsAtomicTest
Add testBasic to check basic op symantics.
Add anon namespace to hide symbols other than MAIN(epicsAtomicTest).
Replace using namespace with using for individual functions.
For RTEMS skip the tests using threads as the use of
RTEMS_NO_TIMESLICE prevents them from being meaningful
2016-03-01 10:57:26 -05:00
Michael Davidsaver 4a0ef34771 edit RELEASE_NOTES.html 2016-02-29 21:08:25 -05:00
Michael Davidsaver 5d42e60745 rec/test: asTest fixup rtems test harness
Since this test has device support it must appear in a
DLL for windows dynamic builds.
However, the rRDD function is in the executable,
and not accessible here.  So use iocsh.
For rtems/vxworks the test harness clears
iocsh registrations, so iocsh can't work here.
2016-02-29 20:43:40 -05:00
Michael Davidsaver e01d4b14d6 rec/test: add missing TESTFILES 2016-02-29 20:37:25 -05:00
Michael Davidsaver 2c48bcc26b dbChannelShow reporting detail level changed 2016-02-26 16:07:47 -05:00
Michael Davidsaver bfa8e324f7 remove dbChArrTest from testHarness
dbChArrTest calls iocInit() and so can't
be in the shared test harness
2016-02-25 21:10:42 -05:00
Michael Davidsaver 51a69862e7 ioc/db: single return for dbGet()
Single return path after call to prset->get_array_info
to ensure that paddr->pfield is restored.
2016-02-25 20:59:10 -05:00
Michael Davidsaver 4b8c11aeef memset transposed arguments 2016-02-25 20:08:44 -05:00
Michael Davidsaver 7b3a040b34 rsrv: use SOCKERRNO
Must use OSI SOCKERRNO for correct handling
of errors w/ winsock
2016-02-25 11:32:56 -05:00
Michael Davidsaver 88b47c021c cygwin inherits winsock broadcast behavior 2016-02-25 11:10:28 -05:00
Michael Davidsaver d0a316f7ca win32: include ws2tcpip.h from osdSock.h
Needed to get some additional definitions
including IP_ADD_MEMBERSHIP
2016-02-25 11:02:09 -05:00
Michael Davidsaver ffb23a3480 pcas: don't send beacons w/ connect()d socket
use sendto() and leave the origin field to 0.0.0.0
so it will be filled in by the receiving repeater
2016-02-16 16:28:04 -05:00
Michael Davidsaver 2be59e985d Avoid race in linkRetarget
Add dbCaSync() to avoid a race between a call to dbCaGetField()
and the link becoming connected.
2016-02-16 15:07:40 -05:00
Michael Davidsaver b4fd19e7db libCom/test: remove test_debug from epicsStackTraceTest
No one will look at this output unless the test fails,
then more output is better.
2016-02-15 17:09:44 -05:00
Michael Davidsaver 45a741ac6f libCom/RTEMS: ensure lookup of localhost on RTEMS
create /etc/hosts if it doesn't already exist
2016-02-15 12:29:06 -05:00
Michael Davidsaver 48da96cce5 libCom/test: epicsMMIOTest missing test spec 2016-02-15 12:29:06 -05:00
Michael Davidsaver 18d863b918 db/test: missing/wrong .db file names 2016-02-15 12:06:10 -05:00
Michael Davidsaver 95a1998e0b update release notes 2016-02-04 19:09:44 -05:00
Michael Davidsaver 5769db3862 rsrv: "casr 1" shows ignore list 2016-02-04 18:57:02 -05:00
Michael Davidsaver 00a74fbb4e libCom: fix debug print formats in osiSockDiscoverBroadcastAddresses() 2016-02-04 18:45:18 -05:00
Michael Davidsaver 03fde89dd4 rsrv: EPICS_CAS_IGNORE_ADDR_LIST 2016-02-04 18:44:33 -05:00
Michael Davidsaver 8421b46398 update release notes 2016-02-04 17:59:08 -05:00
Michael Davidsaver 650aaea203 ca: update CAref.html with changes to beacon address list
Note that server beacon address list will no longer
consider client address list as a fallback.
2016-02-04 17:56:31 -05:00
Michael Davidsaver fcfe7ed312 pcas: no fallbacks for beacon address list
Don't mix client and server configuration
by defaulting the server beacon list to use
the client address list.
2016-02-04 17:39:28 -05:00
Michael Davidsaver 167dea3735 rsrv: decouple some client/server config
the automatic beacon address list should follow
the server interface address list, and not be
effected by any client config.

Also, don't populate the interface address list
from EPICS_CAS_BEACON_ADDR_LIST as this will
almost never contain local interface addresses.
2016-01-29 08:33:41 -05:00
Michael Davidsaver 235e4bd835 rsrv: more beacon address fixups
should really be based on *server* config
as beacons should be sent to clients attempting
to connect to the server.

By default send beacons to bcast addresses
from the interface address list.
2016-01-23 16:15:17 -05:00
Michael Davidsaver 601d6d9fe8 rsrv: oops
improper rebase
2016-01-23 13:53:44 -05:00
Michael Davidsaver b961b25151 rsrv: fix wildcard check ordering
filter out mcast addresses before wildcard uniqueness check.
2016-01-23 13:53:44 -05:00
Michael Davidsaver eb9246e4c9 rsrv: beaconCounter not updated 2016-01-21 17:14:23 -05:00