Fix deferred host DNS lookups.
authorbcook <bcook@openbsd.org>
Wed, 21 Jan 2015 03:14:10 +0000 (03:14 +0000)
committerbcook <bcook@openbsd.org>
Wed, 21 Jan 2015 03:14:10 +0000 (03:14 +0000)
If the network is unreachable when ntpd starts and host_dns fails, be sure
that we still close the HOST_DNS imsg.

Thanks to Paul de Weerd <weerd at weirdnet dot nl> for reporting this.

ok beck@

usr.sbin/ntpd/ntp_dns.c
usr.sbin/ntpd/ntpd.c

index 451b358..37dea75 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ntp_dns.c,v 1.7 2015/01/13 02:28:56 bcook Exp $ */
+/*     $OpenBSD: ntp_dns.c,v 1.8 2015/01/21 03:14:10 bcook Exp $ */
 
 /*
  * Copyright (c) 2003-2008 Henning Brauer <henning@openbsd.org>
@@ -167,12 +167,12 @@ dns_dispatch_imsg(void)
                                                        buf = NULL;
                                                        break;
                                                }
-                                       if (buf)
-                                               imsg_close(ibuf_dns, buf);
                                }
                                host_dns_free(hn);
                                hn = NULL;
                        }
+                       if (buf)
+                               imsg_close(ibuf_dns, buf);
                        break;
                default:
                        break;
index 6f85b14..c22e5b7 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ntpd.c,v 1.87 2015/01/19 20:47:03 bcook Exp $ */
+/*     $OpenBSD: ntpd.c,v 1.88 2015/01/21 03:14:10 bcook Exp $ */
 
 /*
  * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -366,12 +366,12 @@ dispatch_imsg(struct ntpd_conf *lconf)
                                                        buf = NULL;
                                                        break;
                                                }
-                                       if (buf)
-                                               imsg_close(ibuf, buf);
                                }
                                host_dns_free(hn);
                                hn = NULL;
                        }
+                       if (buf)
+                               imsg_close(ibuf, buf);
                        break;
                default:
                        break;