Das anonyme P2P Programm - The Owner Free File System auch für Linux erhältlich

Hier kann jeder Nachrichten posten - von einem Satz mit URL bis hin zu ausgefeilten Artikeln.
Message
Author
Reality81

#16 Post by Reality81 »

OFF Version 0.17.11 für Linux, Windows & Mac verfügbar.

Der Changes ist diesmal etwas länger :-)


Changes:
0.17.11

- Removed the wait for a channel from the cnxn pool, if a channel
is not available the attempt now aborts immediately and tries
again later.

- Fixed listctrl sorting bug with the Bucket Radius column.

- If a channel cannot be obtained to a pool node the socket class
will no longer try to open a new TCP socket, but will abort
the connection attempt.

- Fixed display bug where the speed of a download would freeze while
it was completion checking or submitting more blocks.

- Fixed bug where distribution stats were not printed for small
inserts.

- Fixed bug in determining which node is in charge when establishing pool
cnxns - this caused some confusion if the two nodes pinged each other
at very nearly the same time.

- Removed the close msg send when a duplicate pool cnxn is added
(this should never happen due to the previous fix) and the socket
is now just closed in this case. The msg was sent synchronously and
could have caused thread lag.

- Fixed bug that caused downloads to occasionally loop on checking
completion status without actually finishing... I think!

- Downloads will no longer keep adding block requests to the queue
if there are no download slots available, this keeps the queue
shorter and saves on CPU.

- Requests for blocks from downloads to firewalled nodes with no
pool cnxn have been temporarily disabled. These use an old
algorithm which is very CPU intensive for large blocklists.
For now, only requests for relayed blocks are made while this
part of the code is re-written. This will only affect comms
with very old versions.

- Randomly generated the srch id on startup.

- Fixed bug where if a download was paused while submitting blocks
or checking completion, it could not be resumed again without
restarting the client.

- Encapsulated groups of simultaneous outgoing cnxns such as are used
for pings, pushes, srches etc into a managing class.

- RSA and AES key requests now happen in simultaneous groups 10
and have been moved from the nodelist manager thread to the async
cnxn handler.

- Moved all pings from the nodelist manager thread to the async cnxn handler.

- Moved all nodelist requests from the nodelist manager thread to the
async cnxn handler.

-Implemented a conditional wait for the cnxn pool listen thread.
If the thread is sleeping it is woken whenever a pool socket
becomes available for listening.

- The Hamming distance of a the node ids to our node is now shown as
a column in the nodelist.

- Fixed bug where nodes would not be shown under cmd line.

- Implemented millisecond time resolution for upload and download speed
calculations.

- The upload and download speeds to each node are now shown as new
columns in the nodelist. The speed shown is the sum of all
the traffic types in the Statistics tab so may not tally
with the speeds shown in the title. This display can be toggled
on and off with a checkbox in Options->Display.
Just for jolly japes, the speed columns will show or hide automatically
depending on the value of the checkbox when it is clicked. They
can be manually reshown/hidded from the list column menu but speeds
will only be displayed if the checkbox is enabled.

- Added a refusal page that is returned to the browser when the options
forbid content to be sent. The page does not differentiate between
whether all browser retrievals are forbidden, or just remote ones.
This page is also sent if a remote browser tries to access the
web interface.

- Fixed bug/crasher where the access restrictions dialog was opened
from the retrieve thread and not the main thread. (The fix
was somewhat of a hack and needs to be revisited at some point)

- Added better checking of bad hashes in URLs. Some URLs with bad hash lengths
or characters were leaking through the previous poor checking.

- Encapsulated the data and some of the methods necessary to retrieve
a file into a class, this allows a retrieve to be started and then
paused and resumed later. In time the rest of the retrieve methods
should be moved from the OFFSystem class to this class.

- All communications with browsers are now done asynchronously and
these tasks have been moved to the async handler thread. The thread
dedicated to talking to browsers has been removed.

- NON-RELEASE BUILDS ONLY: The http sent to browser can be seen
in the log by enabling an option in the Debug menu.

- Logged shutdown times should now make sense under Linux.

- Pinging nodes after a port change now happens asynchronously,
this will stop the lag when the port is changed under cmd line.

- Added a check after retrieve that the size of the retrieved file
matches the one in the URL.

- Fixed memory corruption bug on RSA decrypt fail.

- PROTOCOL CHANGE: Added a message to the protocol to say when decryption
has failed in the public RSA key handshake.

- PROTOCOL CHANGE: Large messages like blocks and some srch results can
now be sent in chunks specified by the "Range:" field in the header.
This prevents slow transfers from clogging up the asynchronous comms
since other shorter messages end up queued behind them. The default
chunk size is 32kB but later may be determined by available bandwidth.
Only msgs sent in the pool cnxns are chunked, for synchronous sockets
they are sent whole.

- Fixed a minor bug that causes a node to send a no slot message if the
number of blocks in a request group was exactly on the limit rather
than exceeding it.

- For nodes with pool cnxns the average upload write speed is now
show in the node list - note that this does not reflect the current
upload speed to that node, but rather the total data sent so far
over the total time taken to send that data. This number will later
be used to decide on chunk sizes and other speed dependent node
attributes.

- Node scoring has been disabled for the time being. This is completely
uncalibrated and please be assured that any autobans that may have
accumulated to date are likely to be grossly unjust. Scoring will
return when we have a nicely stable network and it has been
calibrated to better reflect node behaviour.

- Printing of progress log messages for store/retrieve/distribute
has been disabled on the Mac just to some reports of bad interaction
with AppleSpell under Leopard.

- PROTOCOL CHANGE: Added a message to the protocol to say when a block
has failed to load or read properly for a push - rather than just leave
the other node hanging waiting for a push that never arrives!

- Fixed memory leaks on shutdown if the client is closed during a distribute.

- Fixed corruption bug in reading certain msgs that could cause
rampant CPU use and other undefined behaviour... oops.

- Added sanity checking of nodelists received from other nodes


- Fixed data race when nodes with a pool cnxn are manually removed.

- The pool write speed is now used to decide whether a message should be
sent chunked. Variable chunk sizes will come later, they are still fixed
at 32kB for now.

- Fixed bug in construction of reply messages to block requests where
a list of candidate nodes is returned.

Reality81

#17 Post by Reality81 »

OFF Version 0.17.12 für Linux, Windows & Mac verfügbar.

Changes:
0.17.12

- Removed the wait for a channel from the cnxn pool, if a channel
is not available the attempt now aborts immediately and tries
again later.

- Fixed listctrl sorting bug with the Bucket Radius column.

- If a channel cannot be obtained to a pool node the socket class
will no longer try to open a new TCP socket, but will abort
the connection attempt.

- Fixed display bug where the speed of a download would freeze while
it was completion checking or submitting more blocks.

- Fixed bug where distribution stats were not printed for small
inserts.

- Fixed bug in determining which node is in charge when establishing pool
cnxns - this caused some confusion if the two nodes pinged each other
at very nearly the same time.

- Removed the close msg send when a duplicate pool cnxn is added
(this should never happen due to the previous fix) and the socket
is now just closed in this case. The msg was sent synchronously and
could have caused thread lag.

- Fixed bug that caused downloads to occasionally loop on checking
completion status without actually finishing... I think!

- Downloads will no longer keep adding block requests to the queue
if there are no download slots available, this keeps the queue
shorter and saves on CPU.

- Requests for blocks from downloads to firewalled nodes with no
pool cnxn have been temporarily disabled. These use an old
algorithm which is very CPU intensive for large blocklists.
For now, only requests for relayed blocks are made while this
part of the code is re-written. This will only affect comms
with very old versions.

- Randomly generated the srch id on startup.

- Fixed bug where if a download was paused while submitting blocks
or checking completion, it could not be resumed again without
restarting the client.

- Encapsulated groups of simultaneous outgoing cnxns such as are used
for pings, pushes, srches etc into a managing class.

- RSA and AES key requests now happen in simultaneous groups 10
and have been moved from the nodelist manager thread to the async
cnxn handler.

- Moved all pings from the nodelist manager thread to the async cnxn handler.

- Moved all nodelist requests from the nodelist manager thread to the
async cnxn handler.

