]> git.ipfire.org Git - thirdparty/dhcp.git/commitdiff
Actually fix the spin that I thought I'd fixed previously.
authorTed Lemon <source@isc.org>
Tue, 20 Mar 2001 07:29:35 +0000 (07:29 +0000)
committerTed Lemon <source@isc.org>
Tue, 20 Mar 2001 07:29:35 +0000 (07:29 +0000)
server/dhcp.c

index 14f7756affd73770e4244d979813673ec5b6f1f6..5070231537ef2c81c70eacb8a366d830160ea243 100644 (file)
@@ -43,7 +43,7 @@
 
 #ifndef lint
 static char copyright[] =
-"$Id: dhcp.c,v 1.186 2001/03/17 00:48:34 mellon Exp $ Copyright (c) 1995-2000 The Internet Software Consortium.  All rights reserved.\n";
+"$Id: dhcp.c,v 1.187 2001/03/20 07:29:35 mellon Exp $ Copyright (c) 1995-2000 The Internet Software Consortium.  All rights reserved.\n";
 #endif /* not lint */
 
 #include "dhcpd.h"
@@ -1504,15 +1504,17 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp)
                                            seek -> ends > cur_time)
                                                break;
                                        lease_dereference (&seek, MDL);
-                                       if (next)
+                                       if (next) {
                                            lease_reference (&seek, next, MDL);
+                                       }
                                }
+                               if (next)
+                                       lease_dereference (&next, MDL);
                                if (seek) {
                                        release_lease (seek, packet);
                                        lease_dereference (&seek, MDL);
-                               }
-                               if (next)
-                                       lease_dereference (&next, MDL);
+                               } else
+                                       break;
                        } while (1);
                }
                if (!lease -> uid_len ||
@@ -1542,13 +1544,18 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp)
                                            seek -> ends > cur_time)
                                                break;
                                        lease_dereference (&seek, MDL);
-                                       if (next)
+                                       if (next) {
                                            lease_reference (&seek, next, MDL);
+                                           lease_dereference (&next, MDL);
+                                       }
                                }
+                               if (next)
+                                       lease_dereference (&next, MDL);
                                if (seek) {
                                        release_lease (seek, packet);
                                        lease_dereference (&seek, MDL);
-                               }
+                               } else
+                                       break;
                        } while (1);
                }
        }