[haiku-commits] BRANCH pdziepak-github.nfs4 - src/add-ons/kernel/file_systems/nfs4

  • From: pdziepak-github.nfs4 <community@xxxxxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Thu, 14 Feb 2013 21:00:57 +0100 (CET)

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);


Other related posts: