Index: contrib/bind/Version
===================================================================
RCS file: /home/ncvs/src/contrib/bind/Version,v
retrieving revision 1.1.1.3.2.7
diff -c -r1.1.1.3.2.7 Version
*** contrib/bind/Version	7 Jul 2002 08:19:01 -0000	1.1.1.3.2.7
--- contrib/bind/Version	26 Nov 2003 17:45:18 -0000
***************
*** 1 ****
! 8.3.3-REL
--- 1 ----
! 8.3.3-REL-p1
Index: contrib/bind/bin/named/ns_resp.c
===================================================================
RCS file: /home/ncvs/src/contrib/bind/bin/named/ns_resp.c,v
retrieving revision 1.1.1.2.2.7.2.1
diff -c -r1.1.1.2.2.7.2.1 ns_resp.c
*** contrib/bind/bin/named/ns_resp.c	14 Nov 2002 02:05:56 -0000	1.1.1.2.2.7.2.1
--- contrib/bind/bin/named/ns_resp.c	26 Nov 2003 17:44:51 -0000
***************
*** 272,278 ****
  	u_int qtype, qclass;
  	int restart;	/* flag for processing cname response */
  	int validanswer, dbflags;
! 	int cname, lastwascname, externalcname;
  	int count, founddata, foundname;
  	int buflen;
  	int newmsglen;
--- 272,278 ----
  	u_int qtype, qclass;
  	int restart;	/* flag for processing cname response */
  	int validanswer, dbflags;
! 	int cname, lastwascname, externalcname, cachenegative;
  	int count, founddata, foundname;
  	int buflen;
  	int newmsglen;
***************
*** 912,917 ****
--- 912,918 ----
  	cname = 0;
  	lastwascname = 0;
  	externalcname = 0;
+ 	cachenegative = 1;
  	strcpy(aname, qname);
  
  	if (count) {
***************
*** 981,986 ****
--- 982,988 ----
  						 name);
  				db_detach(&dp);
  				validanswer = 0;
+ 				cachenegative = 0;
  				continue;
  			}
  			if (type == T_CNAME &&
***************
*** 1011,1016 ****
--- 1013,1019 ----
  				 "last was cname, ignoring auth. and add.");
  				db_detach(&dp);
  				validanswer = 0;
+ 				cachenegative = 0;
  				break;
  			}
  			if (i < arfirst) {
***************
*** 1026,1031 ****
--- 1029,1035 ----
  							sin_ntoa(from));
  						db_detach(&dp);
  						validanswer = 0;
+ 						cachenegative = 0;
  						continue;
  					} else if (!ns_samedomain(name,
  							       qp->q_domain)) {
***************
*** 1039,1044 ****
--- 1043,1049 ----
  							 sin_ntoa(from));
  						db_detach(&dp);
  						validanswer = 0;
+ 						cachenegative = 0;
  						continue;
  					}
  					if (type == T_NS) {
***************
*** 1231,1238 ****
  	     )
  	    )
  	{
! 		cache_n_resp(msg, msglen, from, qp->q_name,
! 			     qp->q_class, qp->q_type);
  
  		if (!qp->q_cmsglen && validanswer) {
  			ns_debug(ns_log_default, 3,
--- 1236,1244 ----
  	     )
  	    )
  	{
! 		if (cachenegative)
! 			cache_n_resp(msg, msglen, from, qp->q_name,
! 				     qp->q_class, qp->q_type);
  
  		if (!qp->q_cmsglen && validanswer) {
  			ns_debug(ns_log_default, 3,
