Browse Source

Plan 9 from Bell Labs 2007-07-06

David du Colombier 17 years ago
parent
commit
8924f65054

+ 18 - 18
dist/replica/_plan9.db

@@ -538,7 +538,7 @@
 386/lib - 20000000775 sys sys 1016826328 0
 386/lib/ape - 20000000775 sys sys 1070519112 0
 386/lib/ape/lib9.a - 664 sys sys 1135531447 6906
-386/lib/ape/libap.a - 664 sys sys 1173754584 819938
+386/lib/ape/libap.a - 664 sys sys 1183661796 792640
 386/lib/ape/libbsd.a - 664 sys sys 1146156978 183900
 386/lib/ape/libdraw.a - 664 sys sys 1179372118 622218
 386/lib/ape/libfmt.a - 664 sys sys 1146156980 156706
@@ -7570,7 +7570,7 @@ sys/man/2/memlayer - 664 sys sys 1040484074 6963
 sys/man/2/memory - 664 sys sys 1169741201 2145
 sys/man/2/mktemp - 664 sys sys 950892862 669
 sys/man/2/mouse - 664 sys sys 1140900146 4952
-sys/man/2/mp - 664 sys sys 1140106703 10762
+sys/man/2/mp - 664 sys sys 1183661200 10770
 sys/man/2/muldiv - 664 sys sys 984709633 639
 sys/man/2/nan - 664 sys sys 975084242 937
 sys/man/2/ndb - 664 sys sys 1176932123 9743
@@ -7600,7 +7600,7 @@ sys/man/2/readv - 664 sys sys 1017423721 1454
 sys/man/2/regexp - 664 sys sys 988225293 3548
 sys/man/2/remove - 664 sys sys 958249504 518
 sys/man/2/rendezvous - 664 sys sys 1171690316 1336
-sys/man/2/rsa - 664 sys sys 1165622556 4260
+sys/man/2/rsa - 664 sys sys 1183656441 4336
 sys/man/2/rune - 664 sys sys 1143079849 3086
 sys/man/2/runestrcat - 664 sys sys 969499889 1086
 sys/man/2/scribble - 664 sys sys 985638584 3847
@@ -8572,16 +8572,16 @@ sys/src/ape/lib/ap/arm/getfcr.s - 664 sys sys 1014921992 164
 sys/src/ape/lib/ap/arm/lock.c - 664 sys sys 1014921992 255
 sys/src/ape/lib/ap/arm/main9.s - 664 sys sys 1014921991 262
 sys/src/ape/lib/ap/arm/main9p.s - 664 sys sys 1014921991 544
-sys/src/ape/lib/ap/arm/memmove.s - 664 sys sys 1014921992 4391
-sys/src/ape/lib/ap/arm/memset.s - 664 sys sys 1172956011 1057
+sys/src/ape/lib/ap/arm/memmove.s - 664 sys sys 1183607716 4198
+sys/src/ape/lib/ap/arm/memset.s - 664 sys sys 1183607716 1002
 sys/src/ape/lib/ap/arm/mkfile - 664 sys sys 1172955903 308
 sys/src/ape/lib/ap/arm/notetramp.c - 664 sys sys 1014921992 1342
 sys/src/ape/lib/ap/arm/setjmp.s - 664 sys sys 1172955904 587
 sys/src/ape/lib/ap/arm/strchr.s - 664 sys sys 1172955904 841
-sys/src/ape/lib/ap/arm/strcmp.s - 664 sys sys 1172956230 1010
+sys/src/ape/lib/ap/arm/strcmp.s - 664 sys sys 1183607716 1010
 sys/src/ape/lib/ap/arm/strcpy.s - 664 sys sys 1172955904 885
 sys/src/ape/lib/ap/arm/tas.s - 664 sys sys 1014921992 61
-sys/src/ape/lib/ap/arm/vlop.s - 664 sys sys 1172955903 262
+sys/src/ape/lib/ap/arm/vlop.s - 664 sys sys 1183607717 262
 sys/src/ape/lib/ap/arm/vlrt.c - 664 sys sys 1173026824 8947
 sys/src/ape/lib/ap/extraobjs - 775 sys sys 1014921988 1356
 sys/src/ape/lib/ap/gen - 20000000775 sys sys 1048644320 0
