flexnbd: Don't bind() unless a bind address is specified

This commit is contained in:
nick
2013-04-09 11:47:32 +01:00
parent 2bb8434128
commit 6984d3709e
2 changed files with 8 additions and 1 deletions

View File

@@ -53,6 +53,7 @@ struct proxier* proxy_create(
"Couldn't parse bind address '%s'",
s_upstream_bind
);
out->bind = 1;
}
out->listen_fd = -1;
@@ -78,7 +79,12 @@ void proxy_destroy( struct proxier* proxy )
*/
int proxy_connect_to_upstream( struct proxier* proxy )
{
int fd = socket_connect( &proxy->connect_to.generic, &proxy->connect_from.generic );
struct sockaddr* connect_from = NULL;
if ( proxy->bind ) {
connect_from = &proxy->connect_from.generic;
}
int fd = socket_connect( &proxy->connect_to.generic, connect_from );
off64_t size = 0;
if ( -1 == fd ) {

View File

@@ -21,6 +21,7 @@ struct proxier {
/** address to bind to when making outgoing connections */
union mysockaddr connect_from;
int bind; /* Set to true if we should use it */
/* The socket we listen() on and accept() against */
int listen_fd;