View | Details | Raw Unified | Return to ticket 10100
Collapse All | Expand All

(-)a/src/common/fd.c (-8 / +15 lines)
Lines 312-327 extern char *poll_revents_to_str(const short revents) Link Here
312
	return txt;
312
	return txt;
313
}
313
}
314
314
315
/* pass an open file descriptor back to the parent process */
315
/* pass an open file descriptor back to the requesting process */
316
extern void send_fd_over_pipe(int socket, int fd)
316
extern void send_fd_over_pipe(int socket, int fd)
317
{
317
{
318
	struct msghdr msg = { 0 };
318
	struct msghdr msg = { 0 };
319
	struct cmsghdr *cmsg;
319
	struct cmsghdr *cmsg;
320
	char buf[CMSG_SPACE(sizeof(fd))];
320
	char buf[CMSG_SPACE(sizeof(fd))], c;
321
	struct iovec iov[1];
321
	memset(buf, '\0', sizeof(buf));
322
	memset(buf, '\0', sizeof(buf));
322
323
323
	msg.msg_iov = NULL;
324
	iov[0].iov_base = &c;
324
	msg.msg_iovlen = 0;
325
	iov[0].iov_len = sizeof(c);
326
	msg.msg_iov = iov;
327
	msg.msg_iovlen = sizeof(c);
325
	msg.msg_control = buf;
328
	msg.msg_control = buf;
326
	msg.msg_controllen = sizeof(buf);
329
	msg.msg_controllen = sizeof(buf);
327
330
Lines 337-351 extern void send_fd_over_pipe(int socket, int fd) Link Here
337
		error("%s: failed to send fd: %m", __func__);
340
		error("%s: failed to send fd: %m", __func__);
338
}
341
}
339
342
340
/* receive an open file descriptor from fork()'d child over unix socket */
343
/* receive an open file descriptor over unix socket */
341
extern int receive_fd_over_pipe(int socket)
344
extern int receive_fd_over_pipe(int socket)
342
{
345
{
343
	struct msghdr msg = {0};
346
	struct msghdr msg = {0};
344
	struct cmsghdr *cmsg;
347
	struct cmsghdr *cmsg;
345
	int fd;
348
	int fd;
346
	msg.msg_iov = NULL;
349
	struct iovec iov[1];
347
	msg.msg_iovlen = 0;
350
	char c_buffer[256], c;
348
	char c_buffer[256];
351
352
	iov[0].iov_base = &c;
353
	iov[0].iov_len = sizeof(c);
354
	msg.msg_iov = iov;
355
	msg.msg_iovlen = sizeof(iov)/sizeof(iov[0]);
349
	msg.msg_control = c_buffer;
356
	msg.msg_control = c_buffer;
350
	msg.msg_controllen = sizeof(c_buffer);
357
	msg.msg_controllen = sizeof(c_buffer);
351
358
(-)a/src/common/fd.h (-2 / +1 lines)
Lines 145-151 extern void fd_set_oob(int fd, int value); Link Here
145
extern char *poll_revents_to_str(const short revents);
145
extern char *poll_revents_to_str(const short revents);
146
146
147
/*
147
/*
148
 * Pass an open fd back over a pipe to the parent process.
148
 * Pass an open fd back over a pipe.
149
 */
149
 */
150
extern void send_fd_over_pipe(int socket, int fd);
150
extern void send_fd_over_pipe(int socket, int fd);
151
extern int receive_fd_over_pipe(int socket);
151
extern int receive_fd_over_pipe(int socket);
152
- 

Return to ticket 10100