99 lines
2.9 KiB
Diff
99 lines
2.9 KiB
Diff
From ce15607bca2509bc2abd440000d25498ad589e27 Mon Sep 17 00:00:00 2001
|
|
From: Marius Tomaschewski <mt@suse.de>
|
|
Date: Mon, 14 Sep 2015 15:31:37 +0200
|
|
Subject: [PATCH] server: no success report before send (bsc#919959)
|
|
References: bsc#919959
|
|
|
|
|
|
diff --git a/server/dhcp.c b/server/dhcp.c
|
|
index effa9b1..18297a6 100644
|
|
--- a/server/dhcp.c
|
|
+++ b/server/dhcp.c
|
|
@@ -3859,22 +3859,6 @@ void dhcp_reply (lease)
|
|
}
|
|
#endif
|
|
|
|
- /* Say what we're doing... */
|
|
- log_info ("%s on %s to %s %s%s%svia %s",
|
|
- (state -> offer
|
|
- ? (state -> offer == DHCPACK ? "DHCPACK" : "DHCPOFFER")
|
|
- : "BOOTREPLY"),
|
|
- piaddr (lease -> ip_addr),
|
|
- (lease -> hardware_addr.hlen
|
|
- ? print_hw_addr (lease -> hardware_addr.hbuf [0],
|
|
- lease -> hardware_addr.hlen - 1,
|
|
- &lease -> hardware_addr.hbuf [1])
|
|
- : print_hex_1(lease->uid_len, lease->uid, 60)),
|
|
- s ? "(" : "", s ? s : "", s ? ") " : "",
|
|
- (state -> giaddr.s_addr
|
|
- ? inet_ntoa (state -> giaddr)
|
|
- : state -> ip -> name));
|
|
-
|
|
#ifdef DEBUG_PACKET
|
|
dump_raw ((unsigned char *)&raw, packet_length);
|
|
#endif
|
|
@@ -3906,12 +3890,13 @@ void dhcp_reply (lease)
|
|
"packet over %s interface.", MDL,
|
|
packet_length,
|
|
fallback_interface->name);
|
|
- }
|
|
|
|
+ free_lease_state (state, MDL);
|
|
+ lease -> state = (struct lease_state *)0;
|
|
+ return;
|
|
+ }
|
|
|
|
- free_lease_state (state, MDL);
|
|
- lease -> state = (struct lease_state *)0;
|
|
- return;
|
|
+ goto report;
|
|
}
|
|
|
|
/* If the client is RENEWING, unicast to the client using the
|
|
@@ -3944,11 +3929,13 @@ void dhcp_reply (lease)
|
|
" packet over %s interface.", MDL,
|
|
packet_length,
|
|
fallback_interface->name);
|
|
+
|
|
+ free_lease_state (state, MDL);
|
|
+ lease -> state = (struct lease_state *)0;
|
|
+ return;
|
|
}
|
|
|
|
- free_lease_state (state, MDL);
|
|
- lease -> state = (struct lease_state *)0;
|
|
- return;
|
|
+ goto report;
|
|
}
|
|
|
|
/* If it comes from a client that already knows its address
|
|
@@ -3976,8 +3963,28 @@ void dhcp_reply (lease)
|
|
log_error ("%s:%d: Failed to send %d byte long "
|
|
"packet over %s interface.", MDL,
|
|
packet_length, state->ip->name);
|
|
+
|
|
+ free_lease_state (state, MDL);
|
|
+ lease -> state = (struct lease_state *)0;
|
|
+ return;
|
|
}
|
|
|
|
+report:
|
|
+ /* Say what we're doing... */
|
|
+ log_info ("%s on %s to %s %s%s%svia %s",
|
|
+ (state -> offer
|
|
+ ? (state -> offer == DHCPACK ? "DHCPACK" : "DHCPOFFER")
|
|
+ : "BOOTREPLY"),
|
|
+ piaddr (lease -> ip_addr),
|
|
+ (lease -> hardware_addr.hlen
|
|
+ ? print_hw_addr (lease -> hardware_addr.hbuf [0],
|
|
+ lease -> hardware_addr.hlen - 1,
|
|
+ &lease -> hardware_addr.hbuf [1])
|
|
+ : print_hex_1(lease->uid_len, lease->uid, 60)),
|
|
+ s ? "(" : "", s ? s : "", s ? ") " : "",
|
|
+ (state -> giaddr.s_addr
|
|
+ ? inet_ntoa (state -> giaddr)
|
|
+ : state -> ip -> name));
|
|
|
|
/* Free all of the entries in the option_state structure
|
|
now that we're done with them. */
|