[Mono-dev] Bug in MonoTorrent

2006-09-20 Thread Andreas Nahr



Hi,
 
I tried the MonoTorrent library and found a bug 
preventing if from working with large torrents or files.
The torrent contained a file with > 3GB size 
(Linux DVD image):
 
System.IO.IOException was unhandled  
Message="An attempt was made to move the file pointer before the beginning of 
the file.\r\n"  Source="mscorlib"  
StackTrace:   at 
System.IO.__Error.WinIOError(Int32 errorCode, String 
maybeFullPath)   at 
System.IO.FileStream.SeekCore(Int64 offset, SeekOrigin 
origin)   at 
System.IO.FileStream.Seek(Int64 offset, SeekOrigin 
origin)   at 
MonoTorrent.Client.FileManager.Read(Byte[] buffer, Int32 bufferOffset, Int64 
offset, Int32 count)   at 
MonoTorrent.Client.FileManager.GetHash(Int32 
pieceIndex)   at 
MonoTorrent.Client.TorrentManager.HashCheck(Object 
state)   at 
System.Threading.ExecutionContext.Run(ExecutionContext executionContext, 
ContextCallback callback, Object state)   
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object 
state)
 
Also some functions like e.g. torrent.DownloadSpeed () seem to be pretty complicated to get right in 
terms of multithreading use.
 
Happy Hacking
Andreas
___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] Bug In MonoTorrent

2006-10-12 Thread Alan McGovern
Hi,I tried the MonoTorrent library and found a bug preventing if from working with large torrents or files.
The torrent contained a file with > 3GB size (Linux DVD image):System.IO.IOException was unhandled  Message="An attempt was made to move the file pointer before the beginning of the file.\r\n"
  Source="mscorlib"  StackTrace:   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)   at System.IO.FileStream.SeekCore(Int64 offset, SeekOrigin origin)   at 
System.IO.FileStream.Seek(Int64 offset, SeekOrigin origin)   at MonoTorrent.Client.FileManager.Read(Byte[] buffer, Int32 bufferOffset, Int64 offset, Int32 count)   at MonoTorrent.Client.FileManager.GetHash
(Int32 pieceIndex)   at MonoTorrent.Client.TorrentManager.HashCheck(Object state)   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)   at 
System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state)Also some functions like e.g. torrent.DownloadSpeed () seem to be pretty complicated to get right in terms of multithreading use.
Happy HackingAndreasHi,I only just noticed the bug today as i wasnt subscribed to the mono dev list. As you can see, i'm now subscribed ;) Also, the bug is fixed in the latest SVN. Just had to change an int to a long. The int was overflowing with an torrent above 2 gigs in size.
Also, about the DownloadSpeed() and UploadSpeed() methods. I have a few ideas for simplifying that. As it is, that's the first thing that came to my mind when i had to monitor download speed, but i agree with you 100%. Its too complicated and multithread un-safe.
Any other bugs, feel free to give me a shout. If anyone wants to start coding for the library, feel free :)Alan.
___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list