@@ -8678,7 +8678,7 @@ sys/src/ape/lib/ap/mips/strcpy.s - 664 sys sys 1014921989 1202
 sys/src/ape/lib/ap/mips/tas.s - 664 sys sys 1014921989 494
 sys/src/ape/lib/ap/mips/vlop.s - 664 sys sys 1014921989 239
 sys/src/ape/lib/ap/mips/vlrt.c - 664 sys sys 1014921989 9001
-sys/src/ape/lib/ap/mkfile - 664 sys sys 1014921988 244
+sys/src/ape/lib/ap/mkfile - 664 sys sys 1183662148 307
 sys/src/ape/lib/ap/plan9 - 20000000775 sys sys 1070660696 0
 sys/src/ape/lib/ap/plan9/9errstr.c - 664 sys sys 1070330880 31
 sys/src/ape/lib/ap/plan9/9iounit.c - 664 sys sys 1070660696 981
@@ -12823,11 +12823,11 @@ sys/src/cmd/ndb/convM2DNS.c - 664 sys sys 1183184540 11853
 sys/src/cmd/ndb/cs.c - 664 sys sys 1182275681 33213
 sys/src/cmd/ndb/csquery.c - 664 sys sys 1174626119 1073
 sys/src/cmd/ndb/dblookup.c - 664 sys sys 1183406703 22445
-sys/src/cmd/ndb/dn.c - 664 sys sys 1183448045 35283
+sys/src/cmd/ndb/dn.c - 664 sys sys 1183614213 35390
 sys/src/cmd/ndb/dnarea.c - 664 sys sys 1175664421 2519
 sys/src/cmd/ndb/dnnotify.c - 664 sys sys 1178508075 3140
-sys/src/cmd/ndb/dnresolve.c - 664 sys sys 1183185006 32437
-sys/src/cmd/ndb/dns.c - 664 sys sys 1183184469 16237
+sys/src/cmd/ndb/dnresolve.c - 664 sys sys 1183614243 32682
+sys/src/cmd/ndb/dns.c - 664 sys sys 1183614217 16261
 sys/src/cmd/ndb/dns.h - 664 sys sys 1183448016 11240
 sys/src/cmd/ndb/dnsdebug.c - 664 sys sys 1183184428 8754
 sys/src/cmd/ndb/dnserver.c - 664 sys sys 1183447961 4402
@@ -15011,18 +15011,18 @@ sys/src/libc/arm/doprint.xc - 664 sys sys 944961713 8554
 sys/src/libc/arm/getcallerpc.s - 664 sys sys 1132449120 48
 sys/src/libc/arm/getfcr.s - 664 sys sys 1014927272 104
 sys/src/libc/arm/main9.s - 664 sys sys 1067719007 489
-sys/src/libc/arm/main9p.s - 664 sys sys 1067719007 745
-sys/src/libc/arm/memmove.s - 664 sys sys 944961714 4391
-sys/src/libc/arm/memset.s - 664 sys sys 984709513 1057
-sys/src/libc/arm/mkfile - 664 sys sys 1132449109 402
+sys/src/libc/arm/main9p.s - 664 sys sys 1183607546 742
+sys/src/libc/arm/memmove.s - 664 sys sys 1183607546 4198
+sys/src/libc/arm/memset.s - 664 sys sys 1183607547 1002
+sys/src/libc/arm/mkfile - 664 sys sys 1183607636 401
 sys/src/libc/arm/notejmp.c - 664 sys sys 984709513 223
 sys/src/libc/arm/setjmp.s - 664 sys sys 984709513 367
 sys/src/libc/arm/strchr.s - 664 sys sys 984709513 841
-sys/src/libc/arm/strcmp.s - 664 sys sys 944961714 1010
+sys/src/libc/arm/strcmp.s - 664 sys sys 1183607547 1010
 sys/src/libc/arm/strcpy.s - 664 sys sys 984709513 885
 sys/src/libc/arm/tas.s - 664 sys sys 984709514 62
-sys/src/libc/arm/vlop.s - 664 sys sys 984709514 262
-sys/src/libc/arm/vlrt.c - 664 sys sys 1067719009 8950
+sys/src/libc/arm/vlop.s - 664 sys sys 1183607547 262
+sys/src/libc/arm/vlrt.c - 664 sys sys 1183607546 8947
 sys/src/libc/fmt - 20000000775 sys sys 1063859138 0
 sys/src/libc/fmt/dofmt.c - 664 sys sys 1143695628 8629
 sys/src/libc/fmt/dorfmt.c - 664 sys sys 1143695628 747

