I'm trying to understand how gnunet-download works, despite its abominable amount of immediate scheduling and abstractions. One thing I'm confused about though. gnunet- download is an FS client, right? Uses gnunet-service-fs to download?
I attached to gnunet-service-fs using a debugger, then fired up gnunet-download for my download that's bugging out, but I couldn't find which callback was invoked when gnunet- download tells the service to start downloading. Sometimes mysterious "peers" would connect to the service, unrelated to gnunet-download, but gnunet-download itself downloaded everything without connecting to gnunet-service-fs. I finally just hit "next" in gdb, so that it would immediately drop to the gdb prompt as soon as the select loop in gnunet-service-fs registered activity. Then I hurriedly switched windows, fired off another gnunet-download, and... nothing. gnunet-service-fs never left the core select loop for the whole download. Then it left the core select loop when another one of those "peers" connected. I'm sure the files are deleted in the directory I'm downloading them to. They're indexed elsewhere on disk, or at least they should be, since I said so while publishing them. gnunet-fs -i only lists one of the files in the directory (derp/herp/derpxjmfn/filehktb.txt) not any of the other 223 files. Nevertheless I'm sure I did publish them just now, and I'm sure I'm not downloading on top of existing data, in case that gnunet-download might be a no-op, if the download already matches with the hash. But even accounting for all this, gnunet-download never connects to gnunet- service-fs. What does gnunet-download connect to? Other weirdness, my buggy download actually started inexplicably succeeding. Before today, it would just hang forever. Now it quickly produces the files I just published without any delay, then freezes halfway through. Then a minute later, it dumps out the rest of the files, again without a delay, and successfully completes. Seriously, this is what I get: $ time gnunet-download -V -V -V -R -o derp.gnd gnunet://fs/chk/AJRGAG82WAENCXR4QPWQ7HCR3PQPFBK6J8BRBZV2TPAVKX1Z3631B7T27D2TGQQP CA61H7M4QR8RG92EVDZZCG3FXYR9NH3ZYW15HW8.AQ6D1QZ9EN6A7M1ZWCWFF88ZP3KBPCNDFJAS3NBWETEP27SVQN DSVKFB4S9028ETXCECTQ2PZP5XCW2EVVVTGPPSW2173GZG2SZR4E8.28249 ... 0.06s user 0.01s system 0% cpu 1:00.12 total Exactly one minute. I verified this twice. I'm guessing that one of my peers is storing the latter half of the directory I published. But why isn't my own node storing it? Or indexing it? Why exactly one minute's delay? Why only one file in my test data being indexed? What about the other 224 files I published in that directory? What about that directory itself?
