flexnbd: Fix sock_try_bind so we don't retry on EADDRINUSE

This commit is contained in:
nick
2013-02-14 16:37:14 +00:00
parent 03bc12dd57
commit 8281809f42

View File

@@ -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;
} }