-Implemented a conditional wait for the cnxn pool listen thread.
If the thread is sleeping it is woken whenever a pool socket
becomes available for listening.

- The Hamming distance of a the node ids to our node is now shown as
a column in the nodelist.

- Fixed bug where nodes would not be shown under cmd line.

- Implemented millisecond time resolution for upload and download speed
calculations.

- The upload and download speeds to each node are now shown as new
columns in the nodelist. The speed shown is the sum of all
the traffic types in the Statistics tab so may not tally
with the speeds shown in the title. This display can be toggled
on and off with a checkbox in Options->Display.
Just for jolly japes, the speed columns will show or hide automatically
depending on the value of the checkbox when it is clicked. They
can be manually reshown/hidded from the list column menu but speeds
will only be displayed if the checkbox is enabled.

- Added a refusal page that is returned to the browser when the options
forbid content to be sent. The page does not differentiate between
whether all browser retrievals are forbidden, or just remote ones.
This page is also sent if a remote browser tries to access the
web interface.

- Fixed bug/crasher where the access restrictions dialog was opened
from the retrieve thread and not the main thread. (The fix
was somewhat of a hack and needs to be revisited at some point)

- Added better checking of bad hashes in URLs. Some URLs with bad hash lengths
or characters were leaking through the previous poor checking.

- Encapsulated the data and some of the methods necessary to retrieve
a file into a class, this allows a retrieve to be started and then
paused and resumed later. In time the rest of the retrieve methods
should be moved from the OFFSystem class to this class.

- All communications with browsers are now done asynchronously and
these tasks have been moved to the async handler thread. The thread
dedicated to talking to browsers has been removed.

- NON-RELEASE BUILDS ONLY: The http sent to browser can be seen
in the log by enabling an option in the Debug menu.

- Logged shutdown times should now make sense under Linux.

- Pinging nodes after a port change now happens asynchronously,
this will stop the lag when the port is changed under cmd line.

- Added a check after retrieve that the size of the retrieved file
matches the one in the URL.

- Fixed memory corruption bug on RSA decrypt fail.

- PROTOCOL CHANGE: Added a message to the protocol to say when decryption
has failed in the public RSA key handshake.

- PROTOCOL CHANGE: Large messages like blocks and some srch results can
now be sent in chunks specified by the "Range:" field in the header.
This prevents slow transfers from clogging up the asynchronous comms
since other shorter messages end up queued behind them. The default
chunk size is 32kB but later may be determined by available bandwidth.
Only msgs sent in the pool cnxns are chunked, for synchronous sockets
they are sent whole.

- Fixed a minor bug that causes a node to send a no slot message if the
number of blocks in a request group was exactly on the limit rather
than exceeding it.

- For nodes with pool cnxns the average upload write speed is now
show in the node list - note that this does not reflect the current
upload speed to that node, but rather the total data sent so far
over the total time taken to send that data. This number will later
be used to decide on chunk sizes and other speed dependent node
attributes.

- Node scoring has been disabled for the time being. This is completely
uncalibrated and please be assured that any autobans that may have
accumulated to date are likely to be grossly unjust. Scoring will
return when we have a nicely stable network and it has been
calibrated to better reflect node behaviour.

- Printing of progress log messages for store/retrieve/distribute
has been disabled on the Mac just to some reports of bad interaction
with AppleSpell under Leopard.

- PROTOCOL CHANGE: Added a message to the protocol to say when a block
has failed to load or read properly for a push - rather than just leave
the other node hanging waiting for a push that never arrives!

- Fixed memory leaks on shutdown if the client is closed during a distribute.

- Fixed corruption bug in reading certain msgs that could cause
rampant CPU use and other undefined behaviour... oops.

- Added sanity checking of nodelists received from other nodes


- Fixed data race when nodes with a pool cnxn are manually removed.

- The pool write speed is now used to decide whether a message should be
sent chunked. Variable chunk sizes will come later, they are still fixed
at 32kB for now.

- Fixed bug in construction of reply messages to block requests where
a list of candidate nodes is returned.

Reality81

#18 Post by Reality81 »

Sorry, habe die OFF Version 0.17.11 versehendlich 2x gepostet :(

Also noch mal von vorne...

OFF Version 0.17.12 für Linux, Windows & Mac verfügbar.

Changes:
0.17.12

- Prevented buffer overruns in log messages with vsnprintf()

- Return Content to Browser is now enabled by default. This only
applies to browsers on the local machine, remote browsers are
still disallowed by default.

- Fixed shutdown memory leak when a msg arrives on a pool socket
while the handler thread is closing.

- Fixed bug where disabling auto trim would disable manual trims as well.

- CRITICAL Fixed bug in async cnxn objects that could cause bad reads and
memory corruption.

- CRITICAL: fixed mutex deadlock in relayed block requests - sorry
about that one! This should fix the deadlocking problem that was
apparent under Linux in 0.17.11.

Reality81

#19 Post by Reality81 »

OFF Version 0.17.13 für Linux, Windows & Mac verfügbar.

Changes:
0.17.13

- Removed mutex locks from the relayed block request list and failed block
request list since they are now only accessed from the ACH thread.

- The walled msg to pool nodes behind a firewall is now sent asynchronously.

- Fixed display bug where speeds did not go to zero when the transfer stopped
if "Smooth Speeds" was disabled.

- Fixed bug where read times would not reset after a block chunk was received
which would sometimes result in a false timeout.

- Removed the trailing CRLF chars from single URLs copied to the clipboard.
They are still required between multiple URLs if OFF is to parse them,
but under mac and linux the delimiter is changed to just LF.

- Extended the socket write timeout to 3 minutes - the previous 40 secs
could cause false timeouts if the other end was only reading slowly.

- Fixed bug where distribute of a concatenated insert would distribute
the entire concatenated filestream not just the part pertaining to the
selected insert. We shouldn't really concatenate inserts that are
so big that this is an issue, but well, it's fixed anyway.

- URLs can now be listed to a file from the Map submenu in Local URLs.
The list file is called "<filename>.list". Using the gui the
location of the list file can be chosen, under cmd line it goes in "./".

- Fixed bug where URLs were listed badly under cmd line.

- Fixed bug where some bad blocknames in corrupted msgs were not detected.

- Fixed crasher when the node speed display was toggled from the preferences
dialog, then Apply, then OK, pressed.

- Fixed bug where read aborts on shutdown were not properly transmitted to
the thread waiting for the reply causing lag in the shutdown procedure.

- Streamlined the shutdown procedure of the ACH thread.

- Fixed "Repair From File" which seemed to have fallen by the wayside at
some point.

- Outgoing file sends are now done asynchronously and handled by the ACH thread.

- Fixed corruption bug in generation of encryption pad hashes.

- Encryption pad requests and offers are now handled asynchronously by the
ACH thread.

- Fixed bug where a "bad RSA key" msg would be sent synchronously.

- Did a lot of tidying in the ACH iteration code. Implemented inheritance
to remove some repeated methods.

- Fixed bug that caused mis-numbering of encryption pads when they were
exchanged.

- Somebody forgot to implement mutex locking on the file blacklist. Wonder
who that was.

- Chat messages and global messages are now handled asynchronously.
Previously they would be sent to the target nodes one at a time,
now they are sent to all target nodes simultaneously.

- Implemented sizers in the chat prompt dialog and Export Nodelist dialog.

- Pool cnxn test and closing messages are now handled by the ACH thread.
They still actually occur synchronously in code (by waiting for the
handler to finish), that will get dealt with as and when.

Download:
https://sourceforge.net/project/showfil ... p_id=96735

Reality81

#20 Post by Reality81 »

OFF Version 0.18.00 für Linux, Windows & Mac verfügbar.

Changes:
0.18.00

- Implemented wxSingleInstanceChecker to only allow one instance of OFF
to run per userID.

- CRITICAL: fixed overflow/NULL-termination crashers related to ludicrously
long usernames. In previous versions, someone could crash your node by
sending an overly long username - upgrade strongly recommended.

- Limited username display in chat to 24 chars for readability.

- Async read objects no longer need to create a copy of a node object.

- Fixed bug where a blocks request count could get incremented when
no request was actually made.

Reality81

#21 Post by Reality81 »

OFF Version 0.18.00 für Linux, Windows

Changes:
0.18.01

Responses to nodelist requests no longer need to make a copy of
the main nodelist.

Fixed bug where the settings for Disable Cache Trimming and
Show Node Speeds would get confused with each other of config read.

Moved the read and write threads out of the OFFCnxnPool Class.

Pool close msgs, sent on shutdown, are now sent to all pool nodes
simultaneously.

Implemented a list+updates method for the download block request list
and removed the unneeded mutex lock from this list since it is now only
accessed from the ACH thread.

Implemented Novice, Expert and Developer GUI modes. These can
be switched from the new Autopilot menu. We will probably end up
moving stuff between these modes over the next few versions as
and when the majority of users express their preferences. Also
most changes can still be made independently of mode from the
specific display options. For now the following options have been
changed:

Specific store types in the toolbar menu : only shown in Dev mode.

Local URLs, Map submenu : not shown in Novice mode.
Local URLs, Tag options : not shown in Novice mode.
Local URLs, Repair options : not shown in Novice mode.
Local URLs, Keys submenu : not shown in Novice mode.

Known Nodes, Authorise/Score options : not shown in Novice mode.
Known Nodes, Ping, Ask Nodelist : not shown in Novice mode.
Known Nodes, Change Port : not shown in Novice mode.

Advanced Security tab : only shown in Dev mode.

File Menu, specific store types : only shown in Dev mode.
File Menu, Check Cache : not shown in Novice mode.
File Menu, Import Blocks : not shown in Novice mode.
File Menu, Configure Cache Locations : only shown in Dev mode.
File Menu, View Relayed Searches : not shown in Novice mode.
File Menu, View Local Blocks : only shown in Dev mode.
File Menu, Import/Export Nodelist : not shown in Novice mode.

View Menu, tooltip options : not shown in Novice mode.
View Menu, Import/Export Colour Scheme : not shown in Novice mode.
View Menu, Toggle ListCtrl Lines : not shown in Novice mode.
View Menu, histogram print options : only shown in Dev mode.

Panel Menu : panel lock options : not shown in Novice mode.

NOTE: the default setting is Novice Mode, so if your favourite obscure
option is missing on upgrade please try changing the GUI mode. :)
Further suggestions of which option should be shown in which mode are
welcome.

