summaryrefslogtreecommitdiffstats
path: root/src/server/net.c
diff options
context:
space:
mode:
authorSimon Rettberg2025-10-24 08:52:25 +0200
committerSimon Rettberg2025-12-09 15:33:20 +0100
commit9e2e94ecb8140b159e1ba4d148d2e6dc57b5fc92 (patch)
treeb314b27ee275ceb0397729e7e92f7c63fc46ded0 /src/server/net.c
parent[SERVER] Refactor classic dnbd3 code a bit, locking etc. (diff)
downloaddnbd3-9e2e94ecb8140b159e1ba4d148d2e6dc57b5fc92.tar.gz
dnbd3-9e2e94ecb8140b159e1ba4d148d2e6dc57b5fc92.tar.xz
dnbd3-9e2e94ecb8140b159e1ba4d148d2e6dc57b5fc92.zip
Fix AFL build
Diffstat (limited to 'src/server/net.c')
-rw-r--r--src/server/net.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/src/server/net.c b/src/server/net.c
index 7804100..f2f63b8 100644
--- a/src/server/net.c
+++ b/src/server/net.c
@@ -41,6 +41,8 @@
#include <stdatomic.h>
#include <signal.h>
+#include <dnbd3/afl.h>
+
static dnbd3_client_t *_clients[SERVER_MAX_CLIENTS];
static int _num_clients = 0;
static pthread_mutex_t _clients_lock;
@@ -56,9 +58,7 @@ static void uplinkCallback(void *data, uint64_t handle, uint64_t start, uint32_t
static inline bool recv_request_header(int sock, dnbd3_request_t *request)
{
ssize_t ret, fails = 0;
-#ifdef DNBD3_SERVER_AFL
- sock = 0;
-#endif
+
// Read request header from socket
while ( ( ret = recv( sock, request, sizeof(*request), MSG_WAITALL ) ) != sizeof(*request) ) {
if ( errno == EINTR && ++fails < 10 ) continue;
@@ -83,9 +83,6 @@ static inline bool recv_request_header(int sock, dnbd3_request_t *request)
static inline bool recv_request_payload(int sock, uint32_t size, serialized_buffer_t *payload)
{
-#ifdef DNBD3_SERVER_AFL
- sock = 0;
-#endif
if ( size == 0 ) {
logadd( LOG_ERROR, "Called recv_request_payload() to receive 0 bytes" );
return false;
@@ -94,8 +91,9 @@ static inline bool recv_request_payload(int sock, uint32_t size, serialized_buff
logadd( LOG_ERROR, "Called recv_request_payload() for more bytes than the passed buffer could hold!" );
return false;
}
- if ( sock_recv( sock, payload->buffer, size ) != (ssize_t)size ) {
- logadd( LOG_DEBUG1, "Could not receive request payload of length %d\n", (int)size );
+ const ssize_t ret = sock_recv( sock, payload->buffer, size );
+ if ( ret != (ssize_t)size ) {
+ logadd( LOG_DEBUG1, "Could not receive request payload of length %d (got %d, errno %d)\n", (int)size, (int)ret, errno );
return false;
}
// Prepare payload buffer for reading
@@ -179,11 +177,7 @@ void* net_handleNewConnection(void *clientPtr)
}
}
do {
-#ifdef DNBD3_SERVER_AFL
- const int ret = (int)recv( 0, &request, sizeof(request), MSG_WAITALL );
-#else
const int ret = (int)recv( client->sock, &request, sizeof(request), MSG_WAITALL );
-#endif
// It's expected to be a real dnbd3 client
// Check request for validity. This implicitly dictates that all HTTP requests are more than 24 bytes...
if ( ret != (int)sizeof(request) ) {