1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435
|
$Id: ChangeLog,v 1.50 2005/04/18 02:25:45 hexwab Exp $
OpenFT 0.2.1.6:
* Fixed a bug where full parents could trigger an assertion failure.
* Index tokens database by array index instead of by pointer
(should improve space efficiency, especially on 64-bit platforms).
* Clean up the database properly. Not only does this avoid leaving
huge temporary files lying around, but potentially allows the db to be
shutdown and restarted at will.
* Avoid unaligned memory accesses, which cause problems on some
RISC platforms.
* Don't die on malformed URLs.
OpenFT 0.2.1.5:
* Major search database rethink: shares are keyed by host plus a
unique identifier instead of by hash. Hopefully this will improve
space efficiency (and reduce I/O), and also eliminate the (non-)handling
of duplicate hashes that existed previously.
* New tokenization API.
* Removed support for hidden searches due to new improved hashing algorithm.
* New searching functionality: exclusion tokens and quoted queries.
* Moved local shares into search database. This should reduce CPU usage
with a large number of shares.
* Improved documentation about search node configuration.
* Fixed two bugs in stats initialization.
* Added Bloom filter support, which is currently unused but may eventually
be used to optimize query routing.
* Temporarily backed out of cleaning up the database environment on exit,
because it would try to sync the entire database to disk. This will be
fixed properly later when individual children are tracked within
ft_search_db.c.
* Implemented automatic compressed stream handling for unbounded
data (currently search queries and forwarded search results). This
reduces bandwidth usage significantly, sometimes by as much as 50%.
* Increased maximum packet size, although this is currently unused for
compatibility reasons.
OpenFT 0.2.1.4:
* Fixed a signedness bug that could cause problems with non-ASCII characters
on some platforms.
* Fixed a packet handling bug that could cause an infinite loop.
* Minor networking tweaks.
* Fixed clipping of the nodes cache.
OpenFT 0.2.1.3:
* Fixed a potentially fatal problem when parsing an HTTP request header
which fails to provide a request method.
* Fixed a bug that could result in a remote crash when supplying a relative
path in HTTP GET and HEAD request methods.
* Rewrote the ZLib decompression code to [hopefully] fix a bug which
can potentially leave OpenFT in an infinite loop (very rare).
* Fixed a problem when requesting additional nodelists from actively
connected peers which would produce an invalid request packet, and thus
never receive nodes.
* Corrected an invalid assumption when determining the "indirect" status of
remote peers that expected both port_openft and port_http to be positive
integers. The HTTP port is not transmitted by nodelist responses, and
thus will be initialized to 0. This subsequently prevents connection
attempts to these peers.
* Fixed ft_netorg_length cache corruption.
* Fixed search db filename problem which caused SEARCH nodes to be unusable
on Windows.
OpenFT 0.2.1.2:
* Fixed a problem that would improperly cast the result of recv() to size_t
before testing for a negative return value.
* Improved URL encoding correctness. This code is likely to be phased out
entirely with the introduction of giFT 0.12.x, *sigh*.
* Added HEAD request method support. This is a server-side only change and
is not currently being utilized by this code base.
* Minor internal cleanups regarding the use of `FT_SELF' as a valid
FTNode object.
* Major logic improvements regarding class changes.
* Turned off incoming search verification by default.
* Massive search database redesign and internal code cleanups. Added
an additional non-persistent index for efficient removal (similar to
what was used before but greatly cluttered the memory pool cache and
persisted for the life of the child connection). This improvement
manifests itself in the form of a drop of n file descriptors actively
opened where n is the number of children the search node is currently
managing.
* Added a simple test-case system for benchmarking and testing
ft_search_db.c tweaks.
* Search node defaults have been adjusted to better facilitate the
increased search node distribution and lower the system requirements for
more casual search nodes.
* Minor search node optimization which avoids port verification for nodes
that can't possibly become our child (even if they think they can). This
optimization should eventually be built into the network by allowing
users to dynamically adjust their firewalled status based on the
verification results from remote search peers.
* Automatically detect and adjust the fd limit of the process space
OpenFT is running in using getrlimit/setrlimit when available. This
should greatly improve some operating system's ability to function as
a search node.
* Avoid a fatal assertion when giFT [mistakenly] calls p->download_start
consecutively, with no p->download_stop in-between.
* Major win32 portability improvements. Thanks pretender :-)
OpenFT 0.2.1.1:
* Move libgiftproto version requirements up to 0.11.4 for the changes to
the p->upload_auth system.
* Improved default nodes file from 0.2.1.0.
* Optimized ft_netorg_length to use a constant iteration of 31 (total
distinct possibilities for the klass fields) instead of moving over every
node that currently exists in the state set.
* Added a feature to clamp the maximum number of OpenFT connections that
will be allowed. By default, this feature is only active for search
nodes and it is intended to keep them away from the default maximum fd
limit of 1024 on most systems.
* Fixed a small bug which would allow search nodes to release peers when
the purpose value was not properly assigned.
OpenFT 0.2.1.0:
* Deliver the proper nodelist sentinel after the complete command has been
sent. Should we maybe use a generalized stream here?
* Fixed a typo which would result in acceptance of a new parent despite
the precense of a previous one. The remote peer is sent a rejected
response while the local node adds a parent class, thus creating an
inconsistency. Eventually this leads to the local node dropping
legitimate parent nodes and then seeking out new parents to start the
process all over again.
* Improved search result filtering to firewalled users, specifically when
the search result would not be accessible to the user receiving the
results. You could reason that this will reduce search result traffic by
about 25% due to the frequency of searches from firewalled users and also
the number of firewalled users on the network. Although, I don't believe
this to be entirely accurate. Still, it's an improvement *g*.
* Fixed a small memory leak which would occur for each HTTP request which
returned the 503 HTTP response (no available upload positions, generally).
* Handle the new UPLOAD_AUTH_HIDDEN condition from p->upload_auth. Also
improved the logic which responds to 503 messages so that only
UPLOAD_AUTH_MAX will send the queue position.
* Fixed a severe search database bug which would cause all single share
removals (such as when resyncing shares) to fail to be removed from the
secondary token index which resulted in the need for the SEARCH_DB_HACK
switch. Lingering references to the share database would always exist
and the size of the secondary token index would grow indefinitely,
causing performance and resource management issues.
OpenFT 0.2.0.0:
* Internal improvements which allow idle connections to be cleaned up on
the client side more gracefully. This system will need to be implemented
on a case-by-case basis, and is currently in use only by a small number
of systems.
* Modified the PUSH forward request/response such that a response is
always sent back, even when successful. This way we can be sure to
terminate the session as soon as we can be assured that the packet was
delivered.
* Fixed several bugs which would cause regular user nodes to enter a state
of desperation when searching for nodes, even when they have all the
necessary connectivity.
* Automagically clamp the number of nodes written out to the cache to avoid
ridiculous startup times trying to read and sort them back in.
* Fixed a fatal assertion failure when responding with a node list that
exceeds 2048 bytes, triggered on search nodes when the external
OpenFT spider runs.
* Merged nodelist request and response into a single command for
efficiency.
* Fixed a fatal error with libdb3 >= 3.2.x.
OpenFT 0.1.0.5:
* Fixed a bug where search nodes would try a new outgoing connection
when a push forward request was made. The user must be connected for
this operation to have any meaning.
* Reduced the amount of stale PUSH sources that are allowed by killing the
source when the search node parent that is handling the forwarding says
that the user is no longer available as a child.
* Fixed a resource mismanagement bug which would request a nodelist from
remote peers even when all connection types are satisfied.
* Fixed a fatal bug when searching and no parent nodes are available.
OpenFT 0.1.0.4:
* Fixed a problem where old nodes would stll prefer outgoing connections to
newer incompatible versions, effectively flooding them with erroneous
connection attempts.
* Reduce the amount of nodelists that are requested from remote peers in
an effort to reduce search node bandwidth requirements.
* First official version change which uses the a.b.c.d version identifier,
instead of a.b.c-d, to reduce confusion with the Debian packages.
OpenFT 0.1.0-3:
* Added a special share (GET /nodes...) which will dynamically construct a
file containing references to all active OpenFT connections.
OpenFT 0.1.0-2:
* Completely rewritten HTTP transfer system. During this rewrite OpenFT's
nodepage was put to rest.
* Minor non-backwards compatible change to the PUSH system used by
firewalled nodes during uploading.
OpenFT 0.1.0-1:
* No real changes, only a version change for this release candidate.
OpenFT 0.0.10-1:
* Completely eliminated the need for FTSHost, moving the few required
facilities it provided to ft_search_db.h:FTSearchDB.
* Major search database optimizations resulting from direct storage of the
FTSearchDB pointer instead of relying on a lookup by IP in order to
complete the result set. Needless to say these are highly experimental.
* Rearranged protocol commands related to sharing and stats. Specifically,
sync messages are used to indicate when modifications to the shares will
be made, this replaces one part of the modshare_request command. Added
FT_CHILD_PROP message to adjust availability and hopefully other child
properties in the future. Divided FT_STATS_REQUEST such that it no
longer implemented any form of sub-commands, added
FT_STATS_DIGEST_{ADD,REMOVE} to replace the functionality.
* Improved the stats semantics such that parent search nodes will archive
previous index node replies and deliver them to children nodes who
request. This means that index nodes will no longer be bound to the base
user class, opting instead for a better defined hierarchy.
* Many legacy cleanups.
* Take advantage of the new FT->share_lookup (FT, ...) command. In the
very near future a new command to access the entire share index (for
ft_share_local_submit) will be added as well.
OpenFT 0.0.9-7:
* Actually, nothing. It's a trick, but update anyway *g*.
OpenFT 0.0.9-6:
* Improved FT_NODELIST_REQUEST so that specific classes may be filtered
by the remote node in order to produce visual graphs by spidering the
network. Please see the openft-map module from this CVSROOT if you'd
like to know exactly how we are doing this...
OpenFT 0.0.9-5:
* Major search efficiency improvements. Temporarily removed MD5 search
forwarding.
* Reintroduced the concept of a search termination sentinel. Each node
in the network will wait on all forwarded nodes to respond before it
delivers the sentinel so that the original searching node may elegantly
terminate the search before the timeout hits. This feature depends on
all other nodes sending the sentinel in the proper order, and as such
is only moderately backwards compat to 0.0.9-4.
OpenFT 0.0.9-4:
* Redesigned push requests and modified search results to properly maintain
the original search parent for push purposes.
OpenFT 0.0.9-3:
* Modified the search response headers to track the original parent. This
will be used to fix the push request problem introduced with the virtual
cluster design.
* Modified FT_NODELIST_{REQUEST,RESPONSE} so that only one packet is
exchanged for each direction (instead of one per node exchanged).
OpenFT 0.0.9-2:
* Search enhancement using an id that can be considered unique for all
nodes operating on the search. This is used for a stronger (and simpler)
system of search forwarding that can preserve as much of the original
data as possible, as well as detect "loops" in the query system.
OpenFT 0.0.9-1:
* Major high-level redesign begun. Initial changes include the formation
of virtual clusters through a configurable number of static peer search
node connections. Searches are broadcasted to all peers, which then
rebroadcast the search until TTL expires, or the maximum result set is
reached. Several optimizations are planned to improve efficiency in a
large scale network.
* Migrated the code over to the new logging facilities provided through the
Protocol structure.
OpenFT 0.0.8-2:
* More improvements to the search database design. We are now utilizing a
single database environment and all child shares are inserted into the
same physical file on disk.
* Tested and [almost] finished direct browsing. Currently,
ft_packet_sendto is limited to only being able to deliver packets to
non-firewalled users. Hopefully this will be addressed soon.
OpenFT 0.0.8-1:
* Massive scalability improvements related to the search node database code
which organizes and indexes all child shares. For the more technical of
our audience, we have moved to a database design utilizing two master
databases for all searching requirements (greatly increasing insert and
removal overhead) while reducing the number of file descriptors open at
any one time and total memory overhead.
* Rewrote node, network organization, and connection subsystems for OpenFT.
While it has little effect on the network structure directly, I will
begin to utilize these new APIs through implementation of node
clustering. Honestly, it's coming soon :)
* Untested "fix" for direct user browsing. See 0.0.7-8's entry for more
details on this.
OpenFT 0.0.7-8:
* Direct browsing implemented. Please note that this code will currently
only work if you already have an OpenFT connection with the user you are
browsing. This limitation is strictly client-side and should be
considered a "bug". Will be fixed ASAP.
OpenFT 0.0.7-7:
* Fixed session handshaking...I know, shut up.
OpenFT 0.0.7-6:
* Fixed session handshaking for real this time...I promise.
OpenFT 0.0.7-5:
* Fixed a bug which ignored the need to test supplied ports. This caused
nodes which have been improperly configured (port = non-zero yet it is
not remotely accessable, likely because of a firewall) to report as
non-firewalled users and reply with a URL as such. It would thus be
impossible to download from these users.
* Fixed a somewhat related bug which caused session handshaking to
prematurely complete. Fixing this bug causes a minor disruption in
handshaking with 0.0.7-4, which worsens the race condition in 0.0.7-4.
OpenFT 0.0.7-4:
* Deliver node aliases over HTTP and display appropriately for uploads
registered this way.
OpenFT 0.0.7-3:
* Fixed a minor endianness problem when communicating IPv4 addresses over
OpenFT.
OpenFT 0.0.7-2:
* Public "release" of OpenFT 0.0.7.
OpenFT 0.0.7-1:
* Transparent stream compression over OpenFT. This system introduces a
a bandwidth optimization which greatly reduces the number of OpenFT
packets required for writing (by blocking multiple writes into one packet)
as well as transparently compressing the writes with ZLIB if available.
Currently, the non-zlib code is somewhat broken so ZLIB is a requirement.
This will be lifted soon.
* Strict protocol "handshaking" stage requiring all nodes deliver the
required information/packet responses before the stage increases and the
true OpenFT session begins.
* Completely removed old method of browsing due to a severe waste of
resources by design. A new direct browse method which operates over
OpenFT using stream compression is expected to be completed shortly.
OpenFT <= 0.0.6:
* Information lost.
|