Added an option to minimise timed gui updates, under the AutoPilot
menu. Enabling this option will:
i) turn off display of node speeds.
ii) turn off auto sorting of lists (note: re-enabling will not
turn auto sorting back on - because it is still such a frigging pain)
iii) turn off display of node current and total uptimes.
iv) turn off ages and ETAs of downloads
v) turn off URL ages
iv) turn off the display of used upload and download slots
Other updates will probably be included in this option later. The purpose
of this option is for nodes reported to use too much CPU while idling
on some platforms, if this is the case try enabling this option and
check if CPU use is reduced.

Fixed memory leak when loading of a download fails to load due to an
error in the save file.

Implemented Reed-Solomon codes for creating redundancy blocks. The order
of the file blocks when the RS calculation is performed is as follows:
blocks are divided into 256 lists and are added in the order in which
they appear in the insert to the head of the list corresponding to the
first byte in the block name. If a block is already in the list it is
not added. The lists are then concatenated sequentially 00-ff to get
the list of blocks used in the RS calculation. This somewhat complex
procedure is motivated by the fact that we cannot really allow repeated
blocks in the RS system because when such blocks go missing they will appear
to be more than one erasure and the system may appear to be insoluble
when in fact it is not. The RS system should thus contain only the
unique blocks in the insert.

Placed a ceiling of 500 on the number of Reed-Solomon blocks no matter
the size of the insert, usually this number will be the number of
128k sections of the stored file divided by 5.

Reed-Solomon blocks are inserted into the cache just as the file
datablocks are. The tuples of these inserts are written into the
descriptor after the hashmap tuple - which may involve additional
daisy-chaining if the data tuples finish near the end of a descriptor block.

The number of Reed-Solomon blocks in an insert is stored in the field
before the version in the URL of that insert. The reason for this positioning
is so that previous client versions will not notice the extra field
and be emotionally distressed by it.

Reed-Solomon encoding is only done for inserts with 5 file tuples or more
(files >512k) to reduce the chance of deterministic blocks resulting from
the RS block insertions. Larger tuples may be used for smaller files
later, but for now RS is not done for such files.

Listing inserts in Local URLs, now shows the RS blocks.

Distributing a URL now also distributes the RS blocks.

Any missing Reed-Solomon blocks can now be recovered given a completed
download. (Actually recovering file blocks given the requisite number
of RS blocks is not coded yet.)

NOTE: A number of unsolved problems remain in the Reede-Solomon implementation
so it will not be available for a few versions. Some of the above entries
may become outdated as development continues.

Fixed double mutex datarace when pool cnxns are removed, this could cause
deadlocks and possibly crashes.

Fixed crasher when large inserts were listed. Seemed to be a problem
with posting too many gui events to quickly (as each log message posts
an event) and the fix was to add log msgs as normal but only post an
event to display them on the last block of each tuple. This fixed the
crash locally, but some testing in the wild is recommended.

Fixed overrun crasher for mime types longer than 40 bytes, mime types
longer than 128 bytes will now be truncated. (This crasher was discovered
when inserting Open Office files - thanks go to the planetpeer user who
reported it.)

Added a few more tool tips - thanks go to the kindly contributor who
wrote them

Fixed GTK critical on targetted store, wxW did not seem to like the file
selector dialog using the target window as a parent.

Fixed memory leaks of store file paths and arg structs on store.

Fixed memory leak on import blocks.

The BlockCache object now keeps head and tail pointers to each blocklist.
This the lists to be srched faster for blocks by starting at the end
closest to the block (since lists are in Ham order). This should
reduce CPU usage for large caches.

Download:
https://sourceforge.net/project/showfil ... p_id=96735

Reality81

#22 Post by Reality81 »

OFF Version 0.18.02 für Linux, Windows & Mac

Changes:
0.18.02

Fixed bug where download traffic counts were not updated.

Added blocks that fail to load for pushes to the list of
"suspect" blocks for later checking. (See changelog 0.17.09)

Removed "Old GUI Style" option due it it being both unstable and
unused. This also tidies the gui code slightly and makes room for
future GUI styles.

Fixed bug where "Check Blockcache" did not detect blockfiles that
were missing.

Converted OFFSystem funcs ListDescriptor(), MapDescriptor() and
GenerateInsertMap() to use methods encapsulated in the OFFRetrieveData
class

Fixed memory leak when listCtrl menu tasks are launched in a new thread.

URL objects now have a dynamically allocated buffer to hold the URL
reducing RAM use.

OFFSocket objects now allocate a read/write buffer which is just large
enough to hold the message, this will hopefully reduce RAM use a fair bit.

Header and message buffers in OFFSocket are now private with access fns.

Implemented a buffer list class so that write buffers for nodelists
and srch results can be allocated dynamically, we need the class because
we do not know the length of the buffer until after we have checked the
nodelist/URL list.

Reduced CPU use when parsing srch results.

Timing columns in listctrls (Node Uptimes, URL Ages, etc) are now
updated only every 10 secs. This reduces CPU use.

Node speeds are now updated less frequently, again to reduce CPU use.

Fixed bug under Linux where the gui would unintentionally minimise
when it was shaded or the desktop was changed. Unfortunately it will
still hide to the system tray if "Minimise to Tray" is set, this seems
a bit more complicated to fix. This option may disappear soon - speak
now if you wish to keep it!

Fixed memory leak on destructor of cnxnpool read class when msgs did
not reach the processing stage.

Download:
https://sourceforge.net/project/showfil ... p_id=96735

Reality81

#23 Post by Reality81 »

OFF Version 0.18.03 für Linux, Windows & Mac

Changes:
0.18.03


Fixed bug in block cache statistics where the bucket radius could
be assigned to a value at which there were no blocks.

Reduced CPU use of calculating bucket stats on cache load.

Fixed bug where cmd line builds would shut down immediately
on the very first startup.

