flexnbd: Fix sock_try_bind so we don't retry on EADDRINUSE
This commit is contained in:
@@ -86,6 +86,7 @@ int sock_try_bind( int fd, const struct sockaddr* sa )
|
|||||||
{
|
{
|
||||||
int bind_result;
|
int bind_result;
|
||||||
char s_address[256];
|
char s_address[256];
|
||||||
|
int retry = 1;
|
||||||
|
|
||||||
sockaddr_address_string( sa, &s_address[0], 256 );
|
sockaddr_address_string( sa, &s_address[0], 256 );
|
||||||
|
|
||||||
@@ -116,12 +117,14 @@ int sock_try_bind( int fd, const struct sockaddr* sa )
|
|||||||
continue;
|
continue;
|
||||||
case EADDRINUSE:
|
case EADDRINUSE:
|
||||||
warn( "%s in use, giving up.", s_address );
|
warn( "%s in use, giving up.", s_address );
|
||||||
|
retry = 0;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
warn( "giving up" );
|
warn( "giving up" );
|
||||||
|
retry = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} while ( 1 );
|
} while ( retry );
|
||||||
|
|
||||||
return bind_result;
|
return bind_result;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user