transport/socket: guess an appropriate address family when it is not specified in configuration.
Signed-off-by: Raghavendra G <raghavendra@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 561 (with address family set to 'inet-sdp', transport/socket doesn't work correctly) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=561
This commit is contained in:
parent
e5a43ac65f
commit
15b3f715ac
@ -462,18 +462,28 @@ client_bind (transport_t *this,
|
||||
}
|
||||
|
||||
int32_t
|
||||
socket_client_get_remote_sockaddr (transport_t *this,
|
||||
socket_client_get_remote_sockaddr (transport_t *this,
|
||||
struct sockaddr *sockaddr,
|
||||
socklen_t *sockaddr_len)
|
||||
socklen_t *sockaddr_len,
|
||||
sa_family_t *sa_family)
|
||||
{
|
||||
int32_t ret = 0;
|
||||
|
||||
if ((sockaddr == NULL) || (sockaddr_len == NULL)
|
||||
|| (sa_family == NULL)) {
|
||||
ret = -1;
|
||||
goto err;
|
||||
}
|
||||
|
||||
|
||||
ret = client_fill_address_family (this, &sockaddr->sa_family);
|
||||
if (ret) {
|
||||
ret = -1;
|
||||
goto err;
|
||||
}
|
||||
|
||||
*sa_family = sockaddr->sa_family;
|
||||
|
||||
switch (sockaddr->sa_family)
|
||||
{
|
||||
case AF_INET_SDP:
|
||||
@ -497,6 +507,10 @@ socket_client_get_remote_sockaddr (transport_t *this,
|
||||
ret = -1;
|
||||
}
|
||||
|
||||
if (*sa_family == AF_UNSPEC) {
|
||||
*sa_family = sockaddr->sa_family;
|
||||
}
|
||||
|
||||
err:
|
||||
return ret;
|
||||
}
|
||||
@ -547,17 +561,22 @@ out:
|
||||
|
||||
|
||||
int32_t
|
||||
socket_server_get_local_sockaddr (transport_t *this,
|
||||
struct sockaddr *addr,
|
||||
socklen_t *addr_len)
|
||||
socket_server_get_local_sockaddr (transport_t *this, struct sockaddr *addr,
|
||||
socklen_t *addr_len, sa_family_t *sa_family)
|
||||
{
|
||||
int32_t ret = -1;
|
||||
|
||||
if ((addr == NULL) || (addr_len == NULL) || (sa_family == NULL)) {
|
||||
goto err;
|
||||
}
|
||||
|
||||
ret = server_fill_address_family (this, &addr->sa_family);
|
||||
if (ret == -1) {
|
||||
goto err;
|
||||
}
|
||||
|
||||
*sa_family = addr->sa_family;
|
||||
|
||||
switch (addr->sa_family)
|
||||
{
|
||||
case AF_INET_SDP:
|
||||
@ -574,6 +593,10 @@ socket_server_get_local_sockaddr (transport_t *this,
|
||||
break;
|
||||
}
|
||||
|
||||
if (*sa_family == AF_UNSPEC) {
|
||||
*sa_family = addr->sa_family;
|
||||
}
|
||||
|
||||
err:
|
||||
return ret;
|
||||
}
|
||||
|
@ -28,21 +28,15 @@ client_bind (transport_t *this,
|
||||
socklen_t *sockaddr_len,
|
||||
int sock);
|
||||
|
||||
int32_t
|
||||
client_fill_address_family (transport_t *this, sa_family_t *sa_family);
|
||||
|
||||
int32_t
|
||||
server_fill_address_family (transport_t *this, sa_family_t *sa_family);
|
||||
|
||||
int32_t
|
||||
socket_client_get_remote_sockaddr (transport_t *this,
|
||||
struct sockaddr *sockaddr,
|
||||
socklen_t *sockaddr_len);
|
||||
socklen_t *sockaddr_len,
|
||||
sa_family_t *sa_family);
|
||||
|
||||
int32_t
|
||||
socket_server_get_local_sockaddr (transport_t *this,
|
||||
struct sockaddr *addr,
|
||||
socklen_t *addr_len);
|
||||
socket_server_get_local_sockaddr (transport_t *this, struct sockaddr *addr,
|
||||
socklen_t *addr_len, sa_family_t *sa_family);
|
||||
|
||||
int32_t
|
||||
get_transport_identifiers (transport_t *this);
|
||||
|
@ -995,13 +995,8 @@ socket_connect (transport_t *this)
|
||||
goto err;
|
||||
}
|
||||
|
||||
ret = client_fill_address_family (this, &sa_family);
|
||||
if (ret == -1) {
|
||||
goto err;
|
||||
}
|
||||
|
||||
ret = socket_client_get_remote_sockaddr (this, SA (&sockaddr),
|
||||
&sockaddr_len);
|
||||
&sockaddr_len, &sa_family);
|
||||
if (ret == -1) {
|
||||
/* logged inside client_get_remote_sockaddr */
|
||||
goto err;
|
||||
@ -1140,13 +1135,8 @@ socket_listen (transport_t *this)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = server_fill_address_family (this, &sa_family);
|
||||
if (ret == -1) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = socket_server_get_local_sockaddr (this, SA (&sockaddr),
|
||||
&sockaddr_len);
|
||||
&sockaddr_len, &sa_family);
|
||||
if (ret == -1) {
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user