"pid" and "sock" are sufficient I guess as randomizers to distinguish messages.
In theory, a pid could be recycled very quickly, which might mix up in-flight
messages. But once a few messages have passed, "cookie" would be incremented as
another indicator of a fresh message.
Why? Remove messages_dgm dependency on samba-util
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
struct messaging_dgm_context *ctx;
int ret;
struct sockaddr_un socket_address;
- uint64_t cookie;
size_t len;
static bool have_dgm_context = false;
unlink(socket_address.sun_path);
- generate_random_buffer((uint8_t *)&cookie, sizeof(cookie));
-
- ret = unix_msg_init(&socket_address, ctx->msg_callbacks, 1024, cookie,
+ ret = unix_msg_init(&socket_address, ctx->msg_callbacks, 1024,
messaging_dgm_recv, ctx, &ctx->dgm_ctx);
if (ret != 0) {
DEBUG(1, ("unix_msg_init failed: %s\n", strerror(ret)));
exit(1);
}
- ret = unix_msg_init(&addr, funcs, 256, 1, recv_cb, &state, &ctx);
+ ret = unix_msg_init(&addr, funcs, 256, recv_cb, &state, &ctx);
if (ret != 0) {
fprintf(stderr, "unix_msg_init failed: %s\n",
strerror(ret));
}
for (i=0; i<num_ctxs; i++) {
- ret = unix_msg_init(NULL, funcs, 256, 1, NULL, NULL,
+ ret = unix_msg_init(NULL, funcs, 256, NULL, NULL,
&ctxs[i]);
if (ret != 0) {
fprintf(stderr, "unix_msg_init failed: %s\n",
return 1;
}
- ret = unix_msg_init(&addr1, funcs, 256, 1,
- recv_cb, &state, &ctx1);
+ ret = unix_msg_init(&addr1, funcs, 256, recv_cb, &state, &ctx1);
if (ret != 0) {
fprintf(stderr, "unix_msg_init failed: %s\n",
strerror(ret));
return 1;
}
- ret = unix_msg_init(&addr1, funcs, 256, 1,
- recv_cb, &state, &ctx1);
+ ret = unix_msg_init(&addr1, funcs, 256, recv_cb, &state, &ctx1);
if (ret == 0) {
fprintf(stderr, "unix_msg_init succeeded unexpectedly\n");
return 1;
return 1;
}
- ret = unix_msg_init(&addr2, funcs, 256, 1,
- recv_cb, &state, &ctx2);
+ ret = unix_msg_init(&addr2, funcs, 256, recv_cb, &state, &ctx2);
if (ret != 0) {
fprintf(stderr, "unix_msg_init failed: %s\n",
strerror(ret));
int unix_msg_init(const struct sockaddr_un *addr,
const struct poll_funcs *ev_funcs,
- size_t fragment_len, uint64_t cookie,
+ size_t fragment_len,
void (*recv_callback)(struct unix_msg_ctx *ctx,
uint8_t *msg, size_t msg_len,
int *fds, size_t num_fds,
*ctx = (struct unix_msg_ctx) {
.fragment_len = fragment_len,
- .cookie = cookie,
+ .cookie = 1,
.recv_callback = recv_callback,
.private_data = private_data
};
* @param[in] path The socket path
* @param[in] ev_funcs The event callback functions to use
* @param[in] fragment_size Maximum datagram size to send/receive
- * @param[in] cookie Random number to identify this context
* @param[in] recv_callback Function called when a message is received
* @param[in] private_data Private pointer for recv_callback
* @param[out] result The new struct unix_msg_ctx
int unix_msg_init(const struct sockaddr_un *addr,
const struct poll_funcs *ev_funcs,
- size_t fragment_size, uint64_t cookie,
+ size_t fragment_size,
void (*recv_callback)(struct unix_msg_ctx *ctx,
uint8_t *msg, size_t msg_len,
int *fds, size_t num_fds,