Hello Andreas!

Here's a shot in the dark, to try to narrow this down. Please ignore me
if someone else contacts you about this issue.

Based on your report that rdesktop disk/share redirection worked with etch
and not in lenny, I made a diff and sorted out the very tiny changes that
was not just renames between the versions (attached).
I don't have the possibility to test this and was hoping that you could
check if the reverting these changes has any effect?
If it does we have narrowed it down, but this is a shot in the dark
and the problem might not be related to rdesktop's disk.c at all....

to build do something like this:

if ! grep deb-src /etc/apt/sources.list >/dev/null ; then
        echo "You need deb-src for apt-get source .."
        echo "Please edit /etc/apt/sources.list to add deb-src ..."
        echo "Then run apt-get update"
else
        cd /tmp
        apt-get source rdesktop
        cd rdesktop-1.6.0
        patch -p1 < path/to/rdesktop-disk-revert.diff
        apt-get build-dep rdesktop
        fakeroot debian/rules build
        echo "File /tmp/rdesktop-1.6.0/rdesktop built... "
        echo "Please retest with ./rdesktop instead of /usr/bin/rdesktop !"
fi


PS. I've only compile tested this, and don't know if it'll blow up
completely when you run it.... I guess we'll see.

-- 
Andreas Henriksson
--- rdesktop-1.6.0/disk.c	2008-02-16 01:13:25.000000000 +0100
+++ rdesktop-1.5.0/disk.c	2006-08-07 13:45:43.000000000 +0200
@@ -493,23 +493,20 @@
 	g_fileinfo[handle].accessmask = accessmask;
 	strncpy(g_fileinfo[handle].path, path, PATH_MAX - 1);
 	g_fileinfo[handle].delete_on_close = False;
-
-	if (accessmask & GENERIC_ALL || accessmask & GENERIC_WRITE)
-		g_notify_stamp = True;
+	g_notify_stamp = True;
 
 	*phandle = handle;
 	return RD_STATUS_SUCCESS;
 }
 
 static RD_NTSTATUS
 disk_close(RD_NTHANDLE handle)
 {
 	struct fileinfo *pfinfo;
 
 	pfinfo = &(g_fileinfo[handle]);
 
-	if (pfinfo->accessmask & GENERIC_ALL || pfinfo->accessmask & GENERIC_WRITE)
-		g_notify_stamp = True;
+	g_notify_stamp = True;
 
 	rdpdr_abort_io(handle, 0, RD_STATUS_CANCELLED);
 
@@ -853,7 +850,7 @@
 			in_uint32_le(in, length);	/* file size */
 
 			/* prevents start of writing if not enough space left on device */
-			if (STATFS_FN(pfinfo->path, &stat_fs) == 0)
+			if (STATFS_FN(g_rdpdr_device[pfinfo->device_id].local_path, &stat_fs) == 0)
 				if (stat_fs.f_bfree * stat_fs.f_bsize < length)
 					return RD_STATUS_DISK_FULL;
 

Reply via email to