+ 18 - 18
dist/replica/plan9.db

@@ -538,7 +538,7 @@
 386/lib - 20000000775 sys sys 1016826328 0
 386/lib/ape - 20000000775 sys sys 1070519112 0
 386/lib/ape/lib9.a - 664 sys sys 1135531447 6906
-386/lib/ape/libap.a - 664 sys sys 1173754584 819938
+386/lib/ape/libap.a - 664 sys sys 1183661796 792640
 386/lib/ape/libbsd.a - 664 sys sys 1146156978 183900
 386/lib/ape/libdraw.a - 664 sys sys 1179372118 622218
 386/lib/ape/libfmt.a - 664 sys sys 1146156980 156706
@@ -7570,7 +7570,7 @@ sys/man/2/memlayer - 664 sys sys 1040484074 6963
 sys/man/2/memory - 664 sys sys 1169741201 2145
 sys/man/2/mktemp - 664 sys sys 950892862 669
 sys/man/2/mouse - 664 sys sys 1140900146 4952
-sys/man/2/mp - 664 sys sys 1140106703 10762
+sys/man/2/mp - 664 sys sys 1183661200 10770
 sys/man/2/muldiv - 664 sys sys 984709633 639
 sys/man/2/nan - 664 sys sys 975084242 937
 sys/man/2/ndb - 664 sys sys 1176932123 9743
@@ -7600,7 +7600,7 @@ sys/man/2/readv - 664 sys sys 1017423721 1454
 sys/man/2/regexp - 664 sys sys 988225293 3548
 sys/man/2/remove - 664 sys sys 958249504 518
 sys/man/2/rendezvous - 664 sys sys 1171690316 1336
-sys/man/2/rsa - 664 sys sys 1165622556 4260
+sys/man/2/rsa - 664 sys sys 1183656441 4336
 sys/man/2/rune - 664 sys sys 1143079849 3086
 sys/man/2/runestrcat - 664 sys sys 969499889 1086
 sys/man/2/scribble - 664 sys sys 985638584 3847
@@ -8572,16 +8572,16 @@ sys/src/ape/lib/ap/arm/getfcr.s - 664 sys sys 1014921992 164
 sys/src/ape/lib/ap/arm/lock.c - 664 sys sys 1014921992 255
 sys/src/ape/lib/ap/arm/main9.s - 664 sys sys 1014921991 262
 sys/src/ape/lib/ap/arm/main9p.s - 664 sys sys 1014921991 544
-sys/src/ape/lib/ap/arm/memmove.s - 664 sys sys 1014921992 4391
-sys/src/ape/lib/ap/arm/memset.s - 664 sys sys 1172956011 1057
+sys/src/ape/lib/ap/arm/memmove.s - 664 sys sys 1183607716 4198
+sys/src/ape/lib/ap/arm/memset.s - 664 sys sys 1183607716 1002
 sys/src/ape/lib/ap/arm/mkfile - 664 sys sys 1172955903 308
 sys/src/ape/lib/ap/arm/notetramp.c - 664 sys sys 1014921992 1342
 sys/src/ape/lib/ap/arm/setjmp.s - 664 sys sys 1172955904 587
 sys/src/ape/lib/ap/arm/strchr.s - 664 sys sys 1172955904 841
-sys/src/ape/lib/ap/arm/strcmp.s - 664 sys sys 1172956230 1010
+sys/src/ape/lib/ap/arm/strcmp.s - 664 sys sys 1183607716 1010
 sys/src/ape/lib/ap/arm/strcpy.s - 664 sys sys 1172955904 885
 sys/src/ape/lib/ap/arm/tas.s - 664 sys sys 1014921992 61
-sys/src/ape/lib/ap/arm/vlop.s - 664 sys sys 1172955903 262
+sys/src/ape/lib/ap/arm/vlop.s - 664 sys sys 1183607717 262
 sys/src/ape/lib/ap/arm/vlrt.c - 664 sys sys 1173026824 8947
 sys/src/ape/lib/ap/extraobjs - 775 sys sys 1014921988 1356
 sys/src/ape/lib/ap/gen - 20000000775 sys sys 1048644320 0
