shithub: misc

ref: 001e60ea4b45fec9cb40ab8fbbebc334b4d3e9f4
dir: misc/9legacy/webfs_SNI.diff

View raw version
diff -Pur sys/src/cmd/webfs/fns.h /sys/src/cmd/webfs/fns.h
--- /n/dump/2021/0627//sys/src/cmd/webfs/fns.h	Sun Sep 22 04:39:47 2002
+++ /sys/src/cmd/webfs/fns.h	Wed Jul 14 11:24:55 2021
@@ -34,7 +34,7 @@
 void		httpclose(Client*);
 
 /* io.c */
-int		iotlsdial(Ioproc*, char*, char*, char*, int*, int);
+int		iotlsdial(Ioproc*, char*, char*, char*, char*, int*, int);
 int		ioprint(Ioproc*, int, char*, ...);
 #pragma varargck argpos ioprint 3
 
diff -Pur sys/src/cmd/webfs/http.c /sys/src/cmd/webfs/http.c
--- /n/dump/2021/0627//sys/src/cmd/webfs/http.c	Thu Jul 15 20:47:20 2010
+++ /sys/src/cmd/webfs/http.c	Wed Jul 14 11:24:21 2021
@@ -286,7 +286,7 @@
 		fprint(2, "dial %s\n", hs->netaddr);
 		fprint(2, "dial port: %s\n", url->port);
 	}
-	fd = iotlsdial(io, hs->netaddr, 0, 0, 0, url->ischeme==UShttps);
+	fd = iotlsdial(io, hs->netaddr, url->host, 0, 0, 0, url->ischeme==UShttps);
 	if(fd < 0){
 	Error:
 		if(httpdebug)
diff -Pur sys/src/cmd/webfs/io.c /sys/src/cmd/webfs/io.c
--- /n/dump/2021/0627//sys/src/cmd/webfs/io.c	Thu Jan 15 19:54:27 2009
+++ /sys/src/cmd/webfs/io.c	Wed Jul 14 11:35:35 2021
@@ -45,11 +45,12 @@
 static long
 _iotlsdial(va_list *arg)
 {
-	char *addr, *local, *dir;
+	char *addr, *host,*local, *dir;
 	int *cfdp, fd, tfd, usetls;
 	TLSconn conn;
 
 	addr = va_arg(*arg, char*);
+	host = va_arg(*arg, char*);
 	local = va_arg(*arg, char*);
 	dir = va_arg(*arg, char*);
 	cfdp = va_arg(*arg, int*);
@@ -64,6 +65,7 @@
 	memset(&conn, 0, sizeof conn);
 	/* does no good, so far anyway */
 	// conn.chain = readcertchain("/sys/lib/ssl/vsignss.pem");
+	conn.serverName = host;
 
 	tfd = tlsClient(fd, &conn);
 	close(fd);
@@ -78,7 +80,7 @@
 }
 
 int
-iotlsdial(Ioproc *io, char *addr, char *local, char *dir, int *cfdp, int usetls)
+iotlsdial(Ioproc *io, char *addr, char *host, char *local, char *dir, int *cfdp, int usetls)
 {
-	return iocall(io, _iotlsdial, addr, local, dir, cfdp, usetls);
+	return iocall(io, _iotlsdial, addr, host, local, dir, cfdp, usetls);
 }