pvxslibs 1.3.0a1__tar.gz → 1.3.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pvxslibs might be problematic. Click here for more details.
- {pvxslibs-1.3.0a1/python/pvxslibs.egg-info → pvxslibs-1.3.2}/PKG-INFO +4 -4
- pvxslibs-1.3.2/README.md +6 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/configure/CONFIG_PVXS_VERSION +4 -2
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/iocsource.cpp +1 -10
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/securityclient.cpp +1 -1
- pvxslibs-1.3.2/ioc/securitylogger.h +73 -0
- pvxslibs-1.3.2/pyproject.toml +2 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2/python/pvxslibs.egg-info}/PKG-INFO +4 -4
- pvxslibs-1.3.2/python/pvxslibs.egg-info/requires.txt +2 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/setup.py +4 -5
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/client.cpp +1 -1
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/clientconn.cpp +17 -13
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/config.cpp +4 -4
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/conn.cpp +10 -8
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/conn.h +1 -1
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/data.cpp +2 -8
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/dataimpl.h +1 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/pvxs/version.h +2 -2
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/serverconn.cpp +29 -19
- pvxslibs-1.3.0a1/README.md +0 -6
- pvxslibs-1.3.0a1/ioc/securitylogger.h +0 -45
- pvxslibs-1.3.0a1/pyproject.toml +0 -2
- pvxslibs-1.3.0a1/python/pvxslibs.egg-info/requires.txt +0 -2
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/COPYRIGHT +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/LICENSE +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/MANIFEST.in +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/LICENSE +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/arc4random.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/buffer.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/buffer_iocp.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/bufferevent-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/bufferevent.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/bufferevent_async.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/bufferevent_filter.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/bufferevent_mbedtls.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/bufferevent_openssl.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/bufferevent_pair.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/bufferevent_ratelim.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/bufferevent_sock.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/bufferevent_ssl.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/changelist-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/cmake/VersionViaGit.cmake +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/compat/sys/queue.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/defer-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/devpoll.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/epoll.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/epoll_sub.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/epolltable-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/evbuffer-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/evconfig-private.h.cmake +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/evdns.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/event-config.h.cmake +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/event-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/event.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/event_iocp.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/event_tagging.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/evmap-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/evmap.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/evport.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/evrpc-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/evrpc.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/evsignal-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/evthread-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/evthread.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/evthread_pthread.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/evthread_win32.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/evutil.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/evutil_rand.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/evutil_time.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/ht-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/http-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/http.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/evdns.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/buffer.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/buffer_compat.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/bufferevent.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/bufferevent_compat.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/bufferevent_ssl.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/bufferevent_struct.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/dns.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/dns_compat.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/dns_struct.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/event.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/event_compat.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/event_struct.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/http.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/http_compat.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/http_struct.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/keyvalq_struct.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/listener.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/rpc.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/rpc_compat.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/rpc_struct.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/tag.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/tag_compat.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/thread.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/util.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/visibility.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/watch.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/event2/ws.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/evhttp.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/evrpc.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/include/evutil.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/iocp-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/ipv6-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/kqueue-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/kqueue.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/listener.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/log-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/log.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/mbedtls-compat.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/minheap-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/mm-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/openssl-compat.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/poll.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/ratelim-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/select.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/sha1.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/sha1.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/signal.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/signalfd.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/ssl-compat.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/strlcpy-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/strlcpy.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/time-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/util-internal.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/watch.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/wepoll.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/wepoll.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/win32select.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/bundle/libevent/ws.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/channel.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/channel.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/credentials.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/credentials.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/dbentry.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/dberrormessage.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/dberrormessage.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/dbeventcontextdeleter.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/dblocker.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/dbmanylocker.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/demo.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/dummygroup.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/dummysingle.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/field.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/field.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/fieldconfig.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/fielddefinition.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/fielddefinition.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/fieldname.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/fieldname.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/fieldnamecomponent.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/fieldsubscriptionctx.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/fieldsubscriptionctx.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/group.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/group.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/groupconfig.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/groupconfigprocessor.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/groupconfigprocessor.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/groupdefinition.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/groupprocessorcontext.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/groupprocessorcontext.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/groupsource.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/groupsource.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/groupsourcehooks.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/groupsrcsubscriptionctx.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/imagedemo.c +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/iochooks.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/iocshargument.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/iocshcommand.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/iocshindex.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/iocsource.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/localfieldlog.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/localfieldlog.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/pvalink.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/pvalink.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/pvalink_channel.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/pvalink_jlif.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/pvalink_link.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/pvalink_lset.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/pvxs/iochooks.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/pvxs3x.dbd +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/pvxs7x.dbd +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/qsrvpvt.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/securityclient.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/singlesource.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/singlesource.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/singlesourcehooks.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/singlesrcsubscriptionctx.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/singlesrcsubscriptionctx.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/subscriptionctx.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/typeutils.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/typeutils.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/ioc/yajlcallbackhandler.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/python/pvxslibs/__init__.py +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/python/pvxslibs/lib/__init__.py +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/python/pvxslibs/path.py +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/python/pvxslibs/test/__init__.py +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/python/pvxslibs/test/test_load.py +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/python/pvxslibs/version.py +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/python/pvxslibs.egg-info/SOURCES.txt +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/python/pvxslibs.egg-info/dependency_links.txt +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/python/pvxslibs.egg-info/not-zip-safe +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/python/pvxslibs.egg-info/top_level.txt +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/setup.cfg +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/bitmask.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/bitmask.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/clientdiscover.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/clientget.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/clientimpl.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/clientintrospect.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/clientmon.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/clientreq.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/dataencode.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/datafmt.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/describe.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/describe.h@ +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/evhelper.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/evhelper.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/log.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/nt.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/os/WIN32/osdSockExt.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/os/default/osdSockExt.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/osgroups.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/osiSockExt.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/pvaproto.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/pvrequest.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/pvrequest.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/pvxs/client.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/pvxs/data.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/pvxs/log.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/pvxs/netcommon.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/pvxs/nt.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/pvxs/server.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/pvxs/sharedArray.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/pvxs/sharedpv.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/pvxs/source.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/pvxs/srvcommon.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/pvxs/unittest.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/pvxs/util.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/pvxs/versionNum.h@ +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/server.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/serverchan.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/serverconn.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/serverget.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/serverintrospect.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/servermon.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/serversource.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/sharedarray.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/sharedpv.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/type.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/udp_collector.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/udp_collector.h +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/unittest.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/util.cpp +0 -0
- {pvxslibs-1.3.0a1 → pvxslibs-1.3.2}/src/utilpvt.h +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pvxslibs
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.2
|
|
4
4
|
Summary: PVXS libraries packaged for python
|
|
5
|
-
Home-page: https://
|
|
5
|
+
Home-page: https://epics-base.github.io/pvxs
|
|
6
6
|
Author: Michael Davidsaver
|
|
7
7
|
Author-email: mdavidsaver@gmail.com
|
|
8
8
|
License: BSD
|
|
@@ -27,8 +27,8 @@ License-File: LICENSE
|
|
|
27
27
|
PVXS - PVAccess protocol library
|
|
28
28
|
================================
|
|
29
29
|
|
|
30
|
-
VCS - https://github.com/
|
|
30
|
+
VCS - https://github.com/epics-base/pvxs
|
|
31
31
|
|
|
32
|
-
Documentation - https://
|
|
32
|
+
Documentation - https://epics-base.github.io/pvxs/
|
|
33
33
|
|
|
34
34
|
|
pvxslibs-1.3.2/README.md
ADDED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
PVXS_MAJOR_VERSION = 1
|
|
2
2
|
PVXS_MINOR_VERSION = 3
|
|
3
|
-
PVXS_MAINTENANCE_VERSION =
|
|
3
|
+
PVXS_MAINTENANCE_VERSION = 2
|
|
4
4
|
|
|
5
5
|
# Version range conditions in Makefiles
|
|
6
6
|
#
|
|
@@ -12,7 +12,9 @@ PVXS_MAINTENANCE_VERSION = 0
|
|
|
12
12
|
#
|
|
13
13
|
# ifneq ($(PVXS_X_Y_Z),YES) # PVXS != X.Y.Z
|
|
14
14
|
#
|
|
15
|
-
|
|
15
|
+
PVXS_1_3_2 = YES
|
|
16
|
+
PVXS_1_3_1 = NO
|
|
17
|
+
PVXS_1_3_0 = NO
|
|
16
18
|
PVXS_1_2_4 = NO
|
|
17
19
|
PVXS_1_2_3 = NO
|
|
18
20
|
PVXS_1_2_2 = NO
|
|
@@ -368,16 +368,7 @@ IOCSource::doPreProcessing(dbChannel* pDbChannel, SecurityLogger& securityLogger
|
|
|
368
368
|
throw std::runtime_error("Unable to put value: Field Disabled: S_db_putDisabled");
|
|
369
369
|
}
|
|
370
370
|
|
|
371
|
-
SecurityLogger asWritePvt(
|
|
372
|
-
asTrapWriteWithData((securityClient.cli)[0], // The user is the first element
|
|
373
|
-
credentials.cred[0].c_str(), // The user is the first element
|
|
374
|
-
credentials.host.c_str(),
|
|
375
|
-
pDbChannel,
|
|
376
|
-
dbChannelFinalFieldType(pDbChannel),
|
|
377
|
-
dbChannelFinalElements(pDbChannel),
|
|
378
|
-
nullptr
|
|
379
|
-
)
|
|
380
|
-
);
|
|
371
|
+
SecurityLogger asWritePvt(pDbChannel, credentials, securityClient);
|
|
381
372
|
|
|
382
373
|
securityLogger.swap(asWritePvt);
|
|
383
374
|
|
|
@@ -40,7 +40,7 @@ SecurityClient::~SecurityClient() {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
bool SecurityClient::canWrite() const {
|
|
43
|
-
return std::
|
|
43
|
+
return std::any_of(cli.begin(), cli.end(), [](ASCLIENTPVT asc) {
|
|
44
44
|
return asCheckPut(asc);
|
|
45
45
|
});
|
|
46
46
|
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright - See the COPYRIGHT that is included with this distribution.
|
|
3
|
+
* pvxs is distributed subject to a Software License Agreement found
|
|
4
|
+
* in file LICENSE that is included with this distribution.
|
|
5
|
+
*
|
|
6
|
+
* Author George S. McIntyre <george@level-n.com>, 2023
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#ifndef PVXS_SECURITYLOGGER_H
|
|
11
|
+
#define PVXS_SECURITYLOGGER_H
|
|
12
|
+
|
|
13
|
+
#include <algorithm>
|
|
14
|
+
#include <asLib.h>
|
|
15
|
+
#include <dbChannel.h>
|
|
16
|
+
|
|
17
|
+
#include "credentials.h"
|
|
18
|
+
#include "securityclient.h"
|
|
19
|
+
|
|
20
|
+
namespace pvxs {
|
|
21
|
+
namespace ioc {
|
|
22
|
+
|
|
23
|
+
class SecurityLogger {
|
|
24
|
+
void* pfieldsave = nullptr;
|
|
25
|
+
dbChannel *pchan = nullptr;
|
|
26
|
+
void* pvt;
|
|
27
|
+
public:
|
|
28
|
+
~SecurityLogger() {
|
|
29
|
+
asTrapWriteAfterWrite(pvt);
|
|
30
|
+
// asTrapWrite callbacks may have clobbered pfield
|
|
31
|
+
if(pchan)
|
|
32
|
+
pchan->addr.pfield = pfieldsave;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
void swap(SecurityLogger& o) {
|
|
36
|
+
std::swap(pfieldsave, o.pfieldsave);
|
|
37
|
+
std::swap(pchan, o.pchan);
|
|
38
|
+
std::swap(pvt, o.pvt);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
SecurityLogger()
|
|
42
|
+
:pvt(nullptr) {
|
|
43
|
+
}
|
|
44
|
+
SecurityLogger(dbChannel* pDbChannel,
|
|
45
|
+
const Credentials& credentials,
|
|
46
|
+
const SecurityClient& securityClient)
|
|
47
|
+
:pfieldsave(pDbChannel->addr.pfield)
|
|
48
|
+
,pvt(asTrapWriteWithData((securityClient.cli)[0], // The user is the first element
|
|
49
|
+
credentials.cred[0].c_str(), // The user is the first element
|
|
50
|
+
credentials.host.c_str(),
|
|
51
|
+
pDbChannel,
|
|
52
|
+
dbChannelFinalFieldType(pDbChannel),
|
|
53
|
+
dbChannelFinalElements(pDbChannel),
|
|
54
|
+
nullptr
|
|
55
|
+
))
|
|
56
|
+
{
|
|
57
|
+
/* asTrapWrite callbacks may have called clobbered
|
|
58
|
+
* see
|
|
59
|
+
* https://github.com/epics-modules/caPutLog/pull/23
|
|
60
|
+
* https://github.com/epics-base/epics-base/issues/474
|
|
61
|
+
*/
|
|
62
|
+
if(pchan)
|
|
63
|
+
pchan->addr.pfield = pfieldsave;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
SecurityLogger(const SecurityLogger&) = delete;
|
|
67
|
+
SecurityLogger& operator=(const SecurityLogger&) = delete;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
} // pvxs
|
|
71
|
+
} // ioc
|
|
72
|
+
|
|
73
|
+
#endif //PVXS_SECURITYLOGGER_H
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pvxslibs
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.2
|
|
4
4
|
Summary: PVXS libraries packaged for python
|
|
5
|
-
Home-page: https://
|
|
5
|
+
Home-page: https://epics-base.github.io/pvxs
|
|
6
6
|
Author: Michael Davidsaver
|
|
7
7
|
Author-email: mdavidsaver@gmail.com
|
|
8
8
|
License: BSD
|
|
@@ -27,8 +27,8 @@ License-File: LICENSE
|
|
|
27
27
|
PVXS - PVAccess protocol library
|
|
28
28
|
================================
|
|
29
29
|
|
|
30
|
-
VCS - https://github.com/
|
|
30
|
+
VCS - https://github.com/epics-base/pvxs
|
|
31
31
|
|
|
32
|
-
Documentation - https://
|
|
32
|
+
Documentation - https://epics-base.github.io/pvxs/
|
|
33
33
|
|
|
34
34
|
|
|
@@ -462,9 +462,8 @@ class InstallHeaders(Command):
|
|
|
462
462
|
self.copy_file(header,
|
|
463
463
|
os.path.join(self.build_lib, 'pvxslibs', 'include', os.path.relpath(header, 'ioc')))
|
|
464
464
|
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
os.path.join(self.build_lib, 'pvxslibs', 'dbd', os.path.relpath(dbd, 'ioc')))
|
|
465
|
+
self.copy_file('ioc/pvxs7x.dbd',
|
|
466
|
+
os.path.join(self.build_lib, 'pvxslibs/dbd/pvxsIoc.dbd'))
|
|
468
467
|
|
|
469
468
|
@logexc
|
|
470
469
|
def define_DSOS(self):
|
|
@@ -697,7 +696,7 @@ build_dso.sub_commands.extend([
|
|
|
697
696
|
|
|
698
697
|
|
|
699
698
|
pvxs_ver = '%(PVXS_MAJOR_VERSION)s.%(PVXS_MINOR_VERSION)s.%(PVXS_MAINTENANCE_VERSION)s'%pvxsversion
|
|
700
|
-
pvxs_ver += '
|
|
699
|
+
#pvxs_ver += 'a2'
|
|
701
700
|
|
|
702
701
|
with open(os.path.join(os.path.dirname(__file__), 'README.md')) as F:
|
|
703
702
|
long_description = F.read()
|
|
@@ -708,7 +707,7 @@ setup(
|
|
|
708
707
|
description="PVXS libraries packaged for python",
|
|
709
708
|
long_description=long_description,
|
|
710
709
|
long_description_content_type='text/markdown',
|
|
711
|
-
url='https://
|
|
710
|
+
url='https://epics-base.github.io/pvxs',
|
|
712
711
|
author='Michael Davidsaver',
|
|
713
712
|
author_email='mdavidsaver@gmail.com',
|
|
714
713
|
license='BSD',
|
|
@@ -62,25 +62,19 @@ void Connection::startConnecting()
|
|
|
62
62
|
{
|
|
63
63
|
assert(!this->bev);
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
decltype(this->bev) bev(__FILE__, __LINE__,
|
|
66
|
+
bufferevent_socket_new(context->tcp_loop.base, -1,
|
|
67
|
+
BEV_OPT_CLOSE_ON_FREE|BEV_OPT_DEFER_CALLBACKS));
|
|
66
68
|
|
|
67
|
-
bufferevent_setcb(bev, &bevReadS, nullptr, &bevEventS, this);
|
|
69
|
+
bufferevent_setcb(bev.get(), &bevReadS, nullptr, &bevEventS, this);
|
|
68
70
|
|
|
69
71
|
timeval tmo(totv(context->effective.tcpTimeout));
|
|
70
|
-
bufferevent_set_timeouts(bev, &tmo, &tmo);
|
|
72
|
+
bufferevent_set_timeouts(bev.get(), &tmo, &tmo);
|
|
71
73
|
|
|
72
|
-
if(bufferevent_socket_connect(bev, const_cast<sockaddr*>(&peerAddr->sa), peerAddr.size()))
|
|
74
|
+
if(bufferevent_socket_connect(bev.get(), const_cast<sockaddr*>(&peerAddr->sa), peerAddr.size()))
|
|
73
75
|
throw std::runtime_error("Unable to begin connecting");
|
|
74
|
-
{
|
|
75
|
-
auto fd(bufferevent_getfd(bev));
|
|
76
|
-
int opt = 1;
|
|
77
|
-
if(setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (char*)&opt, sizeof(opt))<0) {
|
|
78
|
-
auto err(SOCKERRNO);
|
|
79
|
-
log_warn_printf(io, "Unable to TCP_NODELAY: %d on %d\n", err, fd);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
76
|
|
|
83
|
-
connect(bev);
|
|
77
|
+
connect(std::move(bev));
|
|
84
78
|
|
|
85
79
|
log_debug_printf(io, "Connecting to %s, RX readahead %zu\n", peerName.c_str(), readahead);
|
|
86
80
|
}
|
|
@@ -142,6 +136,16 @@ void Connection::bevEvent(short events)
|
|
|
142
136
|
if(bev && (events&BEV_EVENT_CONNECTED)) {
|
|
143
137
|
log_debug_printf(io, "Connected to %s\n", peerName.c_str());
|
|
144
138
|
|
|
139
|
+
{
|
|
140
|
+
// after async connect() to avoid winsock specific race.
|
|
141
|
+
auto fd(bufferevent_getfd(bev.get()));
|
|
142
|
+
int opt = 1;
|
|
143
|
+
if(setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (char*)&opt, sizeof(opt))<0) {
|
|
144
|
+
auto err(SOCKERRNO);
|
|
145
|
+
log_warn_printf(io, "Unable to TCP_NODELAY: %d on %d\n", err, fd);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
145
149
|
if(bufferevent_enable(bev.get(), EV_READ|EV_WRITE))
|
|
146
150
|
throw std::logic_error("Unable to enable BEV");
|
|
147
151
|
|
|
@@ -141,10 +141,10 @@ bool operator==(const SockEndpoint& lhs, const SockEndpoint& rhs)
|
|
|
141
141
|
|
|
142
142
|
namespace {
|
|
143
143
|
|
|
144
|
-
/* Historically
|
|
145
|
-
* between sending CMD_ECHO.
|
|
146
|
-
*
|
|
147
|
-
*
|
|
144
|
+
/* Historically pvAccessJava used $EPICS_PVA_CONN_TMO as the period
|
|
145
|
+
* between sending CMD_ECHO. To avoid meta-stability apply a scaling
|
|
146
|
+
* factor.
|
|
147
|
+
* https://github.com/epics-base/pvAccessCPP/issues/171
|
|
148
148
|
*/
|
|
149
149
|
constexpr double tmoScale = 4.0/3.0; // 40 second idle timeout / 30 configured
|
|
150
150
|
|
|
@@ -39,8 +39,10 @@ ConnBase::ConnBase(bool isClient, bool sendBE, bufferevent* bev, const SockAddr&
|
|
|
39
39
|
,txBody(__FILE__, __LINE__, evbuffer_new())
|
|
40
40
|
,state(Holdoff)
|
|
41
41
|
{
|
|
42
|
-
if(bev) // true for server connection. client will call connect() shortly
|
|
43
|
-
|
|
42
|
+
if(bev) { // true for server connection. client will call connect() shortly
|
|
43
|
+
decltype(this->bev) temp(__FILE__, __LINE__, bev);
|
|
44
|
+
connect(std::move(temp));
|
|
45
|
+
}
|
|
44
46
|
}
|
|
45
47
|
|
|
46
48
|
ConnBase::~ConnBase() {}
|
|
@@ -50,30 +52,30 @@ const char* ConnBase::peerLabel() const
|
|
|
50
52
|
return isClient ? "Server" : "Client";
|
|
51
53
|
}
|
|
52
54
|
|
|
53
|
-
void ConnBase::connect(bufferevent
|
|
55
|
+
void ConnBase::connect(ev_owned_ptr<bufferevent> &&bev)
|
|
54
56
|
{
|
|
55
57
|
if(!bev)
|
|
56
58
|
throw BAD_ALLOC();
|
|
57
59
|
assert(!this->bev && state==Holdoff);
|
|
58
60
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
readahead = evsocket::get_buffer_size(bufferevent_getfd(bev), false);
|
|
61
|
+
readahead = evsocket::get_buffer_size(bufferevent_getfd(bev.get()), false);
|
|
62
62
|
|
|
63
63
|
#if LIBEVENT_VERSION_NUMBER >= 0x02010000
|
|
64
64
|
// allow to drain OS socket buffer in a single read
|
|
65
|
-
(void)bufferevent_set_max_single_read(bev, readahead);
|
|
65
|
+
(void)bufferevent_set_max_single_read(bev.get(), readahead);
|
|
66
66
|
#endif
|
|
67
67
|
|
|
68
68
|
readahead *= tcp_readahead_mult;
|
|
69
69
|
|
|
70
70
|
#if LIBEVENT_VERSION_NUMBER >= 0x02010000
|
|
71
71
|
// allow attempt to write as much as is available
|
|
72
|
-
(void)bufferevent_set_max_single_write(bev, EV_SSIZE_MAX);
|
|
72
|
+
(void)bufferevent_set_max_single_write(bev.get(), EV_SSIZE_MAX);
|
|
73
73
|
#endif
|
|
74
74
|
|
|
75
75
|
state = isClient ? Connecting : Connected;
|
|
76
76
|
|
|
77
|
+
this->bev = std::move(bev);
|
|
78
|
+
|
|
77
79
|
// initially wait for at least a header
|
|
78
80
|
bufferevent_setwatermark(this->bev.get(), EV_READ, 8, readahead);
|
|
79
81
|
}
|
|
@@ -1231,13 +1231,7 @@ void cache_sync(Value& cache, Value& dlt)
|
|
|
1231
1231
|
dst->as<shared_array<const void>>() = src->as<shared_array<const void>>();
|
|
1232
1232
|
break;
|
|
1233
1233
|
case StoreType::Compound:
|
|
1234
|
-
|
|
1235
|
-
std::shared_ptr<impl::FieldStorage> sstore(Value::Helper::store(dlt),
|
|
1236
|
-
src);
|
|
1237
|
-
auto& dfld(dst->as<Value>());
|
|
1238
|
-
Value::Helper::set_desc(dfld, &desc[i]);
|
|
1239
|
-
Value::Helper::store(dfld) = std::move(sstore);
|
|
1240
|
-
}
|
|
1234
|
+
dst->as<Value>() = src->as<Value>().clone();
|
|
1241
1235
|
break;
|
|
1242
1236
|
}
|
|
1243
1237
|
}
|
|
@@ -1264,7 +1258,7 @@ void FieldStorage::init(StoreType code)
|
|
|
1264
1258
|
new(&store) std::string();
|
|
1265
1259
|
return;
|
|
1266
1260
|
case StoreType::Compound:
|
|
1267
|
-
new(&store)
|
|
1261
|
+
new(&store) Value();
|
|
1268
1262
|
return;
|
|
1269
1263
|
case StoreType::Array:
|
|
1270
1264
|
new(&store) shared_array<void>();
|
|
@@ -53,9 +53,9 @@
|
|
|
53
53
|
# define GCC_VERSION VERSION_INT(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__, 0)
|
|
54
54
|
#endif
|
|
55
55
|
|
|
56
|
-
// See https://
|
|
56
|
+
// See https://epics-base.github.io/pvxs/details.html#expertapi
|
|
57
57
|
#if defined(PVXS_EXPERT_API_ENABLED)
|
|
58
|
-
# error Define PVXS_ENABLE_EXPERT_API to enable usage of Expert API. See https://
|
|
58
|
+
# error Define PVXS_ENABLE_EXPERT_API to enable usage of Expert API. See https://epics-base.github.io/pvxs/details.html#expert-apis
|
|
59
59
|
#elif defined(PVXS_ENABLE_EXPERT_API)
|
|
60
60
|
# define PVXS_EXPERT_API_ENABLED
|
|
61
61
|
#endif
|
|
@@ -408,18 +408,40 @@ ServIface::ServIface(const SockAddr &addr, server::Server::Pvt *server, bool fal
|
|
|
408
408
|
server->acceptor_loop.assertInLoop();
|
|
409
409
|
auto orig_port = bind_addr.port();
|
|
410
410
|
|
|
411
|
-
sock = evsocket(bind_addr.family(), SOCK_STREAM, 0);
|
|
412
|
-
|
|
413
|
-
if(evutil_make_listen_socket_reuseable(sock.sock))
|
|
414
|
-
log_warn_printf(connsetup, "Unable to make socket reusable%s", "\n");
|
|
415
|
-
|
|
416
411
|
// try to bind to requested port, then fallback to a random port
|
|
417
412
|
while(true) {
|
|
413
|
+
|
|
414
|
+
sock = evsocket(bind_addr.family(), SOCK_STREAM, 0);
|
|
415
|
+
|
|
416
|
+
if(evutil_make_listen_socket_reuseable(sock.sock))
|
|
417
|
+
log_warn_printf(connsetup, "Unable to make socket reusable%s", "\n");
|
|
418
|
+
|
|
418
419
|
try {
|
|
419
420
|
sock.bind(bind_addr);
|
|
421
|
+
// semantics of SO_REUSEADDR on *nix allow multiple bind() to success.
|
|
422
|
+
// however, only one listen() will succeed
|
|
423
|
+
|
|
424
|
+
// added in libevent 2.1.1
|
|
425
|
+
#ifndef LEV_OPT_DISABLED
|
|
426
|
+
# define LEV_OPT_DISABLED 0
|
|
427
|
+
#endif
|
|
428
|
+
|
|
429
|
+
const int backlog = 4;
|
|
430
|
+
auto list(evconnlistener_new(server->acceptor_loop.base, onConnS, this, LEV_OPT_DISABLED|LEV_OPT_CLOSE_ON_EXEC, backlog, sock.sock));
|
|
431
|
+
if(!list) {
|
|
432
|
+
int err = evutil_socket_geterror(sock);
|
|
433
|
+
throw std::system_error(err, std::system_category());
|
|
434
|
+
}
|
|
435
|
+
listener = evlisten(__FILE__, __LINE__, list);
|
|
436
|
+
|
|
437
|
+
if(!LEV_OPT_DISABLED)
|
|
438
|
+
evconnlistener_disable(listener.get());
|
|
439
|
+
|
|
420
440
|
} catch(std::system_error& e) {
|
|
421
|
-
if(fallback && e.code().value()==SOCK_EADDRINUSE) {
|
|
422
|
-
log_debug_printf(connsetup, "Address %s in use\n",
|
|
441
|
+
if(fallback && (e.code().value()==SOCK_EADDRINUSE || e.code().value()==SOCK_EACCES)) {
|
|
442
|
+
log_debug_printf(connsetup, "Address %s in use or not permitted: %s\n",
|
|
443
|
+
bind_addr.tostring().c_str(),
|
|
444
|
+
e.what());
|
|
423
445
|
bind_addr.setPort(0);
|
|
424
446
|
fallback = false;
|
|
425
447
|
continue;
|
|
@@ -438,18 +460,6 @@ ServIface::ServIface(const SockAddr &addr, server::Server::Pvt *server, bool fal
|
|
|
438
460
|
if(orig_port && bind_addr.port() != orig_port) {
|
|
439
461
|
log_warn_printf(connsetup, "Server unable to bind port %u, falling back to %s\n", orig_port, name.c_str());
|
|
440
462
|
}
|
|
441
|
-
|
|
442
|
-
// added in libevent 2.1.1
|
|
443
|
-
#ifndef LEV_OPT_DISABLED
|
|
444
|
-
# define LEV_OPT_DISABLED 0
|
|
445
|
-
#endif
|
|
446
|
-
|
|
447
|
-
const int backlog = 4;
|
|
448
|
-
listener = evlisten(__FILE__, __LINE__,
|
|
449
|
-
evconnlistener_new(server->acceptor_loop.base, onConnS, this, LEV_OPT_DISABLED|LEV_OPT_CLOSE_ON_EXEC, backlog, sock.sock));
|
|
450
|
-
|
|
451
|
-
if(!LEV_OPT_DISABLED)
|
|
452
|
-
evconnlistener_disable(listener.get());
|
|
453
463
|
}
|
|
454
464
|
|
|
455
465
|
void ServIface::onConnS(struct evconnlistener *listener, evutil_socket_t sock, struct sockaddr *peer, int socklen, void *raw)
|
pvxslibs-1.3.0a1/README.md
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright - See the COPYRIGHT that is included with this distribution.
|
|
3
|
-
* pvxs is distributed subject to a Software License Agreement found
|
|
4
|
-
* in file LICENSE that is included with this distribution.
|
|
5
|
-
*
|
|
6
|
-
* Author George S. McIntyre <george@level-n.com>, 2023
|
|
7
|
-
*
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
#ifndef PVXS_SECURITYLOGGER_H
|
|
11
|
-
#define PVXS_SECURITYLOGGER_H
|
|
12
|
-
|
|
13
|
-
#include <algorithm>
|
|
14
|
-
#include <asLib.h>
|
|
15
|
-
|
|
16
|
-
namespace pvxs {
|
|
17
|
-
namespace ioc {
|
|
18
|
-
|
|
19
|
-
class SecurityLogger {
|
|
20
|
-
void* pvt;
|
|
21
|
-
public:
|
|
22
|
-
~SecurityLogger() {
|
|
23
|
-
asTrapWriteAfterWrite(pvt);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
void swap(SecurityLogger& o) {
|
|
27
|
-
std::swap(pvt, o.pvt);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
explicit SecurityLogger(void* pvt)
|
|
31
|
-
:pvt(pvt) {
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
SecurityLogger()
|
|
35
|
-
:pvt(nullptr) {
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
SecurityLogger(const SecurityLogger&) = delete;
|
|
39
|
-
SecurityLogger& operator=(const SecurityLogger&) = delete;
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
} // pvxs
|
|
43
|
-
} // ioc
|
|
44
|
-
|
|
45
|
-
#endif //PVXS_SECURITYLOGGER_H
|
pvxslibs-1.3.0a1/pyproject.toml
DELETED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|