PoolCnxn objects now contain an OFFReadBuffer object. This is the same
object that was created for the ping (incoming or outgoing) from which
the pool cnxn was established. This fixes a bug that could cause network
msgs to be occasionally lost or corrupted and significantly reduces
the number of OFFReadBuffer objects created and destroyed during normal
operation.

Fixed bug where dl speeds would occasionally freeze on a finite value
when no blocks were being obtained.

Fixed memory corruption bug (crasher) in OFFSocket read/write buffers.

Fixed memory leak of download blk req updates on shutdown.



OFF Version 0.18.04 für Linux, Windows & Mac

Changes:
0.18.04

Fixed bug that caused mis-identification of nodes in headless builds.

Fixed crasher in command line history.

Fixed bug in updating details of offline nodes from nodelists. This could
result in IP changes not being propagated to other nodes.

There are now three options for GUI updates from the Autopilot menu.
"Minimal" is the same as checking the Minimal GUI Updates box in previous
versions. "Normal" has updates GUI items as in v0.18.02 and later.
"Fast" updates GUI items as in pre-v0.18.02 clients and is recommended
only for those with CPU cycles to spare.

Fixed bug in calculation of hashmap daisychaining where another hashmap
block would be created if the end of the hashmap fell inside the daisy chain
tuple.

Fixed similar bug in descriptor block daisychaining which caused crashes
if files of certain sizes where stored.

Fixed bug where daisychained hashmap tuples were not included in
a Map of the insert. This would result in the insert being flagged
as incomplete even if all the blocks were local.

Fixed similar bug where daisychained hashmap tuples were not displayed
when an insert was listed.

Fixed similar bug where daisychained hashmap tuples were not distributed.

Primary and secondary (relayed) srches no longer have separate id integers.
(So panic not if your first srch has srch number 157.)

Implemented inheritance for primary and secondary srchs which now both
inherit a base class. GUI interaction methods are restricted to user-initiated
srches.

Srch results in the global list now keep a record of which srches own them.

The global srch results list no longer uses an update method for adding
and removing entries, rather, it is mutex locked and threads operate on
the list directly.

Secondary srch objects no longer keep a list of their results, relying
instead on the owner information in the global srch result list. In tests
with 50 relayed srches, this change typically removed around 10M from
the RAM usage of the OFF process.

The global srch results are now organised into 256 lists based on the
first byte of the file hash.

STL string class is now used to make nodelist and srch result msgs.

Fixed display of URLs with filenames encoded with ISO8859_1, these filenames
used to appear blank under Linux.

Fixed copy to clipboard for URLs with filenames encoded with ISO8859_1.

Fixed memory "issue" with srch records, not so much a leak per se, but could
cause gradually increasing memory use.

Moved popup menu functionality from the ListCtrlBase class to it's
varous derived classes.

wxGTK seems to leak memory prodigously when wxMenu objects are created
and destroyed, hence these are no longer made on the fly. The derived
list control classes hold a ptr to their popup menus and only re-create them
when the GUI mode is changed.

Moved MenuEvent functionality from the ListCtrlBase class to it's
varous derived classes.

Events are no longer posted from the display timer, the timer event can
perform its tasks directly.

Fixed a bug in the bandwidth history graph that used too much memory
by a couple of MB.

wxListItem creations also seem to leak memory so most operations using
this class are done with a static object which is a protected member of
ListCtrlBase. Some non-trivial operations (mostly user-initiated) still
create instances of this class - these will be cleaned up later.

Some semantic changes in the gui labels:
Options Tab, Local Node:
"Local Browser Access" replaces "Return link content to browser"
"Remote Browser Access" replaces "Allow remote browsers to retrieve content"
more labels will likely change in the next version or two.

Download:
http://offsystem.sourceforge.net/download.html

Reality81

#24 Post by Reality81 »

OFF Version 0.18.03 für Linux, Windows & Mac

Changes:
0.18.03


Fixed bug in block cache statistics where the bucket radius could
be assigned to a value at which there were no blocks.

Reduced CPU use of calculating bucket stats on cache load.

Fixed bug where cmd line builds would shut down immediately
on the very first startup.

PoolCnxn objects now contain an OFFReadBuffer object. This is the same
object that was created for the ping (incoming or outgoing) from which
the pool cnxn was established. This fixes a bug that could cause network
msgs to be occasionally lost or corrupted and significantly reduces
the number of OFFReadBuffer objects created and destroyed during normal
operation.

Fixed bug where dl speeds would occasionally freeze on a finite value
when no blocks were being obtained.

Fixed memory corruption bug (crasher) in OFFSocket read/write buffers.

Fixed memory leak of download blk req updates on shutdown.



OFF Version 0.18.04 für Linux, Windows & Mac

Changes:
0.18.04

Fixed bug that caused mis-identification of nodes in headless builds.

Fixed crasher in command line history.

Fixed bug in updating details of offline nodes from nodelists. This could
result in IP changes not being propagated to other nodes.

There are now three options for GUI updates from the Autopilot menu.
"Minimal" is the same as checking the Minimal GUI Updates box in previous
versions. "Normal" has updates GUI items as in v0.18.02 and later.
"Fast" updates GUI items as in pre-v0.18.02 clients and is recommended
only for those with CPU cycles to spare.

Fixed bug in calculation of hashmap daisychaining where another hashmap
block would be created if the end of the hashmap fell inside the daisy chain
tuple.

Fixed similar bug in descriptor block daisychaining which caused crashes
if files of certain sizes where stored.

Fixed bug where daisychained hashmap tuples were not included in
a Map of the insert. This would result in the insert being flagged
as incomplete even if all the blocks were local.

Fixed similar bug where daisychained hashmap tuples were not displayed
when an insert was listed.

Fixed similar bug where daisychained hashmap tuples were not distributed.

Primary and secondary (relayed) srches no longer have separate id integers.
(So panic not if your first srch has srch number 157.)

Implemented inheritance for primary and secondary srchs which now both
inherit a base class. GUI interaction methods are restricted to user-initiated
srches.

Srch results in the global list now keep a record of which srches own them.

The global srch results list no longer uses an update method for adding
and removing entries, rather, it is mutex locked and threads operate on
the list directly.

Secondary srch objects no longer keep a list of their results, relying
instead on the owner information in the global srch result list. In tests
with 50 relayed srches, this change typically removed around 10M from
the RAM usage of the OFF process.

The global srch results are now organised into 256 lists based on the
first byte of the file hash.

STL string class is now used to make nodelist and srch result msgs.

Fixed display of URLs with filenames encoded with ISO8859_1, these filenames
used to appear blank under Linux.

Fixed copy to clipboard for URLs with filenames encoded with ISO8859_1.

Fixed memory "issue" with srch records, not so much a leak per se, but could
cause gradually increasing memory use.

Moved popup menu functionality from the ListCtrlBase class to it's
varous derived classes.

wxGTK seems to leak memory prodigously when wxMenu objects are created
and destroyed, hence these are no longer made on the fly. The derived
list control classes hold a ptr to their popup menus and only re-create them
when the GUI mode is changed.

Moved MenuEvent functionality from the ListCtrlBase class to it's
varous derived classes.

Events are no longer posted from the display timer, the timer event can
perform its tasks directly.

Fixed a bug in the bandwidth history graph that used too much memory
by a couple of MB.

wxListItem creations also seem to leak memory so most operations using
this class are done with a static object which is a protected member of
ListCtrlBase. Some non-trivial operations (mostly user-initiated) still
create instances of this class - these will be cleaned up later.

Some semantic changes in the gui labels:
Options Tab, Local Node:
"Local Browser Access" replaces "Return link content to browser"
"Remote Browser Access" replaces "Allow remote browsers to retrieve content"
more labels will likely change in the next version or two.

Download:
http://offsystem.sourceforge.net/download.html

Reality81

#25 Post by Reality81 »

OFF Version 0.18.03 für Linux, Windows & Mac

Changes:
0.18.03


Fixed bug in block cache statistics where the bucket radius could
be assigned to a value at which there were no blocks.

Reduced CPU use of calculating bucket stats on cache load.

Fixed bug where cmd line builds would shut down immediately
on the very first startup.