@@ -8678,7 +8678,7 @@ sys/src/ape/lib/ap/mips/strcpy.s - 664 sys sys 1014921989 1202
 sys/src/ape/lib/ap/mips/tas.s - 664 sys sys 1014921989 494
 sys/src/ape/lib/ap/mips/vlop.s - 664 sys sys 1014921989 239
 sys/src/ape/lib/ap/mips/vlrt.c - 664 sys sys 1014921989 9001
-sys/src/ape/lib/ap/mkfile - 664 sys sys 1014921988 244
+sys/src/ape/lib/ap/mkfile - 664 sys sys 1183662148 307
 sys/src/ape/lib/ap/plan9 - 20000000775 sys sys 1070660696 0
 sys/src/ape/lib/ap/plan9/9errstr.c - 664 sys sys 1070330880 31
 sys/src/ape/lib/ap/plan9/9iounit.c - 664 sys sys 1070660696 981
@@ -12823,11 +12823,11 @@ sys/src/cmd/ndb/convM2DNS.c - 664 sys sys 1183184540 11853
 sys/src/cmd/ndb/cs.c - 664 sys sys 1182275681 33213
 sys/src/cmd/ndb/csquery.c - 664 sys sys 1174626119 1073
 sys/src/cmd/ndb/dblookup.c - 664 sys sys 1183406703 22445
-sys/src/cmd/ndb/dn.c - 664 sys sys 1183448045 35283
+sys/src/cmd/ndb/dn.c - 664 sys sys 1183614213 35390
 sys/src/cmd/ndb/dnarea.c - 664 sys sys 1175664421 2519
 sys/src/cmd/ndb/dnnotify.c - 664 sys sys 1178508075 3140
-sys/src/cmd/ndb/dnresolve.c - 664 sys sys 1183185006 32437
-sys/src/cmd/ndb/dns.c - 664 sys sys 1183184469 16237
+sys/src/cmd/ndb/dnresolve.c - 664 sys sys 1183614243 32682
+sys/src/cmd/ndb/dns.c - 664 sys sys 1183614217 16261
 sys/src/cmd/ndb/dns.h - 664 sys sys 1183448016 11240
 sys/src/cmd/ndb/dnsdebug.c - 664 sys sys 1183184428 8754
 sys/src/cmd/ndb/dnserver.c - 664 sys sys 1183447961 4402
@@ -15011,18 +15011,18 @@ sys/src/libc/arm/doprint.xc - 664 sys sys 944961713 8554
 sys/src/libc/arm/getcallerpc.s - 664 sys sys 1132449120 48
 sys/src/libc/arm/getfcr.s - 664 sys sys 1014927272 104
 sys/src/libc/arm/main9.s - 664 sys sys 1067719007 489
-sys/src/libc/arm/main9p.s - 664 sys sys 1067719007 745
-sys/src/libc/arm/memmove.s - 664 sys sys 944961714 4391
-sys/src/libc/arm/memset.s - 664 sys sys 984709513 1057
-sys/src/libc/arm/mkfile - 664 sys sys 1132449109 402
+sys/src/libc/arm/main9p.s - 664 sys sys 1183607546 742
+sys/src/libc/arm/memmove.s - 664 sys sys 1183607546 4198
+sys/src/libc/arm/memset.s - 664 sys sys 1183607547 1002
+sys/src/libc/arm/mkfile - 664 sys sys 1183607636 401
 sys/src/libc/arm/notejmp.c - 664 sys sys 984709513 223
 sys/src/libc/arm/setjmp.s - 664 sys sys 984709513 367
 sys/src/libc/arm/strchr.s - 664 sys sys 984709513 841
-sys/src/libc/arm/strcmp.s - 664 sys sys 944961714 1010
+sys/src/libc/arm/strcmp.s - 664 sys sys 1183607547 1010
 sys/src/libc/arm/strcpy.s - 664 sys sys 984709513 885
 sys/src/libc/arm/tas.s - 664 sys sys 984709514 62
-sys/src/libc/arm/vlop.s - 664 sys sys 984709514 262
-sys/src/libc/arm/vlrt.c - 664 sys sys 1067719009 8950
+sys/src/libc/arm/vlop.s - 664 sys sys 1183607547 262
+sys/src/libc/arm/vlrt.c - 664 sys sys 1183607546 8947
 sys/src/libc/fmt - 20000000775 sys sys 1063859138 0
 sys/src/libc/fmt/dofmt.c - 664 sys sys 1143695628 8629
 sys/src/libc/fmt/dorfmt.c - 664 sys sys 1143695628 747

