what you committed in r9401 fails if there are 2 hashes of the same type in a magnet. If you have for instance "magnet:xt.1=sha1:<a>&xt.2=sha1:<b>" where <a> and <b> are some sha1 hashes, then your code will first extract <a> and then overwrite it in the second iteration with <b>. So at the end, the loop only extracts <b> from that magnet. In order to extract all of them, you probably need to use a list or map to store the files you extract.
PS.: Thanks for making me reread the Quazaa Magnet code, a bug was hiding there, too.
