From 6dd0320b44ed849fef2af5d2e622d0386fdb7d09 Mon Sep 17 00:00:00 2001 From: lemoer Date: Sat, 10 Sep 2016 05:44:58 +0200 Subject: [PATCH] respondd: remove code dupplication --- net/respondd/src/respondd.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/net/respondd/src/respondd.c b/net/respondd/src/respondd.c index 1d47947..08dfb44 100644 --- a/net/respondd/src/respondd.c +++ b/net/respondd/src/respondd.c @@ -506,15 +506,16 @@ static void accept_request(struct request_schedule *schedule, int sock, new_task->request[input_bytes] = 0; new_task->client_addr = addr; - if (!IN6_IS_ADDR_MULTICAST(&destaddr)) { - // unicast packets are sent directly (delay is ignored) - serve_request(new_task, sock); - free(new_task); - return; - } + bool is_scheduled; + if(IN6_IS_ADDR_MULTICAST(&destaddr)) + // scheduling could fail because the schedule is full + is_scheduled = schedule_push_request(schedule, new_task); + else + // unicast packets are always sent directly + is_scheduled = false; - if (!schedule_push_request(schedule, new_task)) { - // we can't schedule, so send the response immediately + if (!is_scheduled) { + // reply immediately serve_request(new_task, sock); free(new_task); }