+ 19 - 0
dist/replica/plan9.log

@@ -49442,3 +49442,22 @@
 1183602639 0 c sys/src/cmd/5i/5i.c - 664 sys sys 1183602564 4529
 1183602639 1 c sys/src/cmd/5i/syscall.c - 664 sys sys 1183602564 13461
 1183604445 0 d sys/src/cmd/5c/bits.c - 664 sys sys 944960723 0
+1183608041 0 c sys/src/ape/lib/ap/arm/memmove.s - 664 sys sys 1183607716 4198
+1183608041 1 c sys/src/ape/lib/ap/arm/memset.s - 664 sys sys 1183607716 1002
+1183608041 2 c sys/src/ape/lib/ap/arm/strcmp.s - 664 sys sys 1183607716 1010
+1183608041 3 c sys/src/ape/lib/ap/arm/vlop.s - 664 sys sys 1183607717 262
+1183608041 4 c sys/src/ape/lib/ap/mkfile - 664 sys sys 1183608073 241
+1183608041 5 c sys/src/libc/arm/main9p.s - 664 sys sys 1183607546 742
+1183608041 6 c sys/src/libc/arm/memmove.s - 664 sys sys 1183607546 4198
+1183608041 7 c sys/src/libc/arm/memset.s - 664 sys sys 1183607547 1002
+1183608041 8 c sys/src/libc/arm/mkfile - 664 sys sys 1183607636 401
+1183608041 9 c sys/src/libc/arm/strcmp.s - 664 sys sys 1183607547 1010
+1183608041 10 c sys/src/libc/arm/vlop.s - 664 sys sys 1183607547 262
+1183608041 11 c sys/src/libc/arm/vlrt.c - 664 sys sys 1183607546 8947
+1183615262 0 c sys/src/cmd/ndb/dn.c - 664 sys sys 1183614213 35390
+1183615262 1 c sys/src/cmd/ndb/dnresolve.c - 664 sys sys 1183614243 32682
+1183615262 2 c sys/src/cmd/ndb/dns.c - 664 sys sys 1183614217 16261
+1183656658 0 c sys/man/2/rsa - 664 sys sys 1183656441 4336
+1183662057 0 c 386/lib/ape/libap.a - 664 sys sys 1183661796 792640
+1183662057 1 c sys/man/2/mp - 664 sys sys 1183661200 10770
+1183663859 0 c sys/src/ape/lib/ap/mkfile - 664 sys sys 1183662148 307

+ 10 - 9
sys/man/2/mp

@@ -1,6 +1,5 @@
 .TH MP 2
 .SH NAME
-
 mpsetminbits, mpnew, mpfree, mpbits, mpnorm, mpcopy, mpassign, mprand, strtomp, mpfmt,mptoa, betomp, mptobe, letomp, mptole, mptoui, uitomp, mptoi, itomp, uvtomp, mptouv, vtomp, mptov, mpdigdiv, mpadd, mpsub, mpleft, mpright, mpmul, mpexp, mpmod, mpdiv, mpcmp, mpextendedgcd, mpinvert, mpsignif, mplowbits0, mpvecdigmuladd, mpvecdigmulsub, mpvecadd, mpvecsub, mpveccmp, mpvecmul, mpmagcmp, mpmagadd, mpmagsub, crtpre, crtin, crtout, crtprefree, crtresfree \- extended precision arithmetic
 .SH SYNOPSIS
 .B #include <u.h>
@@ -165,14 +164,13 @@ void	crtresfree(CRTres *res)
 .B
 mpint	*mpzero, *mpone, *mptwo
 .SH DESCRIPTION
-.PP
 These routines perform extended precision integer arithmetic.
 The basic type is
 .BR mpint ,
 which points to an array of
 .BR mpdigit s,
 stored in little-endian order:
-.sp
+.IP
 .EX
 typedef struct mpint mpint;
 struct mpint
@@ -246,7 +244,9 @@ bits.  If
 .B b->top
 doesn't cover
 .I n
-bits it increases it to do so.
+bits,
+.I mpbits
+increases it to do so.
 Unless you are writing new basic operations, you
 can restrict yourself to
 .B mpnew(0)
@@ -553,12 +553,13 @@ can be much faster.
 computes the residues of
 .I x
 and returns them in a newly allocated structure:
