added 2 changesets to branch 'refs/remotes/pdziepak-github/nfs4' old head: 4c64bd932c634e7115a88d494de083dca7c9e20d new head: 49518a1c1598060ed73e120faaf07b0b8a1681d8 overview: https://github.com/pdziepak/Haiku/compare/4c64bd9...49518a1 ---------------------------------------------------------------------------- da95db1: nfs4: Fix {last_one,result} may be used uninitialized warnings 49518a1: nfs4: Take advantage of PeerAddress class in Connection::Connect() [ Pawel Dziepak <pdziepak@xxxxxxxxxxx> ] ---------------------------------------------------------------------------- 1 file changed, 9 insertions(+), 44 deletions(-) .../kernel/file_systems/nfs4/Connection.cpp | 53 ++++---------------- ############################################################################ Commit: da95db10146a5ad0d619fee9ad970718302cf6c0 Author: Pawel Dziepak <pdziepak@xxxxxxxxxxx> Date: Thu Feb 14 17:13:59 2013 UTC nfs4: Fix {last_one,result} may be used uninitialized warnings ---------------------------------------------------------------------------- diff --git a/src/add-ons/kernel/file_systems/nfs4/Connection.cpp b/src/add-ons/kernel/file_systems/nfs4/Connection.cpp index adc21d9..03de1c0 100644 --- a/src/add-ons/kernel/file_systems/nfs4/Connection.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/Connection.cpp @@ -435,7 +435,7 @@ ConnectionStream::Receive(void** _buffer, uint32* _size) void* buffer = NULL; uint32 record_size; - bool last_one; + bool last_one = false; object_wait_info object[2]; object[0].object = fWaitCancel; @@ -688,6 +688,9 @@ Connection::Connect() addr6.sin6_port = htons(port); result = bind(fSocket, (struct sockaddr*)&addr6, sizeof(addr6)); break; + default: + result = EAFNOSUPPORT; + break; } } while (attempt <= 10 && result != B_OK); ############################################################################ Commit: 49518a1c1598060ed73e120faaf07b0b8a1681d8 Author: Pawel Dziepak <pdziepak@xxxxxxxxxxx> Date: Thu Feb 14 17:19:59 2013 UTC nfs4: Take advantage of PeerAddress class in Connection::Connect() ---------------------------------------------------------------------------- diff --git a/src/add-ons/kernel/file_systems/nfs4/Connection.cpp b/src/add-ons/kernel/file_systems/nfs4/Connection.cpp index 03de1c0..937e45e 100644 --- a/src/add-ons/kernel/file_systems/nfs4/Connection.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/Connection.cpp @@ -636,15 +636,12 @@ Connection::SetTo(Connection **_connection, int socket, status_t Connection::Connect() { - const sockaddr& address - = *reinterpret_cast<const sockaddr*>(&fPeerAddress); - switch (fPeerAddress.fProtocol) { case IPPROTO_TCP: - fSocket = socket(address.sa_family, SOCK_STREAM, IPPROTO_TCP); + fSocket = socket(fPeerAddress.Family(), SOCK_STREAM, IPPROTO_TCP); break; case IPPROTO_UDP: - fSocket = socket(address.sa_family, SOCK_DGRAM, IPPROTO_UDP); + fSocket = socket(fPeerAddress.Family(), SOCK_DGRAM, IPPROTO_UDP); break; default: return B_BAD_VALUE; @@ -655,21 +652,7 @@ Connection::Connect() status_t result; uint16 port, attempt = 0; - sockaddr_in addr; - sockaddr_in6 addr6; - switch (address.sa_family) { - case AF_INET: - memset(&addr, 0, sizeof(addr)); - addr.sin_len = sizeof(addr); - addr.sin_family = AF_INET; - addr.sin_addr.s_addr = INADDR_ANY; - break; - case AF_INET6: - memset(&addr6, 0, sizeof(addr6)); - addr6.sin6_len = sizeof(addr6); - addr6.sin6_family = AF_INET6; - break; - } + PeerAddress address(fPeerAddress.Family()); do { port = rand() % (IPPORT_RESERVED - NFS_MIN_PORT); @@ -679,19 +662,9 @@ Connection::Connect() port = 0; attempt++; - switch (address.sa_family) { - case AF_INET: - addr.sin_port = htons(port); - result = bind(fSocket, (struct sockaddr*)&addr, sizeof(addr)); - break; - case AF_INET6: - addr6.sin6_port = htons(port); - result = bind(fSocket, (struct sockaddr*)&addr6, sizeof(addr6)); - break; - default: - result = EAFNOSUPPORT; - break; - } + address.SetPort(port); + result = bind(fSocket, (sockaddr*)&address.fAddress, + address.AddressSize()); } while (attempt <= 10 && result != B_OK); if (attempt > 10) { @@ -699,19 +672,8 @@ Connection::Connect() return result; } - socklen_t addressSize; - switch (address.sa_family) { - case AF_INET: - addressSize = sizeof(sockaddr_in); - break; - case AF_INET6: - addressSize = sizeof(sockaddr_in6); - break; - default: - return B_BAD_VALUE; - } - - result = connect(fSocket, &address, addressSize); + result = connect(fSocket, (sockaddr*)&fPeerAddress.fAddress, + fPeerAddress.AddressSize()); if (result != 0) { result = errno; close(fSocket);