@@ -3,6 +3,8 @@
authorian <ian>
Sun, 7 May 2000 15:30:18 +0000 (15:30 +0000)
committerian <ian>
Sun, 7 May 2000 15:30:18 +0000 (15:30 +0000)
   Bugfixes:
+  * Race near adns_beforeselect which could cause infinite timeout fixed
+    (it's now less agressive, and will more often return a zero timeout.)

14 files changed:
changelog
regress/case-1stservbroken.sys
regress/case-2ndservtcp.sys
regress/case-abbrevto.sys
regress/case-datapluscnamewait.sys
regress/case-lockup.err [new file with mode: 0644]
regress/case-lockup.out [new file with mode: 0644]
regress/case-lockup.sys [new file with mode: 0644]
regress/case-manyptrwrongrst.sys
regress/case-norecurse2.sys
regress/case-norecurse3.sys
regress/case-rootqueryall.sys
src/adns.h
src/event.c

index 10a9174..bf73cfc 100644 (file)
--- a/changelog
+++ b/changelog
@@ -3,6 +3,8 @@ uadns (0.8) BETA; urgency=low
   * bug_if_query_done feature for debugging (SHOULD BE TAKEN OUT FOR RELEASE) 
 
   Bugfixes:
+  * Race near adns_beforeselect which could cause infinite timeout fixed
+    (it's now less agressive, and will more often return a zero timeout.)
   * Spurious `server failure on unidentifiable query' warning suppressed.
   * adnslogres: cast chars to unsigned char before using ctype.h macros.
   * In _beforeselect, global failure now means zero timeout, and in
index 36c7837..2b1e9ed 100644 (file)
  close fd=5
  close=OK
  +0.000687
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.000001
  socket type=SOCK_STREAM
  socket=5
- +0.004866
+ +0.004865
  fcntl fd=5 cmd=F_GETFL
  fcntl=~O_NONBLOCK&...
  +0.000611
  connect fd=5 addr=172.18.45.6:53
  connect=EINPROGRESS
  +0.001082
- select max=6 rfds=[4] wfds=[5] efds=[] to=14.000000
+ select max=6 rfds=[4] wfds=[5] efds=[] to=13.992868
  select=1 rfds=[] wfds=[5] efds=[]
  +0.001011
  read fd=5 buflen=1
index 5267730..0e6da2e 100644 (file)
  close fd=5
  close=OK
  +0.000146
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.000001
  socket type=SOCK_STREAM
  socket=5
  +0.000678
  fcntl fd=5 cmd=F_GETFL
  fcntl=~O_NONBLOCK&...
- +0.000042
+ +0.000041
  fcntl fd=5 cmd=F_SETFL O_NONBLOCK|...
  fcntl=OK
  +0.000039
  connect fd=5 addr=172.18.45.6:53
  connect=EINPROGRESS
  +0.000455
- select max=6 rfds=[4] wfds=[5] efds=[] to=14.000000
+ select max=6 rfds=[4] wfds=[5] efds=[] to=13.998787
  select=1 rfds=[] wfds=[5] efds=[]
  +0.000135
  read fd=5 buflen=1
index 3cfbcbf..ae1826c 100644 (file)
@@ -264,11 +264,14 @@ noserver
      01.
  sendto=33
  +0.000427
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.000001
  sendto fd=4 addr=172.18.45.36:53
      31200100 00010000 00000000 08677265 656e656e 64036f72 6702756b 00000200
      01.
  sendto=33
- +0.000318
+ +0.000317
  sendto fd=4 addr=172.18.45.36:53
      31210100 00010000 00000000 08677265 656e656e 64036f72 6702756b 00000500
      01.
@@ -334,7 +337,7 @@ noserver
      01.
  sendto=33
  +0.000274
- select max=5 rfds=[4] wfds=[] efds=[] to=1.999573
+ select max=5 rfds=[4] wfds=[] efds=[] to=1.995581
  select=0 rfds=[] wfds=[] efds=[]
  +2.-04960
  select max=5 rfds=[4] wfds=[] efds=[] to=0.000541
index 9051916..77c5a13 100644 (file)
@@ -247,12 +247,15 @@ default
      64647204 61727061 00000100 01.
  sendto=45
  +0.001211
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.000001
  sendto fd=4 addr=172.18.45.6:53
      31200100 00010000 00000000 03313730 02393903 32313903 31393407 696e2d61
      64647204 61727061 00000200 01.
  sendto=45
- +0.001067
- select max=5 rfds=[4] wfds=[] efds=[] to=0.019298
+ +0.001066
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.018231
  select=0 rfds=[] wfds=[] efds=[]
  +0.017752
  select max=5 rfds=[4] wfds=[] efds=[] to=0.000479
@@ -290,12 +293,15 @@ default
      64647204 61727061 00000f00 01.
  sendto=45
  +0.001184
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.000001
  sendto fd=4 addr=172.18.45.6:53
      31260100 00010000 00000000 03313730 02393903 32313903 31393407 696e2d61
      64647204 61727061 00001000 01.
  sendto=45
- +0.001061
- select max=5 rfds=[4] wfds=[] efds=[] to=0.009461
+ +0.001060
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.008400
  select=0 rfds=[] wfds=[] efds=[]
  +0.007976
  select max=5 rfds=[4] wfds=[] efds=[] to=0.000424
@@ -306,12 +312,15 @@ default
      64647204 61727061 00001100 01.
  sendto=45
  +0.001097
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.000001
  sendto fd=4 addr=172.18.45.6:53
      31280100 00010000 00000000 03313730 02393903 32313903 31393407 696e2d61
      64647204 61727061 00000100 01.
  sendto=45
- +0.000765
- select max=5 rfds=[4] wfds=[] efds=[] to=0.009230
+ +0.000764
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.008465
  select=0 rfds=[] wfds=[] efds=[]
  +0.008502
  sendto fd=4 addr=172.18.45.6:53
@@ -421,12 +430,15 @@ default
      64647204 61727061 00000100 01.
  sendto=45
  +0.000740
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.000001
  sendto fd=4 addr=172.18.45.6:53
      31290100 00010000 00000000 03313730 02393903 32313903 31393407 696e2d61
      64647204 61727061 00000200 01.
  sendto=45
- +0.000707
- select max=5 rfds=[4] wfds=[] efds=[] to=0.038447
+ +0.000706
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.037740
  select=0 rfds=[] wfds=[] efds=[]
  +0.037284
  select max=5 rfds=[4] wfds=[] efds=[] to=0.000456
diff --git a/regress/case-lockup.err b/regress/case-lockup.err
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/regress/case-lockup.out b/regress/case-lockup.out
new file mode 100644 (file)
index 0000000..a3f7495
--- /dev/null
@@ -0,0 +1,4 @@
+adns debug: using nameserver 172.18.45.36
+chiark.greenend.org.uk flags 0 type 1 A(-) submitted
+chiark.greenend.org.uk flags 0 type A(-): DNS query timed out; nrrs=0; cname=$; owner=$; ttl=604770
+rc=0
diff --git a/regress/case-lockup.sys b/regress/case-lockup.sys
new file mode 100644 (file)
index 0000000..8336d92
--- /dev/null
@@ -0,0 +1,135 @@
+noserver
+:1 chiark.greenend.org.uk
+ start 912889153.349504
+ socket type=SOCK_DGRAM
+ socket=4
+ +0.000193
+ fcntl fd=4 cmd=F_GETFL
+ fcntl=~O_NONBLOCK&...
+ +0.000088
+ fcntl fd=4 cmd=F_SETFL O_NONBLOCK|...
+ fcntl=OK
+ +0.000072
+ sendto fd=4 addr=172.18.45.36:53
+     311f0100 00010000 00000000 06636869 61726b08 67726565 6e656e64 036f7267
+     02756b00 00010001.
+ sendto=40
+ +0.000617
+ select max=5 rfds=[4] wfds=[] efds=[] to=1.999383
+ select=0 rfds=[] wfds=[] efds=[]
+ +2.008683
+ sendto fd=4 addr=172.18.45.36:53
+     311f0100 00010000 00000000 06636869 61726b08 67726565 6e656e64 036f7267
+     02756b00 00010001.
+ sendto=40
+ +0.000406
+ select max=5 rfds=[4] wfds=[] efds=[] to=1.999594
+ select=0 rfds=[] wfds=[] efds=[]
+ +2.009544
+ sendto fd=4 addr=172.18.45.36:53
+     311f0100 00010000 00000000 06636869 61726b08 67726565 6e656e64 036f7267
+     02756b00 00010001.
+ sendto=40
+ +0.000428
+ select max=5 rfds=[4] wfds=[] efds=[] to=1.999572
+ select=0 rfds=[] wfds=[] efds=[]
+ +2.009567
+ sendto fd=4 addr=172.18.45.36:53
+     311f0100 00010000 00000000 06636869 61726b08 67726565 6e656e64 036f7267
+     02756b00 00010001.
+ sendto=40
+ +0.000449
+ select max=5 rfds=[4] wfds=[] efds=[] to=1.999551
+ select=0 rfds=[] wfds=[] efds=[]
+ +2.009551
+ sendto fd=4 addr=172.18.45.36:53
+     311f0100 00010000 00000000 06636869 61726b08 67726565 6e656e64 036f7267
+     02756b00 00010001.
+ sendto=40
+ +0.000381
+ select max=5 rfds=[4] wfds=[] efds=[] to=1.999619
+ select=0 rfds=[] wfds=[] efds=[]
+ +2.009614
+ sendto fd=4 addr=172.18.45.36:53
+     311f0100 00010000 00000000 06636869 61726b08 67726565 6e656e64 036f7267
+     02756b00 00010001.
+ sendto=40
+ +0.000383
+ select max=5 rfds=[4] wfds=[] efds=[] to=1.999617
+ select=0 rfds=[] wfds=[] efds=[]
+ +2.009622
+ sendto fd=4 addr=172.18.45.36:53
+     311f0100 00010000 00000000 06636869 61726b08 67726565 6e656e64 036f7267
+     02756b00 00010001.
+ sendto=40
+ +0.000387
+ select max=5 rfds=[4] wfds=[] efds=[] to=1.999613
+ select=0 rfds=[] wfds=[] efds=[]
+ +2.009603
+ sendto fd=4 addr=172.18.45.36:53
+     311f0100 00010000 00000000 06636869 61726b08 67726565 6e656e64 036f7267
+     02756b00 00010001.
+ sendto=40
+ +0.000404
+ select max=5 rfds=[4] wfds=[] efds=[] to=1.999596
+ select=0 rfds=[] wfds=[] efds=[]
+ +2.009607
+ sendto fd=4 addr=172.18.45.36:53
+     311f0100 00010000 00000000 06636869 61726b08 67726565 6e656e64 036f7267
+     02756b00 00010001.
+ sendto=40
+ +0.000468
+ select max=5 rfds=[4] wfds=[] efds=[] to=1.999532
+ select=0 rfds=[] wfds=[] efds=[]
+ +2.009526
+ sendto fd=4 addr=172.18.45.36:53
+     311f0100 00010000 00000000 06636869 61726b08 67726565 6e656e64 036f7267
+     02756b00 00010001.
+ sendto=40
+ +0.000431
+ select max=5 rfds=[4] wfds=[] efds=[] to=1.999569
+ select=0 rfds=[] wfds=[] efds=[]
+ +2.009564
+ sendto fd=4 addr=172.18.45.36:53
+     311f0100 00010000 00000000 06636869 61726b08 67726565 6e656e64 036f7267
+     02756b00 00010001.
+ sendto=40
+ +0.000429
+ select max=5 rfds=[4] wfds=[] efds=[] to=1.999571
+ select=0 rfds=[] wfds=[] efds=[]
+ +2.009586
+ sendto fd=4 addr=172.18.45.36:53
+     311f0100 00010000 00000000 06636869 61726b08 67726565 6e656e64 036f7267
+     02756b00 00010001.
+ sendto=40
+ +0.000479
+ select max=5 rfds=[4] wfds=[] efds=[] to=1.999521
+ select=0 rfds=[] wfds=[] efds=[]
+ +2.009511
+ sendto fd=4 addr=172.18.45.36:53
+     311f0100 00010000 00000000 06636869 61726b08 67726565 6e656e64 036f7267
+     02756b00 00010001.
+ sendto=40
+ +0.000430
+ select max=5 rfds=[4] wfds=[] efds=[] to=1.999570
+ select=0 rfds=[] wfds=[] efds=[]
+ +2.009571
+ sendto fd=4 addr=172.18.45.36:53
+     311f0100 00010000 00000000 06636869 61726b08 67726565 6e656e64 036f7267
+     02756b00 00010001.
+ sendto=40
+ +0.000440
+ select max=5 rfds=[4] wfds=[] efds=[] to=1.999560
+ select=0 rfds=[] wfds=[] efds=[]
+ +2.009564
+ sendto fd=4 addr=172.18.45.36:53
+     311f0100 00010000 00000000 06636869 61726b08 67726565 6e656e64 036f7267
+     02756b00 00010001.
+ sendto=40
+ +2.000439
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.000001
+ close fd=4
+ close=OK
+ +0.000267
index 227264f..cb0bdf0 100644 (file)
@@ -205,54 +205,60 @@ default
      72046172 70610000 110001.
  sendto=43
  +0.002868
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.000001
  sendto fd=4 addr=172.18.45.6:53
      31290100 00010000 00000000 03323534 01300239 39033230 3307696e 2d616464
      72046172 70610000 020001.
  sendto=43
- +0.002428
- select max=5 rfds=[4] wfds=[] efds=[] to=0.000824
- select=1 rfds=[4] wfds=[] efds=[]
+ +0.002427
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=0 rfds=[] wfds=[] efds=[]
  +0.004373
  sendto fd=4 addr=172.18.45.6:53
      312a0100 00010000 00000000 03323534 01300239 39033230 3307696e 2d616464
      72046172 70610000 0c0001.
  sendto=43
- +0.002426
+ +0.002425
  sendto fd=4 addr=172.18.45.6:53
      312b0100 00010000 00000000 03323534 01300239 39033230 3307696e 2d616464
      72046172 70610000 0f0001.
  sendto=43
  +0.002419
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=1 rfds=[4] wfds=[] efds=[]
+ +0.005328
+ sendto fd=4 addr=172.18.45.6:53
+     312c0100 00010000 00000000 03323534 01300239 39033230 3307696e 2d616464
+     72046172 70610000 060001.
+ sendto=43
+ +0.002641
+ sendto fd=4 addr=172.18.45.6:53
+     312d0100 00010000 00000000 03323534 01300239 39033230 3307696e 2d616464
+     72046172 70610000 110001.
+ sendto=43
+ +0.000001
  recvfrom fd=4 buflen=512 *addrlen=16
  recvfrom=OK addr=172.18.45.6:53
      31298180 00010000 00010000 03323534 01300239 39033230 3307696e 2d616464
      72046172 70610000 02000101 30023939 03323033 07696e2d 61646472 04617270
      61000006 00010000 0258002e 026e7308 73656375 72697479 02636f02 6e7a0004
      726f6f74 c04c7727 714c0000 2a300000 0e100009 3a800001 5180.
- +0.001124
+ +0.000001
  recvfrom fd=4 buflen=512 *addrlen=16
  recvfrom=OK addr=172.18.45.6:53
      31298180 00010000 00010000 03323534 01300239 39033230 3307696e 2d616464
      72046172 70610000 02000101 30023939 03323033 07696e2d 61646472 04617270
      61000006 00010000 0258002e 026e7308 73656375 72697479 02636f02 6e7a0004
      726f6f74 c04c7727 714c0000 2a300000 0e100009 3a800001 5180.
- +0.003807
+ +0.000001
  recvfrom fd=4 buflen=512 *addrlen=16
  recvfrom=EAGAIN
- +0.000397
- sendto fd=4 addr=172.18.45.6:53
-     312c0100 00010000 00000000 03323534 01300239 39033230 3307696e 2d616464
-     72046172 70610000 060001.
- sendto=43
- +0.002641
- sendto fd=4 addr=172.18.45.6:53
-     312d0100 00010000 00000000 03323534 01300239 39033230 3307696e 2d616464
-     72046172 70610000 110001.
- sendto=43
- +0.002667
- select max=5 rfds=[4] wfds=[] efds=[] to=1.970184
+ +0.002664
+ select max=5 rfds=[4] wfds=[] efds=[] to=1.964877
  select=1 rfds=[4] wfds=[] efds=[]
- +0.003668
+ +0.003669
  recvfrom fd=4 buflen=512 *addrlen=16
  recvfrom=OK addr=172.18.45.6:53
      312b8180 00010000 00010000 03323534 01300239 39033230 3307696e 2d616464
index 388543f..1397bbf 100644 (file)
@@ -231,12 +231,15 @@ default -0x16
      72046172 70610000 020001.
  sendto=43
  +0.000484
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.000001
  sendto fd=4 addr=172.18.45.6:53
      31210100 00010000 00000000 01340332 30340235 30033135 3807696e 2d616464
      72046172 70610000 050001.
  sendto=43
- +0.000485
- select max=5 rfds=[4] wfds=[] efds=[] to=0.002425
+ +0.000484
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.001940
  select=1 rfds=[4] wfds=[] efds=[]
  +0.000119
  recvfrom fd=4 buflen=512 *addrlen=16
@@ -277,7 +280,7 @@ default -0x16
      312c0100 00010000 00000000 01340332 30340235 30033135 3807696e 2d616464
      72046172 70610000 060001.
  sendto=43
- +0.000488
+ +0.000489
  select max=5 rfds=[4] wfds=[] efds=[] to=1.980098
  select=1 rfds=[4] wfds=[] efds=[]
  +0.000131
@@ -300,17 +303,20 @@ default -0x16
      72046172 70610000 050001.
  sendto=43
  +0.000505
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.000001
  sendto fd=4 addr=172.18.45.6:53
      31230100 00010000 00000000 01340332 30340235 30033135 3807696e 2d616464
      72046172 70610000 0c0001.
  sendto=43
- +0.000530
+ +0.000529
  sendto fd=4 addr=172.18.45.6:53
      31270100 00010000 00000000 01340332 30340235 30033135 3807696e 2d616464
      72046172 70610000 110001.
  sendto=43
  +0.000468
- select max=5 rfds=[4] wfds=[] efds=[] to=0.009497
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.008498
  select=0 rfds=[] wfds=[] efds=[]
  +0.008500
  sendto fd=4 addr=172.18.45.6:53
@@ -326,17 +332,20 @@ default -0x16
      72046172 70610000 050001.
  sendto=43
  +0.000537
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.000001
  sendto fd=4 addr=172.18.45.6:53
      31230100 00010000 00000000 01340332 30340235 30033135 3807696e 2d616464
      72046172 70610000 0c0001.
  sendto=43
- +0.000485
+ +0.000484
  sendto fd=4 addr=172.18.45.6:53
      31270100 00010000 00000000 01340332 30340235 30033135 3807696e 2d616464
      72046172 70610000 110001.
  sendto=43
  +0.000487
- select max=5 rfds=[4] wfds=[] efds=[] to=0.009450
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.008478
  select=0 rfds=[] wfds=[] efds=[]
  +0.008478
  select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
@@ -355,17 +364,20 @@ default -0x16
      72046172 70610000 050001.
  sendto=43
  +0.000612
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.000001
  sendto fd=4 addr=172.18.45.6:53
      31230100 00010000 00000000 01340332 30340235 30033135 3807696e 2d616464
      72046172 70610000 0c0001.
  sendto=43
- +0.000552
+ +0.000551
  sendto fd=4 addr=172.18.45.6:53
      31270100 00010000 00000000 01340332 30340235 30033135 3807696e 2d616464
      72046172 70610000 110001.
  sendto=43
  +0.000564
- select max=5 rfds=[4] wfds=[] efds=[] to=0.009474
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.008358
  select=0 rfds=[] wfds=[] efds=[]
  +0.008252
  select max=5 rfds=[4] wfds=[] efds=[] to=0.000106
index f1ff264..2daa4d5 100644 (file)
@@ -151,19 +151,25 @@ default -0x16
      64720561 72706131 00000500 01.
  sendto=45
  +0.000438
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.000001
  sendto fd=4 addr=172.18.45.6:53
      31220100 00010000 00000000 01320332 30330331 35360331 39350769 6e2d6164
      64720561 72706131 00000600 01.
  sendto=45
- +0.000483
- select max=5 rfds=[4] wfds=[] efds=[] to=0.000057
+ +0.000482
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
  select=0 rfds=[] wfds=[] efds=[]
- +0.008066
+ +0.000001
  sendto fd=4 addr=172.18.45.6:53
      31230100 00010000 00000000 01320332 30330331 35360331 39350769 6e2d6164
      64720561 72706131 00000c00 01.
  sendto=45
- +0.000453
+ +0.000001
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000861
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.008517
  sendto fd=4 addr=172.18.45.6:53
      31240100 00010000 00000000 01320332 30330331 35360331 39350769 6e2d6164
      64720561 72706131 00000d00 01.
@@ -194,11 +200,14 @@ default -0x16
      64720561 72706131 00000200 01.
  sendto=45
  +0.000829
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.000001
  sendto fd=4 addr=172.18.45.6:53
      312a0100 00010000 00000000 01320332 30330331 35360331 39350769 6e2d6164
      64720561 72706131 00000c00 01.
  sendto=45
- +0.000488
+ +0.000487
  sendto fd=4 addr=172.18.45.6:53
      312b0100 00010000 00000000 01320332 30330331 35360331 39350769 6e2d6164
      64720561 72706131 00000f00 01.
@@ -209,17 +218,17 @@ default -0x16
      64720561 72706131 00000600 01.
  sendto=45
  +0.000430
- select max=5 rfds=[4] wfds=[] efds=[] to=0.001297
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
  select=0 rfds=[] wfds=[] efds=[]
- +0.005148
+ +0.000001
  sendto fd=4 addr=172.18.45.6:53
      312d0100 00010000 00000000 01320332 30330331 35360331 39350769 6e2d6164
      64720561 72706131 00001100 01.
  sendto=45
- +0.000447
- select max=5 rfds=[4] wfds=[] efds=[] to=1.979550
+ +0.000001
+ select max=5 rfds=[4] wfds=[] efds=[] to=1.985143
  select=0 rfds=[] wfds=[] efds=[]
- +2.-20428
+ +1.985166
  sendto fd=4 addr=172.18.45.6:53
      311f0100 00010000 00000000 01320332 30330331 35360331 39350769 6e2d6164
      64720561 72706131 00000100 01.
@@ -235,14 +244,14 @@ default -0x16
      64720561 72706131 00000500 01.
  sendto=45
  +0.000455
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.000001
  sendto fd=4 addr=172.18.45.6:53
      31220100 00010000 00000000 01320332 30330331 35360331 39350769 6e2d6164
      64720561 72706131 00000600 01.
  sendto=45
- +0.000483
- select max=5 rfds=[4] wfds=[] efds=[] to=0.008522
- select=0 rfds=[] wfds=[] efds=[]
- +0.008039
+ +0.000482
  select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
  select=0 rfds=[] wfds=[] efds=[]
  +0.000145
@@ -251,6 +260,9 @@ default -0x16
      64720561 72706131 00000c00 01.
  sendto=45
  +0.000448
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.007898
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.008039
  sendto fd=4 addr=172.18.45.6:53
      31240100 00010000 00000000 01320332 30330331 35360331 39350769 6e2d6164
      64720561 72706131 00000d00 01.
index d20c073..f38522d 100644 (file)
@@ -377,10 +377,13 @@ default -,s
      31300100 00010000 00000000 00000500 01.
  sendto=17
  +0.000710
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.000001
  sendto fd=4 addr=172.18.45.6:53
      31320100 00010000 00000000 00000c00 01.
  sendto=17
- +0.000724
+ +0.000723
  sendto fd=4 addr=172.18.45.6:53
      31330100 00010000 00000000 00000d00 01.
  sendto=17
@@ -413,7 +416,7 @@ default -,s
      313c0100 00010000 00000000 00001100 01.
  sendto=17
  +0.000681
- select max=5 rfds=[4] wfds=[] efds=[] to=1.989843
+ select max=5 rfds=[4] wfds=[] efds=[] to=1.983502
  select=0 rfds=[] wfds=[] efds=[]
  +2.-06971
  sendto fd=4 addr=172.18.45.6:53
@@ -468,10 +471,13 @@ default -,s
      31300100 00010000 00000000 00000500 01.
  sendto=17
  +0.000709
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.000001
  sendto fd=4 addr=172.18.45.6:53
      31320100 00010000 00000000 00000c00 01.
  sendto=17
- +0.000721
+ +0.000720
  sendto fd=4 addr=172.18.45.6:53
      31330100 00010000 00000000 00000d00 01.
  sendto=17
@@ -504,7 +510,7 @@ default -,s
      313c0100 00010000 00000000 00001100 01.
  sendto=17
  +0.000682
- select max=5 rfds=[4] wfds=[] efds=[] to=1.989780
+ select max=5 rfds=[4] wfds=[] efds=[] to=1.983562
  select=0 rfds=[] wfds=[] efds=[]
  +2.-06911
  sendto fd=4 addr=172.18.45.6:53
@@ -559,10 +565,13 @@ default -,s
      31300100 00010000 00000000 00000500 01.
  sendto=17
  +0.000689
+ select max=5 rfds=[4] wfds=[] efds=[] to=0.000000
+ select=0 rfds=[] wfds=[] efds=[]
+ +0.000001
  sendto fd=4 addr=172.18.45.6:53
      31320100 00010000 00000000 00000c00 01.
  sendto=17
- +0.000743
+ +0.000742
  sendto fd=4 addr=172.18.45.6:53
      31330100 00010000 00000000 00000d00 01.
  sendto=17
@@ -595,7 +604,7 @@ default -,s
      313c0100 00010000 00000000 00001100 01.
  sendto=17
  +0.000678
- select max=5 rfds=[4] wfds=[] efds=[] to=1.990318
+ select max=5 rfds=[4] wfds=[] efds=[] to=1.981795
  select=1 rfds=[4] wfds=[] efds=[]
  +0.010527
  recvfrom fd=4 buflen=512 *addrlen=16
@@ -870,7 +879,7 @@ default -,s
  +0.000584
  recvfrom fd=4 buflen=512 *addrlen=16
  recvfrom=EAGAIN
- +0.000123
+ +0.000124
  select max=5 rfds=[4] wfds=[] efds=[] to=0.361302
  select=1 rfds=[4] wfds=[] efds=[]
  +0.029558
index 106f777..592883b 100644 (file)
@@ -51,7 +51,7 @@
  *  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  *
  *
- *  $Id: adns.h,v 1.77 2000/03/20 03:24:25 ian Exp $
+ *  $Id: adns.h,v 1.78 2000/05/07 15:30:19 ian Exp $
  */
 
 #ifndef ADNS_H_INCLUDED
@@ -663,9 +663,10 @@ void adns_beforeselect(adns_state ads, int *maxfd, fd_set *readfds,
  * for adns_firsttimeout.  readfds, writefds, exceptfds and maxfd_io may
  * not be 0.
  *
- * If now is not 0 then this will never actually do any I/O, or
- * change the fds that adns is using or the timeouts it wants.  In any
- * case it won't block.
+ * If now is not 0 then this will never actually do any I/O, or change
+ * the fds that adns is using or the timeouts it wants.  In any case
+ * it won't block, and it will set the timeout to zero if a query
+ * finishes in _beforeselect.
  */
 
 void adns_afterselect(adns_state ads, int maxfd, const fd_set *readfds,
index b82b5de..9e7bdc2 100644 (file)
@@ -304,6 +304,7 @@ int adns__pollfds(adns_state ads, struct pollfd pollfds_buf[MAX_POLLFDS]) {
 
   switch (ads->tcpstate) {
   case server_disconnected:
+  case server_broken:
     return 1;
   case server_connecting:
     pollfds_buf[1].events= POLLOUT;
@@ -541,7 +542,7 @@ void adns_beforeselect(adns_state ads, int *maxfd_io, fd_set *readfds_io,
     /* The caller is planning to sleep. */
     adns__must_gettimeofday(ads,&now,&tv_nowbuf);
     if (!now) { inter_immed(tv_mod,tv_tobuf); goto xit; }
-    adns__timeouts(ads, 1, tv_mod,tv_tobuf, *now);
+    adns__timeouts(ads, 0, tv_mod,tv_tobuf, *now);
   }
 
   npollfds= adns__pollfds(ads,pollfds);