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;