+.IP
 .EX
-	typedef struct CRTres	CRTres;	
-	{
-		int	n;	// number of residues
-		mpint	*r[n];	// residues
-	};
+typedef struct CRTres	CRTres;	
+{
+	int	n;	/* number of residues */
+	mpint	*r[n];	/* residues */
+};
 .EE
 .PP
 .I Crtout

+ 34 - 25
sys/man/2/rsa

@@ -68,35 +68,37 @@ uchar*	X509req(RSApriv *priv, char *subj, int *certlen);
 .B
 char* X509verify(uchar *cert, int ncert, RSApub *pk)
 .SH DESCRIPTION
-.PP
 RSA is a public key encryption algorithm.  The owner of a key publishes
 the public part of the key:
+.IP
 .EX
-	struct RSApub
-	{
-		mpint	*n;	// modulus
-		mpint	*ek;	// exp (encryption key)
-	};
+struct RSApub
+{
+	mpint	*n;	/* modulus */
+	mpint	*ek;	/* exp (encryption key) */
+};
 .EE
+.LP
 This part can be used for encrypting data (with
 .IR rsaencrypt )
 to be sent to the owner.
 The owner decrypts (with
 .IR rsadecrypt )
 using his private key:
+.IP
 .EX
-	struct RSApriv
-	{
-		RSApub	pub;
-		mpint	*dk;	// exp (decryption key)
-	
-		// precomputed crt values
-		mpint	*p;
-		mpint	*q;
-		mpint	*kp;	// k mod p-1
-		mpint	*kq;	// k mod q-1
-		mpint	*c2;	// for converting residues to number
-	};
+struct RSApriv
+{
+	RSApub	pub;
+	mpint	*dk;	/* exp (decryption key) */
+
+	/* precomputed crt values */
+	mpint	*p;
+	mpint	*q;
+	mpint	*kp;	/* k mod p-1 */
+	mpint	*kq;	/* k mod q-1 */
+	mpint	*c2;	/* for converting residues to number */
+};
 .EE
 .PP
 Keys are generated using
@@ -158,9 +160,11 @@ and the starting and ending validity dates,
 Length of the allocated binary certificate is stored in
 .IR certlen .
 The subject line is conventionally of the form
+.IP
 .EX
-   "C=US ST=NJ L=07922 O=Lucent OU='Bell Labs' CN=Eric"
+C=US ST=NJ L=07922 O=Lucent OU='Bell Labs' CN=Eric
 .EE
+.LP
 using the quoting conventions of
 .I tokenize
 in
@@ -180,18 +184,23 @@ takes a zero terminated string,
 and decodes the PEM (privacy-enhanced mail) formatted section for
 .I type
 within it.
-If successful, it returns the decoded section and sets
+If successful, it returns
+.IR malloc ed
+storage containing the decoded section,
+which the caller must free,
+and sets
 .BI * len
-to its decoded length.  If not nil,
-.I new_s
-is set to the first character beyond the
-.I type
-section.
+to its decoded length.
 Otherwise
 .B nil
 is returned and
 .BI * len
 is undefined.
+If not nil,
+.I new_s
+is set to the first character beyond the
+.I type
+section.
 .SH SOURCE
 .B /sys/src/libsec
 .SH SEE ALSO

+ 9 - 2
sys/src/ape/lib/ap/mkfile

@@ -5,8 +5,8 @@ DIRS=gen math plan9 posix stdio syscall
 
 default:V:	all
 
