9fans archive / 1998 / 04 / 10 /    prev next

From: Jean Mehat jm@mim...
Subject: [9fans] a problem with the 9p protocol?
Date: Sat, 4 Apr 1998 07:58:25 +0200 (CEST)



I suppose I missed something in the 9p protocol; has anyone any clue?

I was trying to make a program to filter the 9p messages, a la cfs. The
simplest filter has a simple loop:
	for(;;){
		if ((n = read(client, buffer, sizeof buffer)) < 0)
			error("read client");
		else
			dump("client->server", buffer, n);
		if (write(serveur, buffer, n) < n)
			error("write server");
		if ((n = read(serveur, buffer, sizeof buffer)) < 0)
			error("read server");
		else
			dump("serveur->client", buffer, n);
		if (write(client, buffer, n) < n)
			error("write client");
	}

If I run it with:
	ramfs -s
	filter
	mount /srv/filter /tmp/mnt
it seems to work: I can manipulate files in /tmp/mnt. But if I first mount and
then unmount the ramfs with:
	ramfs -s
	mount -c /srv/ramfs /tmp/mnt
	unmount /tmp/mnt
	filter
	mount /srv/filter /tmp/mnt
I get:
	client->server: Tsession tag 65535 		# (from dump)
	write server: inappropriate use of fd
	mount: mount /srv/filtre /tmp/mnt: fsession: i/o error during authentication

Where is the problem?