From 9431509f5c1c661a6f6f4665198f5d3b24826d9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 30 Apr 2009 11:59:11 +0000 Subject: [PATCH] * Fixed broken socket_get_next_stat() that was responsible for bug #3830. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30500 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/network/stack/net_socket.cpp | 8 ++++---- src/system/kernel/fs/socket.cpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/add-ons/kernel/network/stack/net_socket.cpp b/src/add-ons/kernel/network/stack/net_socket.cpp index 786f4c534a..1ca62fa22d 100644 --- a/src/add-ons/kernel/network/stack/net_socket.cpp +++ b/src/add-ons/kernel/network/stack/net_socket.cpp @@ -560,8 +560,11 @@ socket_get_next_stat(uint32* _cookie, int family, struct net_stat* stat) SocketList::Iterator iterator = sSocketList.GetIterator(); uint32 cookie = *_cookie; uint32 count = 0; - while (iterator.HasNext()) { + + while (true) { socket = iterator.Next(); + if (socket == NULL) + return B_ENTRY_NOT_FOUND; // TODO: also traverse the pending connections if (count == cookie) @@ -571,9 +574,6 @@ socket_get_next_stat(uint32* _cookie, int family, struct net_stat* stat) count++; } - if (socket == NULL) - return B_ENTRY_NOT_FOUND; - *_cookie = count + 1; stat->family = socket->family; diff --git a/src/system/kernel/fs/socket.cpp b/src/system/kernel/fs/socket.cpp index de4d15dbaf..8d0895a04e 100644 --- a/src/system/kernel/fs/socket.cpp +++ b/src/system/kernel/fs/socket.cpp @@ -1248,7 +1248,7 @@ _user_get_next_socket_stat(int family, uint32 *_cookie, struct net_stat *_stat) uint32 cookie; if (!IS_USER_ADDRESS(_stat) || !IS_USER_ADDRESS(_cookie) - || user_memcpy(&cookie, _cookie, sizeof(cookie)) != B_OK) { + || user_memcpy(&cookie, _cookie, sizeof(cookie)) != B_OK) { return B_BAD_ADDRESS; }