|
@@ -448,6 +448,7 @@ static int do_standalone_mode(int daemonize)
|
|
|
if (daemonize) {
|
|
|
if (daemon(0, 0) < 0) {
|
|
|
err("daemonizing failed: %s", strerror(errno));
|
|
|
+ usbip_host_driver_close();
|
|
|
return -1;
|
|
|
}
|
|
|
umask(0);
|
|
@@ -456,14 +457,18 @@ static int do_standalone_mode(int daemonize)
|
|
|
set_signal();
|
|
|
|
|
|
ai_head = do_getaddrinfo(NULL, PF_UNSPEC);
|
|
|
- if (!ai_head)
|
|
|
+ if (!ai_head) {
|
|
|
+ usbip_host_driver_close();
|
|
|
return -1;
|
|
|
+ }
|
|
|
|
|
|
info("starting " PROGNAME " (%s)", usbip_version_string);
|
|
|
|
|
|
nsockfd = listen_all_addrinfo(ai_head, sockfdlist);
|
|
|
if (nsockfd <= 0) {
|
|
|
err("failed to open a listening socket");
|
|
|
+ freeaddrinfo(ai_head);
|
|
|
+ usbip_host_driver_close();
|
|
|
return -1;
|
|
|
}
|
|
|
fds = calloc(nsockfd, sizeof(struct pollfd));
|