diff --git a/src/client/toks_client_acquire.c b/src/client/toks_client_acquire.c index 81c3415..c4e0344 100644 --- a/src/client/toks_client_acquire.c +++ b/src/client/toks_client_acquire.c @@ -38,9 +38,13 @@ int32_t toks_client_acquire(struct toks_driver_ctx * dctx) struct _nt_port_keys * keys; int64_t millisecs; nt_timeout timeout; + const char * refstr; + size_t reflen; - hport = toks_get_driver_hservice(dctx); - keys = toks_get_driver_keys(dctx); + hport = toks_get_driver_hservice(dctx); + keys = toks_get_driver_keys(dctx); + refstr = toks_get_driver_refstr(dctx); + reflen = 0; ntapi->tt_aligned_block_memset( &msg,0,sizeof(msg)); @@ -53,6 +57,15 @@ int32_t toks_client_acquire(struct toks_driver_ctx * dctx) msg.data.ipcinfo.ctrlsvc.keys.reserved = toks_get_driver_tokpid(dctx); msg.data.ipcinfo.hevent = toks_get_driver_hevent(dctx); + if (refstr && (reflen = toks_strlen(refstr))) { + if (reflen > sizeof(msg.data.ipcinfo.ctrlsvc.keys.key)) + reflen = sizeof(msg.data.ipcinfo.ctrlsvc.keys.key); + + ntapi->tt_generic_memcpy( + msg.data.ipcinfo.ctrlsvc.keys.key, + refstr,reflen); + } + if (!(millisecs = toks_get_driver_timeout(dctx))) { msg.data.ipcinfo.hevent = 0;