DC++ .870 fails to follow symbolic links

Bug #1945213 reported by Jay Hollingsworth
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
DC++
Invalid
Undecided
Unassigned

Bug Description

After upgrading to .870 DC++ will not follow Windows symbolic links when moving files from DC++ temp to the final destination.

I have many messages like this:

[09:43] Unable to move <N:\DC++temp\ELP 1975-05-25 d1t06.flac.PUW3JQHMQ2KI2JVXXELJYN7EIH6KCZGUXFM44TY.dctmp> to <N:\Emerson Lake & Palmer + Related\elp 1974-05-25 Ahoy Halle, Rotterdam, Netherlands cdr\Disc 1\ELP 1975-05-25 d1t06.flac> (The system cannot find the path specified.); renamed to <N:\DC++temp\ELP 1975-05-25 d1t06.flac>

The path N:\Emerson Lake & Palmer + Related is a link to a folder on another drive.

I can manually move the files so I know the link is working correctly (from a non-elevated command prompt):
N:\DC++temp>move "ELP 1975-05-25 d1t06.flac" "N:\Emerson Lake & Palmer + Related\elp 1974-05-25 Ahoy Halle, Rotterdam, Netherlands cdr\Disc 1"
        1 file(s) moved.

I have had to back off to .868, where this worked fine

description: updated
description: updated
Revision history for this message
eMTee (realprogger) wrote :

Since you haven't mentioned what kind of symlink (hard or soft) you use I tried:

Test #1

c:\TEMP>mklink /J C:\Temp\LinkToFolder G:\Test
Junction created for C:\Temp\LinkToFolder <<===>> G:\Test

In DC++:
Unfinished files folder set to E:\DCPP\Unfinished\
Finished files folder set to C:\Temp\LinkToFolder\

Download of small and 10MiB> files both work (they're moved differently, small files async, large files threaded) and landed in G:\Test (expected result)

Test #2

c:\TEMP>mklink /D C:\Temp\LinkToFolder G:\Test
symbolic link created for C:\Temp\LinkToFolder <<===>> G:\Test

Same settings in DC++, same result in downloads test.

Test #3

I tried to simulate your directories and downloaded a folder structure and filename same as in your example.

c:\TEMP>mklink /D C:\Temp\LinkToFolder "G:\Emerson Lake & Palmer + Related"
symbolic link created for C:\Temp\LinkToFolder <<===>> G:\Emerson Lake & Palmer
+ Related

At download folders are created and file landed in the target as expected.
("g:\Emerson Lake & Palmer + Related\elp 1974-05-25 Ahoy Halle, Rotterdam, Netherlands cdr\Disc 1\ELP 1975-05-25 d1t06.flac" file exists)

Test #4

In DC++:
Finished files folder set to C:\Temp\Emerson Lake & Palmer + Related\

c:\TEMP>mklink /D "C:\Temp\Emerson Lake & Palmer + Related" "G:\Emerson Lake & Palmer + Related"
symbolic link created for C:\Temp\Emerson Lake & Palmer + Related <<===>> G:\Emerson Lake & Palmer + Related

At download folders are created and file landed in the target as expected.

If I misunderstood you and should try something differently please let me know.
Otherwise it is something else. Make sure you try to download the very same files to the very same link and structure in both versions.

Changed in dcplusplus:
status: New → Incomplete
Revision history for this message
Jay Hollingsworth (jayholl) wrote :

I had a chance to experiment with this.

If I upgrade from .868 to .870 and let .870 run at the end of the install process it behaves as I describe.

If I reboot after the upgrade before letting it run, .870 behaves as it should.

Not sure why a reboot is needed for it to recognize the symbolic links (which are of the mklink /d flavor), but I'm going to withdraw the issue with a comment that folks using folders with symbolic links should simply reboot after upgrading and before running .870

I don't see an option to withdraw just now, so if I don't find it an admin can mark the issue withdrawn.

Thanks for reading

Revision history for this message
eMTee (realprogger) wrote :

Maybe the user rights of accessing the symlink and the rights of the program itself mismatch until you reboot. Running DC++ as an administrator may resolve the problem in these cases.
Anyway, thanks for confirming this as a non-issue.

Changed in dcplusplus:
status: Incomplete → Invalid
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.