PoolCnxn objects now contain an OFFReadBuffer object. This is the same
object that was created for the ping (incoming or outgoing) from which
the pool cnxn was established. This fixes a bug that could cause network
msgs to be occasionally lost or corrupted and significantly reduces
the number of OFFReadBuffer objects created and destroyed during normal
operation.

Fixed bug where dl speeds would occasionally freeze on a finite value
when no blocks were being obtained.

Fixed memory corruption bug (crasher) in OFFSocket read/write buffers.

Fixed memory leak of download blk req updates on shutdown.



OFF Version 0.18.04 für Linux, Windows & Mac

Changes:
0.18.04

Fixed bug that caused mis-identification of nodes in headless builds.

Fixed crasher in command line history.

Fixed bug in updating details of offline nodes from nodelists. This could
result in IP changes not being propagated to other nodes.

There are now three options for GUI updates from the Autopilot menu.
"Minimal" is the same as checking the Minimal GUI Updates box in previous
versions. "Normal" has updates GUI items as in v0.18.02 and later.
"Fast" updates GUI items as in pre-v0.18.02 clients and is recommended
only for those with CPU cycles to spare.

Fixed bug in calculation of hashmap daisychaining where another hashmap
block would be created if the end of the hashmap fell inside the daisy chain
tuple.

Fixed similar bug in descriptor block daisychaining which caused crashes
if files of certain sizes where stored.

Fixed bug where daisychained hashmap tuples were not included in
a Map of the insert. This would result in the insert being flagged
as incomplete even if all the blocks were local.

Fixed similar bug where daisychained hashmap tuples were not displayed
when an insert was listed.

Fixed similar bug where daisychained hashmap tuples were not distributed.

Primary and secondary (relayed) srches no longer have separate id integers.
(So panic not if your first srch has srch number 157.)

Implemented inheritance for primary and secondary srchs which now both
inherit a base class. GUI interaction methods are restricted to user-initiated
srches.

Srch results in the global list now keep a record of which srches own them.

The global srch results list no longer uses an update method for adding
and removing entries, rather, it is mutex locked and threads operate on
the list directly.

Secondary srch objects no longer keep a list of their results, relying
instead on the owner information in the global srch result list. In tests
with 50 relayed srches, this change typically removed around 10M from
the RAM usage of the OFF process.

The global srch results are now organised into 256 lists based on the
first byte of the file hash.

STL string class is now used to make nodelist and srch result msgs.

Fixed display of URLs with filenames encoded with ISO8859_1, these filenames
used to appear blank under Linux.

Fixed copy to clipboard for URLs with filenames encoded with ISO8859_1.

Fixed memory "issue" with srch records, not so much a leak per se, but could
cause gradually increasing memory use.

Moved popup menu functionality from the ListCtrlBase class to it's
varous derived classes.

wxGTK seems to leak memory prodigously when wxMenu objects are created
and destroyed, hence these are no longer made on the fly. The derived
list control classes hold a ptr to their popup menus and only re-create them
when the GUI mode is changed.

Moved MenuEvent functionality from the ListCtrlBase class to it's
varous derived classes.

Events are no longer posted from the display timer, the timer event can
perform its tasks directly.

Fixed a bug in the bandwidth history graph that used too much memory
by a couple of MB.

wxListItem creations also seem to leak memory so most operations using
this class are done with a static object which is a protected member of
ListCtrlBase. Some non-trivial operations (mostly user-initiated) still
create instances of this class - these will be cleaned up later.

Some semantic changes in the gui labels:
Options Tab, Local Node:
"Local Browser Access" replaces "Return link content to browser"
"Remote Browser Access" replaces "Allow remote browsers to retrieve content"
more labels will likely change in the next version or two.

Download:
http://offsystem.sourceforge.net/download.html

Reality81

#26 Post by Reality81 »

OFF Version 0.18.03 für Linux, Windows & Mac

Changes:
0.18.03


Fixed bug in block cache statistics where the bucket radius could
be assigned to a value at which there were no blocks.

Reduced CPU use of calculating bucket stats on cache load.

Fixed bug where cmd line builds would shut down immediately
on the very first startup.

PoolCnxn objects now contain an OFFReadBuffer object. This is the same
object that was created for the ping (incoming or outgoing) from which
the pool cnxn was established. This fixes a bug that could cause network
msgs to be occasionally lost or corrupted and significantly reduces
the number of OFFReadBuffer objects created and destroyed during normal
operation.

Fixed bug where dl speeds would occasionally freeze on a finite value
when no blocks were being obtained.

Fixed memory corruption bug (crasher) in OFFSocket read/write buffers.

Fixed memory leak of download blk req updates on shutdown.



OFF Version 0.18.04 für Linux, Windows & Mac

Changes:
0.18.04

Fixed bug that caused mis-identification of nodes in headless builds.

Fixed crasher in command line history.

Fixed bug in updating details of offline nodes from nodelists. This could
result in IP changes not being propagated to other nodes.

There are now three options for GUI updates from the Autopilot menu.
"Minimal" is the same as checking the Minimal GUI Updates box in previous
versions. "Normal" has updates GUI items as in v0.18.02 and later.
"Fast" updates GUI items as in pre-v0.18.02 clients and is recommended
only for those with CPU cycles to spare.

Fixed bug in calculation of hashmap daisychaining where another hashmap
block would be created if the end of the hashmap fell inside the daisy chain
tuple.

Fixed similar bug in descriptor block daisychaining which caused crashes
if files of certain sizes where stored.

Fixed bug where daisychained hashmap tuples were not included in
a Map of the insert. This would result in the insert being flagged
as incomplete even if all the blocks were local.

Fixed similar bug where daisychained hashmap tuples were not displayed
when an insert was listed.

Fixed similar bug where daisychained hashmap tuples were not distributed.

Primary and secondary (relayed) srches no longer have separate id integers.
(So panic not if your first srch has srch number 157.)

Implemented inheritance for primary and secondary srchs which now both
inherit a base class. GUI interaction methods are restricted to user-initiated
srches.

Srch results in the global list now keep a record of which srches own them.

The global srch results list no longer uses an update method for adding
and removing entries, rather, it is mutex locked and threads operate on
the list directly.

Secondary srch objects no longer keep a list of their results, relying
instead on the owner information in the global srch result list. In tests
with 50 relayed srches, this change typically removed around 10M from
the RAM usage of the OFF process.

The global srch results are now organised into 256 lists based on the
first byte of the file hash.

STL string class is now used to make nodelist and srch result msgs.

Fixed display of URLs with filenames encoded with ISO8859_1, these filenames
used to appear blank under Linux.

Fixed copy to clipboard for URLs with filenames encoded with ISO8859_1.

Fixed memory "issue" with srch records, not so much a leak per se, but could
cause gradually increasing memory use.

Moved popup menu functionality from the ListCtrlBase class to it's
varous derived classes.

wxGTK seems to leak memory prodigously when wxMenu objects are created
and destroyed, hence these are no longer made on the fly. The derived
list control classes hold a ptr to their popup menus and only re-create them
when the GUI mode is changed.

Moved MenuEvent functionality from the ListCtrlBase class to it's
varous derived classes.

Events are no longer posted from the display timer, the timer event can
perform its tasks directly.

Fixed a bug in the bandwidth history graph that used too much memory
by a couple of MB.

wxListItem creations also seem to leak memory so most operations using
this class are done with a static object which is a protected member of
ListCtrlBase. Some non-trivial operations (mostly user-initiated) still
create instances of this class - these will be cleaned up later.

Some semantic changes in the gui labels:
Options Tab, Local Node:
"Local Browser Access" replaces "Return link content to browser"
"Remote Browser Access" replaces "Allow remote browsers to retrieve content"
more labels will likely change in the next version or two.

Download:
http://offsystem.sourceforge.net/download.html

Reality81

#27 Post by Reality81 »

OFF Version 0.18.03 für Linux, Windows & Mac

Changes:
0.18.03


Fixed bug in block cache statistics where the bucket radius could
be assigned to a value at which there were no blocks.

Reduced CPU use of calculating bucket stats on cache load.

Fixed bug where cmd line builds would shut down immediately
on the very first startup.

