Plan 9 from Bell Labs’s /usr/web/sources/contrib/uriel/changes/2007/0417/5

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


/sys/src/cmd/upas/smtp/mxdial.c
% cat >/sys/lib/dist/changes/1176838212.2.txt << EOF
• Style cleanup
• Alarm if we can't resolve within 60s.
EOF
 [geoff] --rw-rw-r-- M 64 glenda sys 6567 Apr 17 15:19 sys/src/cmd/upas/smtp/mxdial.c
	/n/sourcesdump/2007/0417/plan9/sys/src/cmd/upas/smtp/mxdial.c:79,85 - 
	/n/sourcesdump/2007/0418/plan9/sys/src/cmd/upas/smtp/mxdial.c:79,85
	  	}
	  
	  	/* refuse to honor loopback addresses given by dns */
	- 	for(i = 0; i < nmx; i++){
	+ 	for(i = 0; i < nmx; i++)
	  		if(strcmp(mx[i].ip, "127.0.0.1") == 0){
	  			if(debug)
	  				fprint(2, "mxlookup returns loopback\n");
	/n/sourcesdump/2007/0417/plan9/sys/src/cmd/upas/smtp/mxdial.c:86,92 - 
	/n/sourcesdump/2007/0418/plan9/sys/src/cmd/upas/smtp/mxdial.c:86,91
	  			werrstr("illegal: domain lists 127.0.0.1 as mail server");
	  			return -1;
	  		}
	- 	}
	  
	  	/* sort by preference */
	  	if(nmx > 1)
	/n/sourcesdump/2007/0417/plan9/sys/src/cmd/upas/smtp/mxdial.c:123,131 - 
	/n/sourcesdump/2007/0418/plan9/sys/src/cmd/upas/smtp/mxdial.c:122,130
	  	/* just in case we find no domain name */
	  	strcpy(domain, ds->host);
	  
	- 	if(ds->netdir){
	+ 	if(ds->netdir)
	  		n = mxlookup1(ds, domain);
	- 	} else {
	+ 	else {
	  		ds->netdir = "/net";
	  		n = mxlookup1(ds, domain);
	  		if(n == 0) {
	/n/sourcesdump/2007/0417/plan9/sys/src/cmd/upas/smtp/mxdial.c:140,149 - 
	/n/sourcesdump/2007/0418/plan9/sys/src/cmd/upas/smtp/mxdial.c:139,148
	  static int
	  mxlookup1(DS *ds, char *domain)
	  {
	- 	char buf[1024];
	- 	char dnsname[Maxstring];
	- 	char *fields[4];
	  	int i, n, fd, nmx;
	+ 	long oalarm;
	+ 	char buf[1024], dnsname[Maxstring];
	+ 	char *fields[4];
	  
	  	snprint(dnsname, sizeof dnsname, "%s/dns", ds->netdir);
	  
	/n/sourcesdump/2007/0417/plan9/sys/src/cmd/upas/smtp/mxdial.c:152,161 - 
	/n/sourcesdump/2007/0418/plan9/sys/src/cmd/upas/smtp/mxdial.c:151,167
	  		return 0;
	  
	  	nmx = 0;
	- 	snprint(buf, sizeof(buf), "%s mx", ds->host);
	+ 	snprint(buf, sizeof buf, "%s mx", ds->host);
	  	if(debug)
	  		fprint(2, "sending %s '%s'\n", dnsname, buf);
	+ 	/*
	+ 	 * don't hang indefinitely in the write to /net/dns.
	+ 	 */
	+ 	atnotify(timeout, 1);
	+ 	oalarm = alarm(60*1000);
	  	n = write(fd, buf, strlen(buf));
	+ 	alarm(oalarm);
	+ 	atnotify(timeout, 0);
	  	if(n < 0){
	  		rerrstr(buf, sizeof buf);
	  		if(debug)
	/n/sourcesdump/2007/0417/plan9/sys/src/cmd/upas/smtp/mxdial.c:170,176 - 
	/n/sourcesdump/2007/0418/plan9/sys/src/cmd/upas/smtp/mxdial.c:176,182
	  		 *  get any mx entries
	  		 */
	  		seek(fd, 0, 0);
	- 		while(nmx < Nmx && (n = read(fd, buf, sizeof(buf)-1)) > 0){
	+ 		while(nmx < Nmx && (n = read(fd, buf, sizeof buf-1)) > 0){
	  			buf[n] = 0;
	  			if(debug)
	  				fprint(2, "dns mx: %s\n", buf);
	/n/sourcesdump/2007/0417/plan9/sys/src/cmd/upas/smtp/mxdial.c:227,233 - 
	/n/sourcesdump/2007/0418/plan9/sys/src/cmd/upas/smtp/mxdial.c:233,239
	  		mx[i] = mx[nmx];
	  		i--;
	  	}
	- 	return nmx;		
	+ 	return nmx;
	  }
	  
	  static int
	/n/sourcesdump/2007/0417/plan9/sys/src/cmd/upas/smtp/mxdial.c:291,297 - 
	/n/sourcesdump/2007/0418/plan9/sys/src/cmd/upas/smtp/mxdial.c:297,303
	  		return;
	  	}
	  
	- 	snprint(buf, sizeof(buf), "!ipinfo %s", ds->host+1);	// +1 to skip $
	+ 	snprint(buf, sizeof buf, "!ipinfo %s", ds->host+1);	// +1 to skip $
	  	if(write(fd, buf, strlen(buf)) <= 0){
	  		if(debug)
	  			fprint(2, "write %s: %r\n", cs);


Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].