@@ -116,25 +116,28 @@ int udev_ctrl_new_from_fd(struct udev_ctrl **ret, int fd) {
116116}
117117
118118int udev_ctrl_enable_receiving (struct udev_ctrl * uctrl ) {
119- int err ;
120-
121- if (!uctrl -> bound ) {
122- err = bind (uctrl -> sock , & uctrl -> saddr .sa , uctrl -> addrlen );
123- if (err < 0 && errno == EADDRINUSE ) {
124- (void ) sockaddr_un_unlink (& uctrl -> saddr .un );
125- err = bind (uctrl -> sock , & uctrl -> saddr .sa , uctrl -> addrlen );
126- }
119+ int r ;
127120
128- if (err < 0 )
129- return log_error_errno (errno , "Failed to bind socket: %m" );
121+ assert (uctrl );
130122
131- err = listen (uctrl -> sock , 0 );
132- if (err < 0 )
133- return log_error_errno (errno , "Failed to listen: %m" );
123+ if (uctrl -> bound )
124+ return 0 ;
134125
135- uctrl -> bound = true;
136- uctrl -> cleanup_socket = true;
126+ r = bind (uctrl -> sock , & uctrl -> saddr .sa , uctrl -> addrlen );
127+ if (r < 0 && errno == EADDRINUSE ) {
128+ (void ) sockaddr_un_unlink (& uctrl -> saddr .un );
129+ r = bind (uctrl -> sock , & uctrl -> saddr .sa , uctrl -> addrlen );
137130 }
131+
132+ if (r < 0 )
133+ return log_error_errno (errno , "Failed to bind udev control socket: %m" );
134+
135+ if (listen (uctrl -> sock , 0 ) < 0 )
136+ return log_error_errno (errno , "Failed to listen udev control socket: %m" );
137+
138+ uctrl -> bound = true;
139+ uctrl -> cleanup_socket = true;
140+
138141 return 0 ;
139142}
140143
0 commit comments