PoolCnxn objects now contain an OFFReadBuffer object. This is the same
object that was created for the ping (incoming or outgoing) from which
the pool cnxn was established. This fixes a bug that could cause network
msgs to be occasionally lost or corrupted and significantly reduces
the number of OFFReadBuffer objects created and destroyed during normal
operation.

Fixed bug where dl speeds would occasionally freeze on a finite value
when no blocks were being obtained.

Fixed memory corruption bug (crasher) in OFFSocket read/write buffers.

Fixed memory leak of download blk req updates on shutdown.l

Reality81

#28 Post by Reality81 »

Aktuellste OFF Version

Changes:
0.18.04


Fixed bug that caused mis-identification of nodes in headless builds.

Fixed crasher in command line history.

Fixed bug in updating details of offline nodes from nodelists. This could
result in IP changes not being propagated to other nodes.

There are now three options for GUI updates from the Autopilot menu.
"Minimal" is the same as checking the Minimal GUI Updates box in previous
versions. "Normal" has updates GUI items as in v0.18.02 and later.
"Fast" updates GUI items as in pre-v0.18.02 clients and is recommended
only for those with CPU cycles to spare.

Fixed bug in calculation of hashmap daisychaining where another hashmap
block would be created if the end of the hashmap fell inside the daisy chain
tuple.

Fixed similar bug in descriptor block daisychaining which caused crashes
if files of certain sizes where stored.

Fixed bug where daisychained hashmap tuples were not included in
a Map of the insert. This would result in the insert being flagged
as incomplete even if all the blocks were local.

Fixed similar bug where daisychained hashmap tuples were not displayed
when an insert was listed.

Fixed similar bug where daisychained hashmap tuples were not distributed.

Primary and secondary (relayed) srches no longer have separate id integers.
(So panic not if your first srch has srch number 157.)

Implemented inheritance for primary and secondary srchs which now both
inherit a base class. GUI interaction methods are restricted to user-initiated
srches.

Srch results in the global list now keep a record of which srches own them.

The global srch results list no longer uses an update method for adding
and removing entries, rather, it is mutex locked and threads operate on
the list directly.

Secondary srch objects no longer keep a list of their results, relying
instead on the owner information in the global srch result list. In tests
with 50 relayed srches, this change typically removed around 10M from
the RAM usage of the OFF process.

The global srch results are now organised into 256 lists based on the
first byte of the file hash.

STL string class is now used to make nodelist and srch result msgs.

Fixed display of URLs with filenames encoded with ISO8859_1, these filenames
used to appear blank under Linux.

Fixed copy to clipboard for URLs with filenames encoded with ISO8859_1.

Fixed memory "issue" with srch records, not so much a leak per se, but could
cause gradually increasing memory use.

Moved popup menu functionality from the ListCtrlBase class to it's
varous derived classes.

wxGTK seems to leak memory prodigously when wxMenu objects are created
and destroyed, hence these are no longer made on the fly. The derived
list control classes hold a ptr to their popup menus and only re-create them
when the GUI mode is changed.

Moved MenuEvent functionality from the ListCtrlBase class to it's
varous derived classes.

Events are no longer posted from the display timer, the timer event can
perform its tasks directly.

Fixed a bug in the bandwidth history graph that used too much memory
by a couple of MB.

wxListItem creations also seem to leak memory so most operations using
this class are done with a static object which is a protected member of
ListCtrlBase. Some non-trivial operations (mostly user-initiated) still
create instances of this class - these will be cleaned up later.

Some semantic changes in the gui labels:
Options Tab, Local Node:
"Local Browser Access" replaces "Return link content to browser"
"Remote Browser Access" replaces "Allow remote browsers to retrieve content"
more labels will likely change in the next version or two.



Aktuellste OFF Version

Changes:
0.18.05


Fixed minor display bug where the download progress text would appear
after the image when the style was changed from "Text".

Moved double-click functionality from the ListCtrlBase class to it's
various derived classes.

Moved drawing of download progress bars from the ListCtrlBase class to
the derived download list class.

Added an uptime command to the CLI.

Most of the remaining list specific functionality has been moved
from the ListCtrlBase class to it's various derived classes. Column
widths are still handled by the base class, except for the download
list which overrides this event due to the progress bars.

For the purposes of determining if a srch result corresponds to a local
URL, we now check only the filename and descriptor hash, since we want
degenerate URLs to be distinct srch results.

Fixed bug where some srch results taken from existing srches would
not pass through the incoming or local filters.

When a group of blocks is requested, a pointless intermediate list of
them is no longer created.

Fixed bug where a node would not be added to the list of contactable
nodes if its status changed from "firewalled (online)" to
online (pool - walled)"

Added a "headless" tag to the node version string - just so we can see
what's going on. This, along with the OS tags, will be removed at some
future date when we are more stable and less buggy.

Cleaned up the last of the wxListItem declarations.

Fixed bug where chat msgs were not displayed in headless builds.

The msg size of chunked sends is now variable, the algorithm aims
for a send time of 60 secs based on the mean pool upload speed.
The minimum chunk size is 4kB and if no speed data is available
a size of 16kB if used.


New src files added:
block_requests.cxx,
block_requests.h,
secreq_blk.h

Download:http://sourceforge.net/project/showfile ... p_id=96735

Reality81

#29 Post by Reality81 »

Mittlerweile ist die OFF Version 0.18.11 verfügbar. Ich habe mal alle Changes der Versionen bis zu aktuellen aufgelistet.

Changes:
0.18.05

Fixed minor display bug where the download progress text would appear
after the image when the style was changed from "Text".

Moved double-click functionality from the ListCtrlBase class to it's
various derived classes.

Moved drawing of download progress bars from the ListCtrlBase class to
the derived download list class.

Added an uptime command to the CLI.

Most of the remaining list specific functionality has been moved
from the ListCtrlBase class to it's various derived classes. Column
widths are still handled by the base class, except for the download
list which overrides this event due to the progress bars.

For the purposes of determining if a srch result corresponds to a local
URL, we now check only the filename and descriptor hash, since we want
degenerate URLs to be distinct srch results.

Fixed bug where some srch results taken from existing srches would
not pass through the incoming or local filters.

When a group of blocks is requested, a pointless intermediate list of
them is no longer created.

Fixed bug where a node would not be added to the list of contactable
nodes if its status changed from "firewalled (online)" to
online (pool - walled)"

Added a "headless" tag to the node version string - just so we can see
what's going on. This, along with the OS tags, will be removed at some
future date when we are more stable and less buggy.

Cleaned up the last of the wxListItem declarations.

Fixed bug where chat msgs were not displayed in headless builds.

The msg size of chunked sends is now variable, the algorithm aims
for a send time of 60 secs based on the mean pool upload speed.
The minimum chunk size is 4kB and if no speed data is available
a size of 16kB if used.

Changes:
0.18.06

The single instance check in release versions can by disabled by
placing a flag file, "bypass_single_instance", in OFFs working directory.

And out-of-band byte is now sent just before a pool socket is closed. This
triggers an exception at the other end which recent versions of OFF
(since 17.07) interpret as a socket error and close their end too.

Restructured the common controls between the options tabs and the options
tree into a class which is inherited by the main panel and the preferences
window. This removes a lot of repeated declarations and methods.

Fixed minor bug in the URLs context menu where Preserve/Unpreserve were
displayed the wrong way round.

Encapsulated the bandwidth and statistics controls into a class
which is inherited by the main panel.

NON-RELEASE BUILDS ONLY: Encapsulated the various debug displays and
controls into a class which is inherited by the main panel.

The Autostore will now pick up the distribute flag from the store options
and distribute the inserts it creates if the flag is set.

Fixed bug in variable msg chunk sizes that could occasionally cause
msg overruns (but not buffer overruns, I hasten to add!).

Added a checkbox to Options->Local Node to suppress error log msgs,
(in release builds these are only shown in verbose mode anyway, in
non-release builds the msgs will not be shown if suppressed but they
will still be written to off.log).

Dispersal (see below) of new inserts is now the default setting.

When a new block is added to the bucket as a result of download, store,
seed or import, a push is now scheduled for any existing block that is
displaced from the bucket. (iv)

