Cancelling doesn't work when server doesn't respond
I've been having a quite flaky Internet-connection recently, so I often have timeouts where the server doesn't seem to respond - still I'm unable to interrupt and retry the transfer because the program waits for the server to respond to a packet which never arrived.
My suggestion: have the ability to "brute-force cancel" the background transfer (i.e. disconnect the socket.)
A problem related to this is that when I have a transfer "running" that has stalled, closing the app causes the process to remain in memory and get stuck there, eventually bailing out with an "abnormal program termination".