From 8019eaf184c1cadcf0ef6625e439851d0133de24 Mon Sep 17 00:00:00 2001 From: Pawel Dziepak Date: Sun, 5 Aug 2012 03:10:38 +0200 Subject: [PATCH] nfs4: Several minor fixes --- src/add-ons/kernel/file_systems/nfs4/Connection.cpp | 6 ++---- src/add-ons/kernel/file_systems/nfs4/RPCCallbackRequest.cpp | 5 ++++- src/add-ons/kernel/file_systems/nfs4/RPCCallbackServer.cpp | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/add-ons/kernel/file_systems/nfs4/Connection.cpp b/src/add-ons/kernel/file_systems/nfs4/Connection.cpp index b9a5f0eb41..25ed74b9b4 100644 --- a/src/add-ons/kernel/file_systems/nfs4/Connection.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/Connection.cpp @@ -593,7 +593,7 @@ ConnectionListener::Listen(ConnectionListener** _listener, uint16 port) status_t -ConnectionListener::AcceptConnection(Connection** _connection) +ConnectionListener::AcceptConnection(Connection** connection) { object_wait_info object[2]; object[0].object = fWaitCancel; @@ -623,15 +623,13 @@ ConnectionListener::AcceptConnection(Connection** _connection) ServerAddress address; address.fProtocol = IPPROTO_TCP; address.fAddress = addr; - Connection* connection; - status_t result = Connection::SetTo(&connection, sock, address); + status_t result = Connection::SetTo(connection, sock, address); if (result != B_OK) { close(sock); return result; } - *_connection = connection; return B_OK; } diff --git a/src/add-ons/kernel/file_systems/nfs4/RPCCallbackRequest.cpp b/src/add-ons/kernel/file_systems/nfs4/RPCCallbackRequest.cpp index 39788b1ca0..c4841127ad 100644 --- a/src/add-ons/kernel/file_systems/nfs4/RPCCallbackRequest.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/RPCCallbackRequest.cpp @@ -26,7 +26,7 @@ enum { PROGRAM_NFS_CB = 0x40000000 }; -#define NFS_VERSION 4 +#define NFS_CB_VERSION 1 CallbackRequest::CallbackRequest(void *buffer, int size) @@ -46,6 +46,9 @@ CallbackRequest::CallbackRequest(void *buffer, int size) if (fStream.GetUInt() != PROGRAM_NFS_CB) return; + if (fStream.GetUInt() != NFS_CB_VERSION) + return; + fProcedure = fStream.GetUInt(); fStream.GetOpaque(NULL); diff --git a/src/add-ons/kernel/file_systems/nfs4/RPCCallbackServer.cpp b/src/add-ons/kernel/file_systems/nfs4/RPCCallbackServer.cpp index 837557e947..5ff83f6ffc 100644 --- a/src/add-ons/kernel/file_systems/nfs4/RPCCallbackServer.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/RPCCallbackServer.cpp @@ -170,7 +170,7 @@ CallbackServer::NewConnection(Connection* connection) return B_NO_MEMORY; arguments[0] = this; - arguments[1] = connection; + arguments[1] = entry; thread_id thread; thread = spawn_kernel_thread(&CallbackServer::ConnectionThreadLauncher, @@ -224,7 +224,7 @@ status_t CallbackServer::ConnectionThread(ConnectionEntry* entry) { Connection* connection = entry->fConnection; - dprintf("NEW CONNECTION\n"); + while (fThreadRunning) { uint32 size; void* buffer;