1
Hmm... need to escape other stuff, like paths? Doubt it, since it
2
isn't run through the command parser.
5
! Now everyone gets locally unchoked even if they don't send us a remote unchoke.
7
// Some peers unchoke us even though we're not interested, so we
8
// need to ensure it doesn't get added to the queue.
12
Hmm... somehow we don't send uninterested to Qi/ci peers. And might
13
forget we're interested in certain peers, though being in the queue
14
indicates we are interested.
16
- Add a bencode pool that gets passed with calles to VariableMap.
19
l/Qn/cn remains so, even for a seeder.
22
Look at XMLRPC, should be relatively easy.
24
- Add the min time between unchokes.
26
- Check if we do enough checking during receive of unchoke, so as not
27
to cause us to use slots when we're not really interested.
29
- Improve the choking weighing for downloads.
34
Remove std::string from exceptions.
38
- what do you think about the DhtStatistics class?
40
+ torrent::dht_manager()->set_can_receive(false);
44
+ const std::string& status() const { return m_status; }
51
Create tools for avoiding std::string use in favor of cstr. Like
52
autobuild cstr for arguments from std::string and const cstr's and
53
other knownlength stuff.
58
- Hmmm... check down interested before adding to the queue?
60
! If we have unchoke weight 0, then it might leave open slots during ticks.
64
- Set a bad timeout for select... add some kind of sanity check.
66
- the goto restart might cause write-done to be set after read_peer.
68
- Remove the interested/choked/etc from PCB and allow const access to PB.
70
Bad peer: very slow upload, when choked, sends HAVE messages at high rate.
75
- Solve the gausian curve error diff.
77
! Feature: Allow rtorrent to be temporary paused by touching an
80
! When creating dirs/files lazily, only create the first
81
file/dir. That should cover most potential errors.
86
- Swap interested between up and down.
89
- Do something about the max_memory_usage docs. Make it explicit that
90
the user should tweak their ulimit instead of rtorrent's settings?
92
- Rename max_memory_usage to max_...?
94
- Add a check that tries to set/unset the soft ulimit if unlimited,
95
just to check that the user doesn't fsck us?
97
Consider also using this to detect max vmem.
100
! The sorting doesn't make it certain that we will go through peers in
101
a proper (random) order. Use stable sort, weight based on time since
102
unchoke, or something.
105
Replace known max length stringstreams printf.
107
== Constructive Ideas on new Download (/upload) Resource Allocator ==
109
- For each run, start with caching a single integer 'weight'. This
110
weight will be divided into 'tiers' denoted by the MSB, while the
111
weight is the lower 3 bytes.
113
But how would this allow us to do optimistic unchoking?
115
* Optimize the choke manager container usage. It needs to do fast
116
removal of elements within the containers.
118
? The order decideds how large a chance it is that we select from that
119
range? Or do we have a high-selectation order, med, low, and none?
121
Also, change the order of the elements.
123
! When we do the randomize unchoke based on the table thing, consider
124
various ways of f.ex only calling random once, and just doing a
125
certain number of an order.
127
That is, beh... randomize only getting the remainder.
131
To implement scheduling libtorrent should support semi-automatic
132
adjustment of download slots. To get there, I need some experience
133
with an easier target; automatic adjustment of upload slots.
135
Though automatic upload slot adjusting might not be the best initial
138
Perhaps I should consider implementing the download slot thing
139
first. Anyway, ideas:
141
- Add priority to connections, about what kind of rarity pieces, and
142
what download they are on.
144
- Need to fix the pipe-lining code too.
146
- Might want to require download throttle to be set, though I assume
147
it should be possible without it. Anyway, one of the first things I
148
need to implement, is a way to detect if we're close to full
149
bandwidth usage. This needs to take into account that upload and
152
- Obviously we need to put the 30 second cycles into use.
154
- Might use an vector of the last N ticks and how our performance was.
156
- Prefer peers which send rare pieces.
159
- Add default check disk space.
161
- Hmm... Handle relative paths properly in the symlink thingie.
163
Hmm... could one make something like APR's memory pools by replacing
164
new/delete? Hmm... Probably exists... but what about making some polls
168
- Write a document of some kind on how to write smaller maps with
169
const char*. Search the net too.
171
- Add variable(s) for creating new variables.
173
- preloading should perhaps check the piped requests.
175
- Move permission, etc, from File to the new OpenFile's value_type?
178
- Consider if this would benefit from allowing custom open-file
179
functions to be defined per File. Not necessarily right now, but in
180
the future. Anyway, add a way to make it configurable if we want to
181
create the file or throw.
185
- Move file/dir creation into open_file or similar.
187
- Later re-add a function for creating all directories in a torrent at
192
- Allow flags when starting/opening that do extra error checking or
195
- When it does the missing files thing, it actually creates the missing file... bad.
199
- Add helper functions for setting the various max open stuff.
201
- Check diskspace before opening a new/incomplete torrent. Should we
202
add the start with flags thing now as a renamed function, then add a
203
flag that checks for diskspace/existing files.
205
- Add DownloadList thing to the API. Make the old torrent api use this
206
API. This should contain DownloadWrappers for now.
208
- See if we can embed data in the curl handle, like the curlget pointer.
212
- Check how many peers we received, and only reconnect if we got less
213
than request size. Won't work.
215
- Fix erasing in HashQueue.
217
- Allow print_attr to skip lines.
219
- Move signals to their respective classes in the interface.
221
- Allow setting the source port. Also move stuff like bind address.
223
! Consider single file multi-file torrents. Add an option for this?
225
| Configurable tracker request behavior.
227
- New global torrent class.
229
- Fix the resume interface.
231
- Tracker dump does not show failed tracker connects.