-install clean nuke all:V:
-	for(i in $DIRS $objtype)@{
+install all:V:
+	for(i in $DIRS)@{
 		echo $i
 		cd $i
 		mk $MKFLAGS $target
@@ -15,3 +15,10 @@ install clean nuke all:V:
 installall:V:
 	for(objtype in $CPUS) mk $MKFLAGS install
 
+
+clean nuke:V:
+	for(i in $DIRS $CPUS)@{
+		echo $i
+		cd $i
+		mk $MKFLAGS $target
+	}

+ 6 - 0
sys/src/cmd/ndb/dn.c

@@ -5,6 +5,10 @@
 #include <ctype.h>
 #include "dns.h"
 
+enum {
+	Minage = 10*60,
+};
+
 /*
  *  Hash table for domain names.  The hash is based only on the
  *  first element of the domain name.
@@ -412,6 +416,8 @@ dnageall(int doit)
 		dnslog("more names (%lud) than target (%lud)", dnvars.names,
 			target);
 		dnvars.oldest /= 2;
+		if (dnvars.oldest < Minage)
+			dnvars.oldest = Minage;		/* don't be silly */
 	}
 	nextage = now + maxage;
 

+ 17 - 10
sys/src/cmd/ndb/dnresolve.c

@@ -268,10 +268,7 @@ notestats(vlong start, int tmout, int type)
 	} else {
 		long wait10ths = NS2MS(nsec() - start) / 100;
 
-		if (wait10ths < 0)
-			dnslog("notestats: negative elapsed time of %.1f s.",
-				(double)wait10ths/10);
-		else if (wait10ths <= 0)
+		if (wait10ths <= 0)
 			stats.under10ths[0]++;
 		else if (wait10ths >= nelem(stats.under10ths))
 			stats.under10ths[nelem(stats.under10ths) - 1]++;
@@ -1166,7 +1163,6 @@ netquery1(Query *qp, int depth, uchar *ibuf, uchar *obuf, int waitsecs, int inns
 	ulong endtime;
 	char buf[12];
 	uchar srcip[IPaddrlen];
-	DNSmsg m;
 	Dest *p, *np, *dest;
 //	Dest dest[Maxdest];
 
@@ -1198,21 +1194,26 @@ netquery1(Query *qp, int depth, uchar *ibuf, uchar *obuf, int waitsecs, int inns
 			endtime = qp->req->aborttime;
 
 		for(replywaits = 0; replywaits < ndest; replywaits++){
+			DNSmsg m;
+
 			procsetname("reading %sside reply from %I for %s %s",
 				(inns? "in": "out"), obuf, qp->dp->name,
 				rrname(qp->type, buf, sizeof buf));
 
-			/* read udp answer */
+			/* read udp answer into m */
 			if (readreply(qp, Udp, req, ibuf, &m, endtime) >= 0)
 				memmove(srcip, ibuf, IPaddrlen);
-			else if (!(m.flags & Ftrunc))
+			else if (!(m.flags & Ftrunc)) {
+				freeanswers(&m);
 				break;		/* timed out on this dest */
-			else {
+			} else {
 				/* whoops, it was truncated! ask again via tcp */
 				rv = tcpquery(qp, &m, depth, ibuf, obuf, len,
-					waitsecs, inns, req);
-				if (rv < 0)
+					waitsecs, inns, req);  /* answer in m */
+				if (rv < 0) {
+					freeanswers(&m);
 					break;		/* failed via tcp too */
+				}
 				memmove(srcip, qp->tcpip, IPaddrlen);
 			}
 
@@ -1227,6 +1228,7 @@ netquery1(Query *qp, int depth, uchar *ibuf, uchar *obuf, int waitsecs, int inns
 				if(np->s == p->s)
 					p->nx = Maxtrans;
 
+			/* free or incorporate RRs in m */
 			rv = procansw(qp, &m, srcip, depth, p);
 			if (rv > 0)
 				return rv;
@@ -1379,6 +1381,10 @@ netquery(Query *qp, int depth)
 		procsetname("query lock wait for %s", qp->dp->name);
 		/*
 		 * don't make concurrent queries for this name.
+		 * dozens of processes blocking here probably indicates
+		 * an error in our dns data that causes us to not
+		 * recognise a zone (area) as one of our own, thus
+		 * causing us to query other nameservers.
 		 */
 		qlock(&qp->dp->querylck);
 	}
@@ -1441,6 +1447,7 @@ seerootns(void)
 	queryinit(&query, dnlookup(root, Cin, 1), Tns, &req);
 	query.nsrp = dblookup(root, Cin, Tns, 0, 0);
 	rv = netquery(&query, 0);
+	rrfreelist(query.nsrp);	
 	querydestroy(&query);
 	return rv;
 }

+ 2 - 1
sys/src/cmd/ndb/dns.c

@@ -15,7 +15,8 @@ enum
 	Maxrrr=			32,		/* was 16 */
 	Maxfdata=		8192,
 
-	Defmaxage=		2*60*60,	/* tunable; was 1 then 3 hrs */
+	/* default seconds between passes to age domain names */
+	Defmaxage=		30*60,
 
 	Qdir=			0,
 	Qdns=			1,