We now only refuse block pushes if the block ham is greater than our
bucket radius. Previously, we would refuse if the local ham was greater
than the remote ham. (iii)

We now only push a block to a node if the block is inside that nodes
bucket, regardless of whether the push is upstream or not. We still
check nodes for pushes in Ham order, but for previous versions we stop
at the local Ham since they will refuse such pushes. (iii)

A block is now requested from a node only if it should be in their
bucket, or it should be in ours. (i)

We now determine whether a block should be on our node based on whether
it should be in our bucket, not by comparing the block hash with the
online nodes.

Requests for home blocks can now become normal requests if the bucket
radius shrinks past their ham.

When determining if a block is in our bucket we also use a maximum
effective bucket radius. This is because the radius of the bucket before
it is full is just that of the outside block in the bucket. This value
is currently constant at 80, but may later become dynamic based on the
number of online nodes (maxing at 80).

Fixed memory leak of gui log messages and similar updates in Daemon Mode.

Fixed bug that would cause some requested blocks to "stall" after a single
request.

The ancient code that pinged online non-pool nodes every hour has been removed.

Pruning old offline nodes no longer needs to make a copy of the nodelist.

Sending close msgs on shutdown no longer needs to make a copy of the nodelist.

Implemented a fallback mechanism for blocks that fall between buckets,
in this case the best nodes seek them and others as the best nodes.
Similar to before, but tidier.

Semantic changes in the gui labels:
Global:
The term "Distribute" is replaced with "Disperse" (though "Distributed
Store" in dev mode, remains.)

New src files added:
block_requests.cxx,
block_requests.h,
secreq_blk.h

Changes:
0.18.07

Fixed bug from last version where pruning nodes can result in ghost
entries in the nodes tab.

Downloading blocks from a current download can now detect when the
download has been cancelled, this should prevent downloads hanging
around "behind the scenes" for a while after a cancel.

CRITICAL: fixed broken disperse from last version.

Fixed bug that caused multiple entries for the same URL in the srch
results when it was recieved from several different nodes.

An abortive SrchResult object is no longer created when a colliding
srch result is found.

Changes:
0.18.08

When an insert is listed to a file the blocks are no longer printed
to the log box. This will be more useful for large inserts.

Fixed bug where old unclaimed channel msgs which have not been dropped
yet could be confused with replies to a current cnxn. An OFFSocket will
now only accept replies that arrived its creation.

When the CMI prevent access flag is set on a URL the FOOLU form is now
returned to the browser before adding a download.

Browser pages for the web interface are not created using the STL string class.

Changes:
0.18.09

The header is now checked for unprintable characters while
it is being read, instead of waiting for a scan failure later.

Incoming headers are now stored in an STL string object prior to parsing.

When nodes are offline for longer than the lifetime we now only prune them
if their offline time exceeds the total time we have seen them online.
This means we can set the lifetime to a shorter value while retaining
those permanent nodes that happen to be down for a while.xs

Asynchronous reads and writes now have a variable increment size.
This currently only depends on the number of active sockets and
the available data to write from the bandwidth limits, but later
may depend on some measure of the read/write speed to each node.

Fixed bug where listen port changes would not be picked up by other
nodes unless the node which changed port was offline.

Fixed bug where node details would not be updated correctly for
non-pool nodes.

Socket reads, writes and listens are now handled by the ACH thread.
Their threads have been removed. The ACH thread can now read and write
until one finishes and then check to see which it was and handle
the cnxns as usual. This should enable a number of simplifications in
the operation of the network core.

Fixed bug where consecutive arriving pool msgs could be flagged with
the wrong bandwidth type.

All updates to the cnxn pool list now happen directly instead of using
an update list.

The pool cnxn cancel flag list is no longer needed and has been removed.

HTTP header and web page functionality has been excised from the
(somewhat cancerous) OFFSocket class an excapsulated in the OFFHTTP
class, which is now inherited by OFFSocket.

NON-RELEASE BUILDS ONLY: Encapsulated the socket history functions
into a class which is inherited by OFFHTTP and hence OFFSocket.

Arriving reply msgs on pool cnxns can now be added directly to the
top-level socket that is waiting for them, obviating the need for
for an intermediate list of messages.

Top-level sockets waiting for a pool msg can now query the cnxnpool
to check if the msg they want is actually arriving or not. This should
stop false timeouts on very slow reads from asynchronous sockets.

When a block request is relayed we now only check to see if we are
in that region of Ham space if i) the block is not in our bucket, and
ii) we cannot find another bucket for that block. The same goes for
requests from our downloads.

When we receive a request for a block we don't have, we now return
a list of nodes whose buckets should contain that block, instead of
just a list of nodes downstream from both us and the requester.

We no longer check that nodes received in reply to a failed blk req are
down stream, since the bucket nodes may not be.

Since relayed blk reqs are now mainly bucket blocks, they are no longer
subject to a lower priority than reqs from downloads.

Block requests are now divided more evenly between downloads by finding
the max number of block requests in each iteration based on the max blk
requests per connection, the number of downloads and the number of
available nodes.

New blk requests are only scheduled to a node when there are no current
reqs to that node, as opposed to on a per-node-per-download basis as before.
Also, the download manager nodelist now has a "req in progress" flag
for each node, so we don't have to query the current block requests to
detemine if we can make new requests from a node.

Block request objects (SecReq) no longer need to contain a Node object.

Individual block requests (sr_blk_info) no longer need to contain a
ptr to the download they are from, this ptr was used to assign speeds
to downloads. The relevant ptr is now looked up when a block result hdr
is read. This allows the download cancel process, among other things, to
be simplified considerably.

New src files added:
offnetwork_http.cxx,
offnetwork_http.h,
offmessage_tags.cxx

Changes:
0.18.10

CRITICAL: fixed mutex deadlock in clearing idle firewalled nodes.

Changes:
0.18.11

Many updates to the pool_cnxn nodes and download manager list
of working nodes no longer need to make a copy of the node struct.

Removed mutex locks from pool cnxn read/write busy flags.

Most user initiated node tasks are now scheduled and performed by
the ACH thread, this will generally mean a fraction of a second delay
when, say, trusting a node - but hopefully nothing intolerable. This
is a precursor to restricting nodelist access to the ACH thread and
unmutexing the list.

Created a LocalNode class which will encapsulate information about
the running instance of OFF, rather than having this info floating about
as global variables or squatting in unrelated classes. Variables will
gradually move into this class over time.

Writing data to the local browser now bypasses all bandwidth management,
and the data from two file tuples is sent in each iteration. This seems
to make video playback direct from OFF much smoother.

The block cache now writes a flag file when it changes, the file
is removed when the cache database is saved. On restart, the cache is checked
only if the flag file is found, meaning the last shutdown was probably
not clean. This should help with the long startup times reported for
large caches. NOTE: Please ensure your old version shuts down cleanly
before upgrading to this or later versions, because (obviously) there
will be no flag file to trigger the check.

Fixed file send which broke when the listctrls were restructured.

Fixed bug in 09 channel msg code that could occasionally cause lost msgs.

Changed the default value of "max simultaneous pings" to 5 as the previous
value of 20 was reported to cause network slowing on some systems.

A block will now be pushed even if the pushing node is the closest known
node to that block, previously, we would not push such blocks. This is the
beginning of the "drive-by" store. The only blocks which will not be pushed
are those for which we cannot find a bucket.

Pushes from trims and dispersal are now pushed to 3 nodes instead of just
one, as are those pushes we schedule if we decide not to return a block
that is actually local - which is not currently done.

Non-bucket blocks will now bleed out as pushes one at a time, a "bleed push"
will only be scheduled if the push list is currently empty so all other
types of push will take priority. The bleed pushes are taken from the
cache, the furthest unpushed block from each of the 256 lists, so they
occur in reverse Ham order from the local node. Bleed pushes go to 3 nodes.
When a block is pushed by anything other than an onward push, a flag is set
in the main cache so that that block is not bleed pushed. Other push types
currently ignore this flag.

