assert_return(m, -EINVAL);
assert_return((size_t) n == size, -EINVAL);
+ if (m->bound)
+ return log_debug_errno(SYNTHETIC_ERRNO(EOPNOTSUPP),
+ "sd-device-monitor: Socket fd is already bound. "
+ "It may be dangerous to change buffer size. "
+ "Refusing to change buffer size.");
+
if (setsockopt_int(m->sock, SOL_SOCKET, SO_RCVBUF, n) < 0) {
r = setsockopt_int(m->sock, SOL_SOCKET, SO_RCVBUFFORCE, n);
if (r < 0)
if (r < 0)
return log_error_errno(r, "Failed to initialize device monitor: %m");
- if (fd_uevent < 0)
- (void) sd_device_monitor_set_receive_buffer_size(manager->monitor, 128 * 1024 * 1024);
+ (void) sd_device_monitor_set_receive_buffer_size(manager->monitor, 128 * 1024 * 1024);
/* unnamed socket from workers to the main daemon */
r = socketpair(AF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0, manager->worker_watch);