git: 9front

Download patch

ref: 5360722b60e7159b9fe182df858bafe2f9bc5b6b
parent: f98dab537cb35e8646463d376d9a53629ca2673d
author: cinap_lenrek <cinap_lenrek@rei2.9hal>
date: Sun Mar 11 13:36:41 EDT 2012

tftpfs: let kernel choose local udp port

--- a/sys/src/cmd/ip/tftpfs.c
+++ b/sys/src/cmd/ip/tftpfs.c
@@ -123,13 +123,6 @@
 }
 
 static int
-newport(void)
-{
-	static int port;
-	return 5000+(port++)%64;
-}
-
-static int
 filereq(uchar *buf, char *path)
 {
 	uchar *p;
@@ -155,7 +148,7 @@
 download(void *aux)
 {
 	int fd, cfd, last, block, n, ndata;
-	char *err, addr[40], adir[40];
+	char *err, adir[40];
 	uchar *data;
 	Channel *c;
 	Tfile *f;
@@ -180,12 +173,7 @@
 
 	threadsetname(f->path);
 
-	for(n=0; n<10; n++){
-		snprint(addr, sizeof(addr), "udp!*!%d", newport());
-		if((cfd = announce(addr, adir)) >= 0)
-			break;
-	}
-	if(cfd < 0){
+	if((cfd = announce("udp!*!0", adir)) < 0){
 		err = "announce: %r";
 		goto out;
 	}
@@ -440,7 +428,7 @@
 threadmain(int argc, char **argv)
 {
 	char *srvname = nil;
-	char *mtpt = nil;
+	char *mtpt = "/n/tftp";
 
 	time0 = time(0);
 	ipmove(ipaddr, IPnoaddr);
@@ -451,6 +439,7 @@
 		break;
 	case 's':
 		srvname = EARGF(usage());
+		mtpt = nil;
 		break;
 	case 'm':
 		mtpt = EARGF(usage());
--