Refactored block request code to reflect recent (and not-so-recent) thread
structure changes. Block requests from different downloads are now merged
before the creation of request objects, not after, and flood requests
for home blocks now happen in a saner fashion. Allocation of download slots
to requests is now handled by the download manager, which keeps a pending list
of requests until there are slots available and only checks for new requests
when this list is empty. There is no longer an intermediate list of requests
to be merged, requests are activated on allocation of a download slot. This
reduces the RAM and CPU use of downloads significantly.


New src files added:
offlocalnode.cxx,
offlocalnode.h,

Download der aktuellen Version 0.18.11

https://sourceforge.net/project/showfil ... p_id=96735

Reality81

#30 Post by Reality81 »

Mittlerweile ist die OFF Version 0.18.14 verfügbar. Ich habe wieder alle Changes der Versionen bis zu aktuellen aufgelistet.

Changes:
0.18.12

Download preview is now greyed out if the descriptors are not yet present.

Block request records are now stored in an STL map class instead of
a hand-rolled linked list.

When a pool cnxn is deleted, any current reads from that cnxn
are manually cancelled instead of waiting for the error handler
to pick it up. This seems to fix an occasional crasher.

Relayed block reqs now time out after their first request round.
This should speed up the turnover of the relayed reqs and allow
more accessible blocks to get home.

The bucket radius should now be more responsive to manual changes
in the bucket size.

Fixed bug in preferences dialog where the browse buttons for the
retrieve and autostore dirs would update the paths immediately
instead of waiting for Apply/OK and also would update only the
config tabs text boxes.

URLs can now be copied to the clipboard from the downloads tab.

Blocks no longer keep a record of their local age, this saves roughly 10%
on the RAM use of the cache database and provides a little extra security.

Implemented a pointer map class (PtrMap) which encapsulates the STL map
class for pointers using an integer key. This will be used to increase
the lookup speed for various core data structures which are accessed
via an ID integer. Currently uses void pointers, could become a
template class once I get smart enough.

Ptrs to nodes in the main nodelist are now stored in a PtrMap object
in addition to the actual linked list (since the list is maintained
in Ham order and STL map has it's own internal ordering).

Bandwidth sums for nodes are now kept in a PtrMap class, this is the only
container for these objects. The mutex lock on the node bandwidth sums
has been removed as all access is now by the ACH thread.

Downloads are now maintained in priority order, this means the download
manager will attend to higher priority downloads first. Priority is
determined firstly by the manual priority set by the user in the download
list and then by the number of needed blocks, with downloads requiring
fewer blocks getting higher priority (this will pick out those dls
requiring descriptors and with only a few blocks left to obtain). This
ordering may not make that much difference right now, but is a precursor to
altering the dl algorithms so that is does!)

Pointers to downloads are now also stored in a PtrMap class, in addition
to the linked list which is now maintained in priority order.

Fixed bug where the empty nodelist dialog would open falsely on first
startup because the ACH thread had not gotten around to adding the nodes
from the initial URLs yet.

Changes:
0.18.13

Pointers to Local URLs as now stored in a PtrMap object in addition
to the linked list.

The cnxn list in OFFCnxnPool is now held in a PtrMap class. Since there
is no need to put the list in any specific order, this is the only
container for the cnxn objects.

The TempNodeList class now contains a PtrMap to speed up lookups
by the node rank.

Individual node slots in the NodeCache class now use a PtrMap. These
are pretty old and may no longer be needed, but some testing with non-pool
cnxns is needed before they can be removed.

We now keep a record of the number of blocks recieved from each node
and the total time taken to receive them. This will give us an estimate
of the the mean time taken for each node to return a block which will
later be used (amongst other info) to decide things like whether to
push a block to this node. The mean return time is shown in a new column
in the known nodes tab.

When a node refuses a push we node check that the block should be in
their bucket, instead of whether the push is downstream) before
complaining (and maybe later, punishing them).

If a node refuses a push we now wait for a short period (currently
5 minutes) before trying to push a block to them again.

For onward pushes we node consider the first few (currently 3) claims
that the block is local to be push failures, after that we consider
a local message to be a success. This should ensure that onward pushes
do not just check the best node (which hopefully has the block) and give up.

Fixed bug where Lists and Maps of inserts would not check to see if the
initial descriptor blocks were present before trying to load the descriptor.

Fixed bad memory read in the pushed block count which should now stay
positive.

Implemented a pointer map class (PtrMapH) which encapsulates the STL map
class for pointers using a binary hash key. Usage will be similar to
PtrMap.

The known nodes list in NodeCache and the list in TempNodeList now use
a PtrMapH class to speed up lookups based on the node ID.

Requested blocks in Download objects are now contained in a PtrMapH object.
In addition to speeding up lookups this means we can get rid of the
round-the-houses method of informing a Download that a block has arrived
which *should* fix some of the incorrect progress display bugs. This
does have the disadvantage that blocks will no longer be requested
in random order, but rather, the order determined in the std::map by
calling memcmp() on the binary hashes.

Global block requests (mainly relayed reqs) are now contained in a
PtrMapH object.

Lists of two-way block requests to firewalled nodes now use the
sr_blk_info object instead of req_blk_info, which is a larger and
more complex class.

We can now request blocks from downloads in two-way reqs to firewalled
nodes again. The algorithm just picks first 5 blocks from each download
that is in either bucket and a further 5 from the relayed reqs. The reqs
use a bean count similar to direct block requests, but rely on the
BlockRequester object to actually increment the individual block counts.
This would only cause a problem if a node was connected to only non-pool
firewalled nodes (which is hopefully a highly artificial situation).

The req_blk_info no longer contains the list ptrs, next and last, as it
is exclusively contained in PtrMapH objects now.

PtrMapH now uses the existing block_name class as a key instead of the new
hash_key class which will probably soon vanish.

When comparing HamDists with block bucket radii we now only consider the
ham to be inside the bucket if it is less than the radius (previously
we considered the ham in the bucket if it was equal to the radius).

Fixed memory leak in delayed blk reqs in the DownloadManager.

Counts of downloads and local URLs are now shown in the panel title.

Fixed bug where download progress would be shown incorrectly if the
program was restarted when some but not all of the descriptors were
present.

Implemented a PtrMapH object to count the missing blocks when a URL
is mapped - the completion from mapping should now match that from
a download... unless not all the descriptors and hashmap blocks are
present, in this case the URL map is more correct in that it will
count (and preserve) any local file blocks it finds in the descriptors
it can derive. The download will not pay any attention to file blocks
unless it can get all the descriptors and hashmap blocks.

Fixed bug where download speeds would be assigned to the global block
speed for non-pool cnxns - this broke when we removed direct ptrs to
the download object from block requests a couple of versions back.

Fixed bug where a map would assume the daisy chained descriptor tuples were
local resulting in a false "missing block" error.

Changes:
0.18.14

Toggle listctrl lines from the view menu caused a crash under GTK, the
wxw listcrtl sample seemed to have similar problems so the option is
disabled under linux for now.

Implemented a PtrMultimapH class which is similar to PtrMapH but allows
colliding hash keys.

The global srch results are now contained in a PtrMultiMapH object instead
of a linked list. The filehash is used as the map key.

Fixed bug where a paused download would not really be destroyed if cancelled
and would reappear on restart.

Search results for primary (user) srches are now stored in a PtrMultimapH
object. These use the first descriptor hash as a key - may change to the
filehash later.

Each local URL now has an entry in the global srch results list, this means
we don't need to access the local URLs whenever we receive a srch request
and the local urls can be looked up in the same map as the srch results.
However it does mean that list list needs to be kept updated as to the
protected and searchable status of the locals.

Srch records are now stored in PtrMap classes.

Srch result owner ids are now held in an std::set<int> instead of a
linked list.

Fixed another bug that could prevent download blocks being preserved when
the first hashmap tuple was missing.

Fixed occasional crasher in mapping of concatenated inserts.

CRITICAL: fixed crasher that affected only release builds with verbose
mode on. Many thanks go to the user who put several hours effort into
helping us find this shallow, yet hard to spot, bug.

Downloads where corruption is detected in the descriptor hash will
now be suspended with a warning in the status column. We'll handle this
more intelligently later.

New src files added:
ptr_map.cxx,
ptr_map.h (actually a version or two ago)

Download der aktuellen Version 0.18.13
https://sourceforge.net/project/showfil ... p_id=96735

Post Reply