Portable RetroShare Changelog

What's new in Portable RetroShare 0.6.6

Apr 12, 2021
  • This release took even more time than the previous ones. This is for one simple reason: we changed lots of core features of the software (e.g. token system, notifications, etc), which had us re-implement some GUI parts taking the opportunity to make them more efficient or re-designed to a better layout (e.g. channels, boards). In the end, lots of bugs have been introduced in the process and it took some time to reach a perfectly stable product again. While we decided to stop developing new features in November 2020, it took us 4 months to fix all the bugs, mostly thanks to a really good user-feedback. As you will see, it was totally worth it.
  • New channel and board layouts:
  • Channels benefit from a new layout that is more suitable to their usage. Two different visualization modes are possible (top right blue button, left to the search field): grid or list. Use the double image below to compare both views
  • Both in channels or boards, the new visualization system is now based on an abstract item model (instead of manually inserted items as it was in v0.6.5) making it much faster to load and offering a lot more possibilities for how to display the information.
  • Short certificates:
  • Up to v0.6.5, Retroshare used certificates containing the SSL id, the PGP public key and naming information. It appears that we can afford to only send the PGP fingerprint instead of the full key, without losing any security.
  • Full certificate (old method, a.k.a. type-1):
  • SSL handshake <= certificate PGP signature <= profile being listed as friend.
  • Short certificate (new method, a.k.a. type-2):
  • SSL handshake <= SSL Id listed as friend
  • In both cases the handshake is eventually validated by information provided by your friend using a supposedly secure transmission (hand-to-hand, encrypted email, etc). This part of the security model is still up to the user.
  • Once a node is connected, it will supply its own PGP key using discovery (as before), which will be checked to match the fingerprint in the certificate and then be marked to be used in type-1 handshake later on for future connections. The new handshake type is indeed only used at the first connection. Whatever happens wrong in the process (mismatch profile keys fingerprint, mismatched SSL id) will prevent further connections.
  • The security model of Retroshare connections is based on the fact that the original certificate you get comes from the right person. It can be the SSL id (new type) or the profile public key (old type): the security level is the same. If you trust the SSL id, then any information received after connecting to this Id can be trusted as well, which includes the profile public key. Once the profile key is received, all connections (including to other nodes of the same profile) will be validated by the same profile key.
  • The new home page therefore displays a much shorter certificate, which happens to be small enough to e.g. fit into a QR-code, since it only contains the node and profile names, the SSL Id and profile fingerprint, and the contact local/external IPs and ports (for clear nodes):
  • With Tor nodes, the certificate may be a bit longer since the Tor v3 onion address is rather longer (56 bytes) than the PGP fingerprint (20 bytes).
  • Compatibility with Tor v3:
  • Retroshare v0.6.6 supports Tor v3 keys. The change is backward compatible: new Tor v3 nodes will connect to 0.6.5 nodes without any change, provided that the 0.6.5 node you’re connected to uses a version of Tor that supports v3 keys too, which means posterior to v0.3.2.9.
  • Tor nodes have never been easier to setup: at the node creation time, select “Hidden node over Tor” instead of “Standard node”, and fill your profile name and password. Retroshare will automatically create a hidden service for you and configure itself to use it (as soon as Tor is installed in the system – retroshare only looks for a Tor executable). Using Tor has many advantages:
  • Connections through firewalls are extremely reliable and fast since Tor is very hard to filter. A Tor node may therefore be a good way to keep Retroshare working in a heavily filtered network;
  • your IP is hidden to everyone including friend nodes; a lot of features related to clear nodes are not needed (IP Filters, Relay, DHT, UDP, etc) which makes the software lighter and certainly more stable.
  • Tor v2 keys will automatically deprecate after July 2021. This is not our decision: it depends on Tor stopping to support these keys. Consequently, it is recommended to upgrade your existing Tor v2 node to Tor v3. Fortunately, this is rather easy: just delete (or move away) the directory ~/.retroshare/HID06_[your SSL Id]/hidden_service/. Then start retroshare. It will automatically create a new (v3) service address. Your friends will still accept you when you connect to them (your profile key hasn’t changed). They will however not be able to locate you themselves (your Tor address has changed), until they receive your new Tor address either by discovery, or by yourself sending your certificate. This mostly happens to clear nodes for which the only direction of connection is from the clear node to the Tor node. In summary:
  • delete the hidden_service directory and re-launch Retroshare
  • send again your Retroshare certificate (See Home Page) to friend clear nodes
  • Auto-cleaning of unsubscribed channels, forums, boards and circles:
  • All GXS groups (understand e.g. a forum, a channel or even a circle or an identity) now record the last time they are advertised by friends. It is therefore possible, when a group is not subscribed, to safely delete it. The rules are the following:
  • unsubscribed forums, channels, boards are auto-deleted after 60 days if not seen at friend nodes either (meaning friends are not subscribed)
  • subscribing to a group resets the counter
  • Some services however have specific rules:
  • Identities record the last usage time that depends on how they are used by other services. The People tab comes with a list of usages, which timings correspond to regular sweeps of the databases for signature and consistency checks.
  • Circles have specific auto-subscribe rules to consistently benefit from this auto-cleaning strategy:
  • reminder: circle membership for an identity is based on two necessary conditions: (1) the identity is “invited” by the circle administrator (which is part of the group data), and (2) the identity requests membership (requests are group messages);
  • a circle is only subscribed (meaning propagated to friends) if a membership request from one of your identities is posted to it, which includes also when actively “leaving” a circle after previously being a member, or if you are the administrator of that circle.
  • circle membership requests (or leaving requests) are kept for 1 year. A membership request therefore needs to be renewed after one year.
  • In the early days of circles (previous releases) it was possible to create huge circles inviting all possible identities, which would automatically propagate everywhere. Thanks to the above rules, this is not possible anymore. Such circles that may already be here will be unsubscribed and disappear from your circle list after 60 days provided that none of your friend nodes request membership (The remaining time is visible in the tooltip over unsubscribed circles as “last seen: XX days ago”).
  • Better notifications in Circles/Channels/Forums/Boards:
  • The previously named “Log” tab is now called “Activity”. It still shows a configurable summary of events in the software (new forum messages, connection attempts, etc). We added a few of them especially for Circles:
  • Peer requesting membership or leaving a circle;
  • peer owned by your node being invited or rejected from a circle by the circle admin.
  • …and Forums: moderators added/removed
  • These notifications are now available because we added a more accurate description of the changes in group and message data in the GXS internal event handler.
  • Various GUI tweaks:
  • The list of small changes/improvements in the Qt interface is rather large. You will certainly notice the following incomplete subset:
  • A new tab for identities has been added in Statistics;
  • home page has been improved for more readability and a better compatibility with short certificates;
  • forum pinned posts behavior and look has been improved;
  • messages layout have been improved with spam box filter, attachments box filter and colored tags folders
  • Certificates signed with SHA256 instead of SHA1:
  • This is a basic security issue: primary collisions with SHA1 are not very far away and switching to a stronger hash makes SSL handshake more secure. Consequently all certificates created by Retroshare now use SHA256, while keeping compatibility with SHA1 signatures.
  • For the same reason, on debian Buster, openssl security level defaults to to 2 which precludes the use of SHA1, originally used to sign RS certificates. As a consequence, on these systems, locations created with RS previously to Jan. 2020 will not start unless one reverts the security level to a value of 1, which we only do when loading the certificate with default parameters fails and for OpenSSL versions later than v1.1.1. This backward compatibility tweak is meant to disappear from Retroshare code in 1 year.
  • SHA256 will be used automatically on new nodes (even with the same profile). Upgrading an existing node is unfortunately not currently possible.
  • Deprecation of the token system:
  • The existing asynchronous token system has been replaced by a blocking API, that proves much easier to use since it removes the need to have multiple functions calling and receiving events. Still, the blocking calls can take some time and the UI still needs to do them in a thread with the following constraints:
  • UI modifications should still happen in the UI thread;
  • the UI shouldn’t wait for blocking API calls.
  • Consequently we use a combination of two new built-in methods (that will simplify even more with C++ async calls): RSThreads::async() which executes a lambda in a separate thread and qtthreadsutils::postToObject() which sets a given lambda to be executed in the GUI thread using the normal Qt event queue.
  • Note that no mutex is needed since everything happens in the UI thread.
  • New notification system:
  • Adding notifications to a service is now extremely simple: a new entity named rsEvents handles all events. In order to use it, one needs to declare his own type of events, with any private information (hash and event code in the example below), and supply the serial_process method using Retroshare core macros. This way the event can be sent anywhere in libretroshare, plugins, and even to clients connected using the JSON API (e.g. web interface, python scripts, etc).
  • Whenever an event needs to be sent, the code only needs to allocate one event and send it to postEvent (asynchronous through a queue) or sendEvent (direct blocking call):
  • Catching the event, for instance in retroshare-gui is pretty simple as well. The client (here the file transfers GUI part) only needs to register an event handler for the given event type (here FILE_TRANSFER):
  • Note the use of postToObject (here again!) which allows the event to be handled in the GUI thread, since rsEvent will likely call the lambda that is registered as event handler from a different thread (here, the file transfer loop).
  • End of retroshare-nogui (don’t panic!):
  • The former headless retroshare server has been replaced by a new executable named retroshare-service, to which one talks using the retroshare built-in JSON API. It is rather cheap and can be ran on Android phones as well as screenless servers.
  • Compilation simply requires the appropriate flags:
  • An example of application to this interface is the new WebUI developed during Google Summer of Code 2019. See https://github.com/retroshare/RSNewWebUI, and add “rs_webui” in the compilation flags.
  • While retroshare_service can be used to create new nodes, the web UI doesn’t currently offer to do it. Setting up a retroshare server with retroshare_service+WebUI therefore needs to copy the full ~/.retroshare/ data directory prior to launching retroshare service:
  • While ‘-U’ would normally be followed by the node ID you want to start, using ‘list’ instead will show up the list of available nodes and ask for the profile password before starting it. Another limitation is currently that retroshare_service does not use the automatic Tor configuration code (which depends on Qt) and setting up a headless Tor node requires some manual tweaking in order to (1) configure Tor system-wide to start a hidden service, then (2) create a Tor node with the Qt UI, choosing the manual Tor configuration option and setting the correct ports according to what was supplied to Tor. Option ‘-W’ asks retroshare_service to set a new password for the webinterface.
  • The webinterface is now entirely supplied by Retroshare. In particular its html and JS files do not need anymore to be installed on the client where the WebUI runs.
  • Other backstage improvements:
  • Some backstage improvements are also worth mentioning:
  • A new cache for metadata allows a much faster loading of forums/channels/boards;
  • GxsId tracking has been improved, which can be seen by more accurate usage statistics in People->Person;
  • RTT/bandwidth management and service priorities has been improved after lots of careful tests. The RTT now between two friends keeps low values;
  • memory usage has improved, but is still not perfect. Some systems tend to allocate too much memory on threads and RS uses lots of them;
  • improved debug output thanks to new RsDbg(), RsError() and RsWarn() macros;
  • consistently switched licence to AGPLv3 (GUI) LGPLv3 (libretroshare) in prevision to application for Debian packaging.
  • Last words:
  • As usual, only congratulating all the testers and pull-requests providers will not make them true justice. This release would not be here without them. So many thanks to all of them!
  • Since we reached some rather stable status, we would now like to:
  • Apply for debian packaging (we will need some sponsoring!)
  • cleanup deep indexing (currently using xapian) so that it can be shipped in the next stable version
  • improve the reactivity of GXS sync
  • make our Tor automatic system Qt-free. This is not so easy because the current code heavily depends on signal/slot connections.

New in Portable RetroShare 0.6.3 Revision 3ae85dbc (Aug 8, 2017)

  • New “GxsTrans” service:
  • This new service uses GXS (the system that otherwise distributes forum and channel posts) to asynchronously send authenticated pieces of data to any distant identity accross the connected network. The data is encrypted and the actual destination is hidden. In short, GxsTrans uses GXS groups that are distributed to friend nodes,and clients posts GXS messages in these groups which are accessed by every peer in the network to pick their own message. As a “meta service” GxsTrans forwards data to other client services in Retroshare (e.g. Messages). As GXS service, GxsTrans benefits from the spam control system and authentication of message’s sender.
  • Messages in GxsTrans groups are encrypted using the public key of their destination, and are signed by the sender. The encrypted packet only contains a symmetric AES128 key encrypted using the public key of the destination ID without header. Consequently there is no way to know who can decrypt this plain 16-bytes key and peers need to try their own keys to check whether they are the destination or not. A hint system however allows to limit the cost of trying all possible keys without fully disclosing the destination. We’re currently working on a way to implement Perfect Forward Secrecy within this system.
  • The Statistics/GxsTrans widget shows the list of messages currently sent by your own node with their status (top view) as well as the list of GxsTrans groups and their messages.
  • In order to make all peers agree on which groups to use (for efficiency reasons) subscription to groups is automatic and post are always sent into the group of largest ID. Because peers who do not already have a transport group will create one when needed, it’s expected to see a few subscribed GxsTrans groups in the statistics window.
  • GxsTrans can be used by any service to exchange long distance data asynchronously. It is currently used as a transport vector for distant messages. Messages however still partly rely on the Global Router, which uses tunnels/routing matrix and is therefore faster but less reliable. It is unclear at this point whether we will keep the global router or not. In any case, messages now are very reliable and fully asynchronous.
  • Forum/Channel post editing:
  • Users can now edit their own forum/channel posts. This is done by posting a new message with the mOrigMsgId field set to the previous version of the message. The tree of message versions is then unfolded by the GUI at the time of display, and all messages are packed into a single post with a list of version times for you to choose. Old Retroshare versions will however not be able to see post edits, since they do not take are of the mOrigMsgId value properly. In channels, comments are merged between all versions of the same post and all displayed consistently.
  • Renamed executables and packages:
  • In order to comply with standard unix naming systems, we had to rename a few things. We hope it’s not cause too much inconvenience. If you have scripts launching Retroshare, just make sure to update them with the correct executable names:
  • RetroShare06 -> retroshare
  • RetroShare06-nogui -> retroshare-nogui
  • New serialization system:
  • The serialization system has been re-wrote from scratch with the following goals: (1) serialization should be easy to implement, (2) consistent by design, and (3) 100% backward compatible.
  • The new system, implements a single method that overrides RsItem::serial_process() which does 4 different tasks with the same piece of code: serialize, deserialize, size computation and print (that’s the role of the SerialzeJob variable in the code below). Therefore, all 4 tasks are consistent by design, and it’s impossible to implement a serializer that e.g. forgets to deserialize a member, etc.
  • Declaring a new RsItem subsclass and its serializer only requires two actions:
  • overload the RsItem::serial_process method
  • write a serializer that only provides an object creator
  • RsTypeSerializer::serial_process handles all traditional types (including stl container types, see the code in libretroshare/serializer/ for numerous examples). It is also possible to specialize this method to serialize additional types on demand. We will document this more extensively soon.
  • All existing classes have been converted to the new system, which should go absolutely transparent to the end user.
  • Improved command line tool:
  • The command line tool needs to manage the login step of both the web interface and the terminal input, which makes it pretty complicated. We tried to make it as clear and smooth as possible. The -U option now only takes a location ID (the 160bits hash) which are listed when no options are specified on the command line.
  • Improved GUI:
  • Login and certificate creation dialogs have been simplified to their strict minimum. Channel comments (including the ones that load in the news feed) are loaded asynchronously when displayed while keeping the filtering and search capabilities, which allows a much faster loading of channels.
  • Group network stats now show the last message time and count of forum posts more accurately. New settings allow to tweak “direct downloads” globally to override the friend-level setting.
  • Statistics have been improved in order to show individual packets (as bullets) and graphs are both less costly and better looking.
  • Of course the usual pass of code cleaning includes valgrind against memory leaks, and cppcheck for code consistency.

New in Portable RetroShare 0.6.2 Revision 733b1143 (Mar 13, 2017)

  • DIFFERENTIAL FILE LIST SYSTEM:
  • The old system for sharing list of files had originally been designed for a totally different purpose, and was very inefficient for this particular job since it required sending the full list of files every time something changed. We have designed a new system where directories are synced independently using a passive/active system: now friend lists are both passively synchronized in the background at a rather slow speed while being interactively updated while browsing. Random IDs are used when publishing directories to neighbor nodes so that they cannot be used to figure out what a friend is not sharing with you. The whole hashing system has also been improved.
  • The file sharing manager has been re-designed with less popup windows and more contextual handles. Most data (directories, virtual names, friend groups,…) can be changed in place by double clicking on it. Changes only take place when the “apply and close” button is hit.
  • Backward compatibility is not fully provided, mainly in order to avoid keeping complicated pieces of code, but an acceptable middle ground has been found. In summary:
  • users will need to re-define their shared directories, which is a good opportunity to test the new share manager 😉 and does not take long;
  • hashes are recovered from the previous version. So if you share the same directories, the hashing step should be very fast. The previous hash cache “file_cache.bin” is still loaded when found, and renamed to “file_cache.bin.bak”, and then converted into the new one “file_sharing/hash_cache.bin”. If needed, you can still rename this file to force Retroshare to import it again.
  • All these lists are of course stored encrypted on your disk including friends’ lists, which wasn’t the case before. There is one limitation however: the total number of shared files and directories should stay below 4,194,303 for a maximum number of friends of 1023, because of the storage encoding that has been designed for maximal efficiency (the new system removed all pointers so that Qt can access the hierarchy content both securely and rapidely).
  • END-TO-END FT ENCRYPTION:
  • There has been a lot of discussion about both the possibility and the reason to encrypt anonymous file transfer tunnels, since anonymity guaranties that whatever the data is, it cannot be attributed to anyone in particular. There are however a number of situations where such a feature is wanted, which can be summarized as: files that are shared in private channels, private forums, or even privately sent using distant chat should not be possible to intercept by a node in the network who’s passively listening for the traffic.
  • Safely encrypting file transfer along anonymous tunnels is of course a chicken-and-egg problem: you would require a pre-shared secret information from which the encryption key is derived, with someone you cannot identify (by design, since the tunnels are made to be strictly anonymous), so it sounds impossible to avoid a man-in-the-middle decryption (if you’re a troll, stop reading here and think for a while). We found a middle ground strategy (Partly similar to what GnuNet does, without using asymmetric authentication keys). Let H(f) represent a hash of the file to share:
  • encrypted tunnels are opened through tunnels requests based on H(H(f))
  • data packets are encrypted and authenticated using Chacha20+HMAC(sha256) with a random key for each packet. That key is derived by combining a 96-bits random initialisation vector with the actual hash of the file H(f). The construction is exactly the AEAD described in the RFC7539.
  • files can optionally be non search-able, which keeps their hash secret
  • Consequently, files shared anonymously using private channels, forums, or securely sent using private chat are guarantied to reach destination using end-to-end encryption that is both anonymous and MITM-resistant, the secret pre-shared information being the hash of the file.
  • Note that we use our own implementation of Chacha20, which passes all the tests from RFC7539 (Chacha20 is not complicated really). When OpenSSL offers Chacha20 in its mainstream version, we’ll switch to it, without backward compatibility issues.
  • For backward compatibility reasons, users have now the possibility to change the encryption along file transfer tunnels with two modes (accessible from options->Files):
  • accepted: downloaded files will open both encrypted and clear tunnels. Uploaded files accept both modes.
  • enforced: downloaded files only open encrypted tunnels.
  • Obviously, only “enforced” mode totally protects the data, and unless needed, it should be used preferably.
  • REVISED REPUTATION SYSTEM:
  • The reputation system has been improved so that (1) users that do not give any opinion can rely on their friends to rate post authors; (2) if set, your own opinion is always a priority; (3) anti-spam prevents trolls to create new identities at every post; (4) new comers can easily bootstrap the voting problem.
  • Reputation now has 5 levels which are figured out by Retroshare combining 2 factors: your own opinion (with absolute priority) and opinions of your friend nodes. The resulting reputation score can be:
  • negative: you personally flagged that identity as bad.
  • remotely negative: your own opinion is neutral, but your friends provide more negative votes than positive votes
  • neutral: no information is available whatsoever for this identity
  • remotely positive: your opinion is neural but your friends globally vote positively.
  • positive: your own opinion is positive
  • The calculation of reputation has been split into positive/negative votes, and users now have the possibility to decide what is the required balance of positive/negative votes to make an identity flagged as remotely bad or remotely positive (See Preferences->People).
  • The reputation system still governs the distribution of data, but the set of rules have been improved so that distribution channels with anti-spam flag ON only distribute posts from authors with a non negative reputation. This applies differently to signed identities and identities signed by a known or friend node.
  • Forums with anti-spam activated show a special “Distribution” column. The column only displays a yellow (rep. red) flag for those authors who locally have a limited ability to distribute their posts (resp. who are locally banned)
  • This means in practice that a newcomer to a forum with anti-spam will only spread his posts to his direct neighbors. The posts will only travel further if the nodes around give a positive opinion to their author. This allows new users of a forum to get known and up-voted, while preventing nasty users to create new identities for each (troll) post, since their data will not go anywhere beyond their direct friends, which in turn can easily decide to fight accordingly.
  • IMPROVED GUI:
  • The UI has been cleaned up, with new icons, new design. The settings are now totally interactive, meaning that any change you make immediately takes effect. We tried to improve the first time user experience in many ways. Here’s a non exhaustive list:
  • New profile creation has been simplified and all complicated options are hidden (while still here, but at least the average user won’t need to figure out what they mean). The look of it has also been improved. The profile (PGP) passphrase is now asked only once and cached for a few seconds which avoids re-asking the PGP passphrase when signing the SSL certificate;
  • all explicit mention of PGP keys have been removed, which are now named “Profile” keys, while keeping the ability to see fingerprints and ascii armored key, for advanced users;
  • a Home page has been added as a place to start, make friends and grab your own certificate. This should help newcomers to create their network;
  • it is now impossible to supply a badly formed certificate when making friends. Some users in the past tried to supply a PGP key instead of a RS certificate, which would obviously not work. This is now automatically detected when inserting the text in the certificate box.
  • Finally, a few new options will probably help a lot: GXS now auto-cleans unused groups, and offers the possibility to choose sync/storage time. It’s important to note that some of these values may require old nodes connected to your node to keep sending data. So unless you stay on the default values for GXS sync, it’s better to have your friend nodes upgraded too.
  • COMPATIBILITY WITH OPENSSL-1.1.0:
  • This step has required some effort! OpenSSL-1.1.0 hides a few structures which where previously open. The changes have been tested successfully on Debian Stretch.
  • However: at the time of writing this post, Debian Stretch continues to distribute a version of sqlcipher (3.2.0) that crashes when combined with openssl-1.1.0. We cannot do much about this beyond waiting for the patch to reach mainstream. This should apparently not take long, so be patient.

New in Portable RetroShare 0.6.0 Revision 7ded128b (Feb 9, 2016)

  • Authenticated tunnel system:
  • It is now possible to open authenticated/encrypted tunnels between GXS identities (the ones displayed in the “People” tab. The service—named p3GxsTunnels—totally abstracts the transport layer and offers the following features
  • tunnel maintenance for a given client, that gets notified when the tunnel is ready to be used or when it gets closed or killed
  • authentication based on the RSA key that each GXS identity represents
  • PFS encryption based on a DH key exchange using a 2048 bit safe-prime group, renewed each time the tunnel is re-created
  • transport security. Items are notified using ACK packets and re-sent when a ACK is not received. Duplicates are filtered out
  • The Distant Chat system has been switched to using this new service. As such, it is not backward compatible with 0.6.0-RC2 (sorry for that), but is now much more stable and reliable (e.g. distant chat messages always get delivered, provided that a tunnel can be opened)
  • Review of GXS:
  • We performed a complete review of the GXS network service, that is responsible for the exchange of posts in forums/posted/channels. It is now much more efficient and the code has also been simplified a little bit (which is always good). Some important changes include:
  • better synchronisation of messages saving a lot of bandwidth;
  • new system for gathering the number of posts in un-subscribed GXS groups, which doesn’t require sending the message list any more. This saves some bandwidth as well.
  • debug output system that allows to display the activity of a particular forum from a particular friend.
  • Messaging system:
  • The distant messaging system of Retroshare relies on two methods to help messages find their way: tunnel which allow instant delivery at a distant peer but need both the source and destination to be online at the same time, and the routing matrix that allows slower but non synchronised delivery. We have improved the later significantly, which results in distant messaging being much more reliable.
  • GUI improvements:
  • A “contact list” can now be managed by the user, in which identities can be grouped together. This allows to rapidly find a distant address to send a message to or to chat to without the need to scroll the entire list in People (which tends to grow large). It is also possible to limit the reception of distant chat and distant messages to the contact list only, in order to avoid spamming.
  • The GUI layout has generally been improved. We added plenty of tooltips, especially in the crypto-related parts. We also tried to make it compatible with high DPI screens. Some icons still remain too small, but it’s already improved a lot as compared to previous releases. We also added some useful features such as the possibility to export/import the list of friends.
  • The statistics widget has also been improved. This is mainly cosmetic changes but this widget helps users to isolate the source issues and report to us.
  • Reputation and anti-spam systems:
  • A lot of effort has been dedicated to helping users fight trolls. This includes two important features that have both proved very effective:
  • A reputation system allows to rate the identities in People (using a simple Positive/Neutral/Negative scale represented by numbers -1,0,1 respectively). It has been designed so that:
  • it should be easy to rule someone out of your own Retroshare node by a simple click;
  • a single user should not be able to drastically change the visibility of someone’s identity on nodes others than its own Retroshare node;
  • friends should be able to team up so as to remove an unwanted person from their local network
  • Your own opinion about some particular identity is shared with your friends (using a differential system which only shares non neutral opinions). A final reputation score (which is a floating point number between -1 and 1) is computed according to the following rules:
  • if your own opinion is neutral, the reputation score is the average opinion from your friends
  • if not, the reputation score is equal to your own opinion.
  • The reputation score is then used by the different services using their own rules. For most of them, when the score is below -0.6, the identity is “Banned” and services just don’t accept to use it. Forums for instance mask existing messages from these identities and refuse to forward nor download them either.
  • Identities that are banned are not time-stamped either, which ensures that they will be removed from your node after 30 days of inactivity.
  • Forums also have been equipped with anti-spam flags which are:
  • Favor PGP-signed ids”. This raises the acceptance reputation score from 0.0 to 0.4 for unsigned identities, causing anonymous posts to be discarded unless the identity already has a good reputation. As such, forums with this flag ON will not allow anonymous users to create new identities at every post they create.
  • Keep track of posts”. This sounds scary, but this feature only displays in the GUI (using a tooltip for 10 days) the name of the Retroshare friend node that forwarded each particular post to you. This information is useless for every single user (and is could have otherwise been printed out by modifying the code!) but it allows a group of friends to easily team up in order to find out where annoying posts come from and cut the line.
  • Both flags are OFF by default, and can be changed by the creator of the forum.
  • I2P proxy support:
  • Users can now create Hidden nodes that use I2P as a proxy. These nodes work exactly like Tor nodes
  • Security review by Elttam:
  • Retroshare being listed in the EFF secure messaging score board, it has raised the interest of Elttam, an australian team working on software security. They already have sent us a short list of potential security issues which we fixed right away. This is an ongoing process, so we can expect to fix more within the next weeks.
  • The main bug fixes concern potential buffer overflows, failure of malloc checks, and attacks using the Qt resource system.
  • Various back-end improvements:
  • SQlite performance has been improved using the GXS datastore for message data and metadata. We added packet grouping in pqistreamer. This apparently reduces the bandwidth caused by OpenSSL to first pad and encrypt many small packets.
  • The network back-end has been improved. The goal is to support IPv6 in the next future.

New in Portable RetroShare 0.6.0_8551 RC 2 (Aug 4, 2015)

  • GUI:
  • Used QTextBrowser to show the channel description for unsubscribed groups to avoid the horizontal growing of the channel list
  • fixed pasting of rslinks with special characters with Qt5
  • fixed strings in IdDialog
  • Optimized fill of feed items by moving the fill of the hidden area to the first expand of the frame
  • make IP connect state string fully translatable
  • Use a better icon for "linked to your profile"
  • Enabled ordered/bullet list for Message Composer
  • changed default news feeds to include security_IP, remove Peer connects (this one drives most people crazy)
  • change label "Security Ip" to "Ip security" in feed settings
  • Added a second color button to Message Composer, for set text background color
  • Changed parameter isFirstTimeRun of RsAccountsDetail::getAccountOptions to output parameter
  • Added version information of the libraries to HelpDialog
  • Added own flag and new checkbox in settings for security ip feed items
  • Changed NewsFeed::addUnique for SecurityIpItem to compare the ip addresses. That avoids duplicates when IP changes
  • Removed banner pixmap for the ConnectFriendWizard of the standard style
  • QWizard cannot be resized horizontal when a banner pixmap is set
  • fixed whitespaces in strings
  • changed "Owned by node" into "Owned by" in IdDialog
  • added explanation to IP change security item in a tooltip
  • Changed string "TOR" to "Tor" everywhere
  • Fixed crash in context menu of the id list in IdDialog when no row is active
  • disable IP filter tab when using a hidden node
  • Used ElidedLabel for the forum name to avoid the horizontal growing of the forum list
  • Set the status of the message to read when the user read it in the news feed
  • Remove the message news feed when the user reads the message in the message list
  • Added warning to IdEditDialog, when the lenght of the nickname is too short or too long
  • Used StyledElidedLabel for the nickname in Idialog to avoid the horizontal growing of the right widget
  • Updated languages
  • Plugins:
  • FeedReader: Added check for forum author
  • Fixed VOIP linkage for ubuntu distributions
  • WebUI:
  • added profile import/creation
  • fixed leaking file descriptors
  • added upload handler for small files
  • fixed terminal thread
  • removed some unused parameter warnings
  • IP Filters:
  • added check for whitelist before sending a Security item for IP changed
  • improved voting for extr address, and make sure DHTStunner does not return a banned IP
  • removed/improved debug info
  • Various code improvements:
  • changed Radix64::decode to return result as std::vector
  • removed unused branch and dummy function in pqihandler
  • removed pqisecurity dummy functions. It is a packet filter which was never implemented. It's job is now done by service permissions
  • fixed compilation for versions not using sqlcipher
  • added more debug info in pqissl when connection is attempted from banned address
  • Bug fixes:
  • Fixed using uninitialized variable in p3HistoryMgr::setSaveCount
  • Fixed using uninitialized variable in p3HistoryMgr::setEnable
  • Fixed uninitialized members of bdProxyId and bdConnectionRequest
  • removed unused variable in TmpBlobStore
  • let interface classes initialise their integers
  • initialise BanListPeer::addr
  • let turtle reputation classes initialise their integers
  • let turtle items initialise their integers
  • Added destructor to p3LinkMgrIMPL
  • Fixed memory leak in GuiExprElement
  • added missing initialisation in p3GxsChannels
  • added missing initialisation in p3GxsCircles
  • added missing initialisation in p3GxsForums
  • removed useless ifs in rsaccounts.cc
  • added missing initialisation in resource_api::Request
  • added missing initialisation in ApiServerMHD
  • fixed potential mismatch free/delete[] in distant chat
  • added missing initialization for RsGXsIdGroup::mLastUsageTS
  • added check for return value of fseek in ftFileProvider
  • fixed potential memory leak in pgphandler
  • fixed memory leak in FileIndexStore
  • fixed uninitialised memory read in RsGxsNetUtils
  • fixed Chat Lobby gui complaining about wrong string passed to RsGxsId constructor
  • added missing delete in p3GeneralConfig
  • Added proper shutdown of the plugins with remove of the service and dlcose of the plugin handle
  • fixed unlikely but possible invalid read in formatting of bandwidth numbers
  • fixed potential use after free in openpgpsdk
  • fixed double free in openpgpsdk
  • added missing socket close in pqissllistenbase destructor
  • added missing free and fclose in FileIndex
  • fixed potential invalid memory read in openpgpsdk
  • Removed unload of the plugins, because it causes a crash
  • Fixed possible dereference of null pointer in NotifyPage
  • Added missing breaks to p3GxsChannels::notifyChanges
  • Fixed possible fread from a null pointer in HashCache
  • Added missing breaks to p3GxsForums::notifyChanges
  • Added missing break in p3GxsChannels::handle_event
  • added missing size check in RsGxsRecognSerialiser
  • fixed password handling in deferred signature algorithm (in case of cancel, enter wrong passphrase, etc). Fixes the bug of
  • half-initialized identities not loading when cancel is pressed, or wrong passphrase is entered, at signature step
  • improved login system: do not re-ask for passphrase when user clicks cancel. Removed warning stating that "maybe passphrase is wrong"
  • fixed another x64 serialisation bug in FeedReader (see rev8396)(thanks to Eugene Tooms)
  • Added missing dlcolse to RsPluginManager::loadPlugin
  • Added proper handling of the handle of the loaded plugin
  • Added check for trailing '/' of base directory in RsAccountsDetail::setupBaseDirectory
  • avoid unwanted wait in in p3IdService that slowed down the entire app (thx to jolavillette for finding this)
  • Initialized the the member aes_key of DistantChatPeerInfo with memset
  • Fixed memory leak in p3FeedReaderThread::processXPath
  • Fixed uninitialized pointer read in FlowLayoutItem::dropEvent
  • Fixed memory leak in RsGenExchange::publishGrps
  • Fixed memory leak in RsGenExchange::publishMsgs
  • Fixed memory leak in DistantChatService::locked_sendDHPublicKey
  • Added missing fclose to RsAccountsDetail::loadPreferredAccount
  • Added missing fclose to ApiServerMHD::accessHandlerCallback
  • Fixed memory leak in RsRecogn::createTagRequest
  • Fixed memory leak in DistributedChatService::invitePeerToLobby when lobby not found
  • Fixed memory leak in LookupDNSAddr
  • Fixed momory leak in RsDirUtil::getFileHash when the file doesn't exist
  • Fixed memory leak when RsServicePermissionItem::deserialise failed
  • Fixed uninitialised member in bdNodeManager
  • fixed another uninitialised memory read in bitdht
  • fixed uninitialised memory in bdfilter
  • removed 2 unused members from FileDetails in ftextralist
  • fixed situation leading to uninitialised message content in MessageDialog
  • fixed use of wrong variable in GxsGenExchange
  • fixed uninitialised variable in RSCollectionDialog
  • removed ambiguous expression that confuses coverity, in TransfersDialog
  • fixed access of delete iterator
  • removed false positive access beyond range of iterator
  • removed possibility to access invalidated iterator in grouter
  • fixed invalid use of wrong iterator in GXS reputation system
  • fixed bug in using invalid iterator in ChatLobbyNotify
  • fixed wrong use of flags in pqibin (wtf??)
  • remove potential use of deleted item in rsRecogn
  • fixed use of pointer after memory ownership transferred to QCache
  • fixed potential passing of deleted item to sendChatItem when a ChatLobbyItem is too big (would probably cause a crash. Found using coverity)
  • fixed call to strncpy in network interface determination code which leaves unterminated string if strlen(ifptr->if_name)==16

New in Portable RetroShare 0.6.0_8401 RC 1 (Aug 4, 2015)

  • The network paradigm has changed a little bit: Retroshare still offers the possibility to securely connect nodes using SSL links, authenticated by PGP signatures. But now, in addition, the users have the possibility to create pseudo-anonymous identities which can be used to sign forum posts, talk in chat lobbies, send distant messages, etc. This decorrelates the identities from the actual nodes of the Retroshare network.
  • We also took the opportunity to change a lot of low level protocols, and pushed a significant number of long waiting changes. As a result, the new 0.6 version is not compatible with the 0.5 version. That means you will need to upgrade your friends too if you want to keep them. Of course, the PGP keyrings and signatures stay, so your web of trust stays intact. In order to make the transition easy, we made it possible to use both Retroshare 0.5 and 0.6 on the same computer simultaneously. Linux executables and packages being 100% independent (except for the keyrings)
  • What hasn’t changed a bit is the rule of thumb: all the data that comes or leaves your node get through your trusted friends.
  • MAJOR NEW FEATURES:
  • Retroshare Identities
  • When talking over the Retroshare network(s) you need to be able to consistently know who posted which information, whereas that person might not want to be tracked either.
  • We solved that problem by adding pseudo-anonymous identities. These are RSA key pairs that can be used to encrypt/sign/authenticate posts. They can be either signed by your PGP key (which makes them extremely hard to impersonate) or anonymous (quite impossible to trace).
  • The new “People” tab allows you to manage your own identities (you can have as many as you want) and also displays the identities relevant to your own local view of the network. Every time an identity is needed, it is asked to your friends, along the flow of data that also uses the same identities. Forum posts for instance are signed by these identities, and the public keys that allow to check the signatures can always be requested to whoever transmitted the post to you.
  • Pseudo identities can have avatars, Utf8 encoded names, etc. The only not-yet-activated thing is the ability to make groups out of them, and control access to data in the network based on these groups. But this is ongoing development.
  • Hidden Nodes using TOR:
  • Retroshare now offers—as an option—the possibility to create nodes that are only visible through the TOR network, represented by an onion address. As such, users of a hidden node totally hide their IP address even from their own friends. Hidden nodes do not use the DHT, and only share .onion addresses through the network discovery system. Hidden nodes do not use “TOR exit nodes” either except when talking to non hidden nodes. Beyond anonymity, hidden nodes are an excellent way to bypass firewalls, at the cost of an insane amount of crypto (basically DHE-SSL over TOR ;-) ).
  • Connecting to a hidden node is also possible if running a normal node, as soon as you are also running TOR on your machine (without any further configuration). Just make sure the TOR proxy port is correctly given in config/server/TOR (9050 is the default). Each hidden node you connect to will appear with IP equal to 127.0.0.1.
  • In order to run your own hidden node, you need in addition to create a TOR hidden service: edit your TOR config file (e.g. /etc/tor/torrc on linux) and add HiddenServiceDir /var/lib/tor/retroshare/
  • HiddenServicePort 9023 127.0.0.1:5781
  • Now just launch TOR, and read the onion address (should look like uido4sbabwem5bq6.onion) that TOR created for your Retroshare node in
  • var/lib/tor/retroshare/hostname
  • In the node creation manager at start, select “advanced” and then “Create a hidden node”. Supply your onion address and port.
  • Note that this can be changed afterwards in the server->TOR options. Also make sure to use the right port. In the node creation window, the port that is expected is the port in the TOR network (here 9023).
  • Integrated Web interface:
  • Although we already had a web interface, we recently came up with a simpler and integrated web interface based on react.js and libmicrohttpd, thanks to the work of a new member of the team (thank you electron!). The web UI currently covers basic functions such as adding/removing friends, controlling file transfers and searching files. It is under heavy development at the time of writing this post.
  • The web UI works with both Retroshare-nogui and Retroshare. If enabled, it is basically accessible by pointing your web browser to localhost:9090 (or whatever port you chose for the web UI either in the config or using command line parameters of Retroshare-nogui): /usr/bin/RetroShare06-nogui --webinterface 9090 \
  • --docroot /usr/share/RetroShare06/webui/
  • A clean and secure way to access the web UI from a distant machine is therefore to create a SSL tunnel to forward the local port: use Putty on Windows; on linux just do: ssh [email protected] -L 1463:localhost:9090 -N
  • That command securely forwards port 9090 on server.com where Retroshare06-nogui runs, onto port 1463 on localhost (the machine from which you type the ssh command). From know on, you can access your web UI at localhost:1463.
  • Reshaped forums and channels, and new Posted service:
  • Forum, Channels and Posted are 3 instances of services based on the new cache system (see below). They share the ability to post comments, vote over posts, and sign posts with pseudo-anonymous identities. From posts, you may send distant messages to forum posters, talk to them in the chat lobbies, or privately using a secured chat tunnel.
  • Non subscribed threads no not transfer anything more than the number of posts available and we also collect the number of friends who are advertising them, giving a reliable measure of popularity.
  • Posted is a new service which allows you to share html links and vote for them or comment them. It is not entirely finished yet, but still quite usable. So it is included in the RC of v0.6 as a way to get some feedback about how we may improve it.
  • Distant chat and distant messaging:
  • The distant chat system now allows to talk to a Retroshare pseudo-anonymous identity using an encrypted tunnel. The tunnel is secured using DHE+AES and authenticated using the RSA key pairs that represent talking identities on both ends. A led indicates the status of the tunnel, which may be interrupted because of network topology changes. Nevertheless, tunnels soon reconfigure and you’re able to talk again. Nothing guaranties that a person is close enough to be reached that way, but the distant chat still offers the possibility to privately talk to a lot of people.
  • The distant messaging system also connects pseudo-anonymous identities using a multi-hop e-mail system, that is asynchronous (mails can be received after the source has disconnected). Messages are encrypted and signed using the identity RSA keys. The system also includes a signed receipt mechanism which is used to remove the message sent from the outbox. So when that happens, you can be sure that the destination got the email.
  • ADDITIONAL GOODIES:
  • Fine service-based tuning:
  • It is possible to disable services manually using a dedicated widget in the configuration window. The widget displays both your own enabling status and your friends enabling status. Only when both are ok does the data flow for each particular service.
  • Network statistics window:
  • We did a bit of graphical work there. You can get from that window all sorts of statistics about what’s going on: bandwidth, tunnels, routing matrix, etc. with cool graphs to look at
  • New certificate format:
  • We got rid of the old ascii certificate format. The certs now look like a blind block of text, which—at the expense of ease of read—provides a lot more robustness and compactness. It’s quite impossible now to accidentally mis-cut or mis-copy one part of the certificate. We also improved the UI so that tooltips show the user the actual content of the certificate.
  • Improved file transfer:
  • File transfer now supports multi-tunneling, which means that multiple tunnels can link the same (source, destination, hash) triplet. As a consequence the data flows more efficiently into the best tunnels at every moment during a transfer. The speed of transfers has also been improved. It is of course limited by the upload capacity of every link along a tunnel, but we drastically improved the handling of data which makes it possible to transfer along single links at up to 10MB/s, if the connection bandwidth allows it.
  • VOIP plugin now does video:
  • Although not entirely satisfactory, we have already all the building blocks for a real Video chat system. The UI has been improved as well, so as to give a reasonable experience to the user. The codec we’re using currently is however extremely basic and therefore does not allow much control yet.
  • Whitelist/blackist system:
  • Retroshare has recently been “attacked” by what we think are network profiling actors who basically used the DHT to impersonate your friends and blindly relay the traffic between peers, without the ability to decrypt it. Still, such an attack would allow to progressively map the network and measure bandwidth. We contacted the abuse service of the related internet ranges but got no answer. So we implemented multiple measures to efficiently get rid of this problem:
  • A black list system automatically collects suspicious IPs from multiple sources. (1) the DHT reports masquerading IPs when the same DHT peer claims to have multiple IPs at once; (2) friends exchange suspicious IPs using a dedicated service; (3) you might enter IP ranges to ban manually. In the interface, you can then choose how drastically you want to use the blacklist: ban everything or just ranges automatically created for you. The default settings should keep you reasonably safe.
  • A white list allows to override the blacklist. The white list is totally controlled by you, and is quite useful to remove false alarms raised when using the most drastic options from the blacklist system
  • Optionally, you may request some friends to be white-listed before connection. This is a very secure option, but it is painful to use for friends who do not have a static IP. So this option can be switched for each friend independently.
  • Once connected using a secure authenticated channel, friends exchange their effective address of connection. If a friend reports to you a contact address that is different than what your Retroshare node thinks its own external address is, a warning is raised in the news feed. This very efficiently detects traffic forwarding. However, false positive warnings will be raised when your IP is changing and a friend connects before Retroshare has figured it outs. Just keep an eye on them.
  • When many IPs in the same range are reported as suspicious by the DHT, Retroshare automatically creates banning rules for them in the black list. When you’re sure of them, the safe move is to make them permanent (by selecting them, adding a comment and submit them to the black list). To avoid traffic forwarding with 100% efficiency, either require all peers to be in the white list, or use a TOR hidden node.
  • UNDER THE HOOD - NEW BACK-END:
  • The GXS cache system:
  • Forums, channels, posted and identities are all handled by a common back-end system called GXS (General eXchange System), which replaces the old—inefficient—cache system based on file transfer. GXS improves over the old cache system in many ways:
  • cache metadata is stored encrypted, using the sqlcipher library.
  • the cache uses a differential update system which only transfers what’s needed. As a result the network load due to cache exchanges is limited to the bare minimum.
  • cache storage is much more efficient than in v0.5 and shouldn’t be a problem any longer.
  • The basic brick of the GXS system is Groups, which is used to represent all actors: forums, identities, channels, etc. It’s quite a complex system which will require a blog post in itself.
  • The global router:
  • The global router is a passive decentralised data routing system, which securely brings data from one Retroshare Identity to another. It is asynchronous and redundant, which means that you do not need the source and destination of a data packet to be simultaneously online.
  • The routing mechanism mixes two redundant system: tunnels provided by the anonymous tunnel system (also shared with distant chat and file transfer) and friend-to-friend routing, based on the so called “routing matrix” that encodes for each peer the best friends to which a packet to a given Identity should be sent. The construction of the routing matrix is achieved as forum/channel post signers get known: a friend sending a signature from a given identity will be more likely to be used as a route toward that particular identity.
  • The global router is currently used to send distant messages between Retroshare Identities. It can also be used by new services installed by plugins, since only the source and destination of a packet need to be able to handle its real content. The global router ensures authentication and encryption of the data that is sent.

New in Portable RetroShare 0.5.5c_7067 (Jan 30, 2014)

  • Improvements:
  • General:
  • Updated languages from Transifex
  • Added language Catalan (ca_ES)
  • Transfers:
  • new cache system for RemoteDirModel, which significantly speeds up the display of shared files
  • added generic function to return the correct string for scanf for unsigned ints depending on the size of the actual variable that is scanned. Should fix the rehash bug and bugs corrupting timestamps on some 32bits systems
  • Added few more file type icons for "cpp", "h" nd "c", "patch" and "diff" extensions
  • Moved Uploads to Downloads Tab.
  • Added to change the text for the Play Button, when file is not a media file.
  • Added a custom context menu for pasting RS-links to the base class MimeTextEdit and removed the custom context menu from derived classes. Updated english translation.
  • patch "AddSearchFilesourceSorted_6951.diff" from Phenom. Adds correct sorting for search results.
  • extended max chunk TTL to 1 hour. A short TTL is not anymore needed since chuns are shared between sources
  • Chat:
  • patch "chatdialog_allow_buttons_from_different_plugins_3" from electron. ChatDialog allows now Buttons from different Plugins.
  • patch "Fix_ChatLobbyAutoSubscribe_6951.diff" from Phenom. Fixes request for existing lobbies when no lobby ihas been found yet. Code beautification
  • added lobby ID as tooltip to lobby list
  • Forums:
  • added ElidedLabel to be used in places where labels might be too long and therefore trigger an unwanted window resize. This is currently used as forum thread titles (Patch from Phenom)
  • Channels:
  • patch "Fix_ChannelNotificationFeedLink" from Phenom. Allows to finish loading a channel before jumping to the linked post
  • Added a default background color for the Channel Message Logo for a better look and feel, removed stretching of the logo, set a minimum size, background is now filled black.
  • Notification:
  • reworked the notification system, which is now a standalone service. Now plugins can receive notifications.
  • Corrected the layout of the Connect Progress Dialog
  • Changed the logo size for some news feed items to use same size for better look.
  • Added to display blue/black forum message icons for the forum feeds, when forum is anon or signed.
  • Added new feed item types and logic to show connection attempts from forged certificates (e.g. bad signature, bad certificate)
  • Limit number of feed items to 500 to avoid flooding
  • Changed the default stylesheet color for the Security Feed
  • improved display/fixed bugs in security item
  • plugins:
  • Added service pointer for forums to the plugin interface
  • FeedReader: Used the forums pointer from the plugin interface instead of the global pointer
  • added missing services in RsPluginInterface class
  • GXS:
  • Enabled the Filter Line edit for filtering friends, by nick/ID for Create Circles Dialog's Known Identities Widget.
  • Set some minimum header sizes for some items
  • Enabled sorting for the QTreeWidget's fixed temporary to load the Wiki Groups Tree at startup, auto update seems not to work.
  • core:
  • moved PGP id and SSLid types into rsid.h, and renamed them with a more appropriate name
  • fixed cipher list for openssl. ECDHE is not configured, so it cannot be used
  • added serialisation methods for SSLId and time_t
  • added an option in the pro file for dsdv, as it is compiled when not used
  • removed status member from FileDetails. Not used => misleading
  • removed asserts in reader_armoured.c, reader_encrypted_se.c, reader_encrypted_seip.c, readerwriter.c
  • Allow loading packets of large size from config files (fixed storing of big messages), and continue on config files skipping items that cannot be deserialised
  • put a hard limit to packet size in pqistore to avoid calling realloc with fancy numbers when the stream has been corrupted
  • Bug fixes:
  • fixed bug due to ot sending notifications to the file lists
  • added missing cleanup call in RsAES.cc, causing a small memory leak
  • Changed order of the shutdown to fix a crash of the WebUI plugin. First stop the plugins then the other services.
  • fixed ghost lobby issue (thx to thunder for spotting it out)
  • patch from HM to avoid allocating absurdly long uids
  • added check to only import version 4 keys in the keyring
  • fixed error handling in certificates that could crash RS when a bad cert is pasted
  • fixed proper handling in failed malloc in openpgp-sdk, causing crash with deliberate bad cert.
  • fixed small error in pgphandler, potentially adding empty certs in database
  • limited the number of packets to be parsed in a row, to prevent compressed data to contain an enormous number of packets. Fixes one possible attack pointed out by HM
  • removed potential uninitialized memory read in TlvKey item.
  • fixed mismatched free/delete in p3channels.cc
  • fixed bug introduced in 6965 that prevented people joining private lobbies to see the messages and talk
  • fixed potential attack by supplying non hexadecimal strings as certificate common name
  • Fixed spaces in copy/paste of rich text

New in Portable RetroShare 0.5.5a_6725 (Sep 30, 2013)

  • Notes:
  • This is the final release of the 0.5 brand.
  • distant chat (encrypted with AES-PSK using tunnels, autenticated with PGP)
  • distant messages (encrypted, through tunnels)
  • See http://retroshareteam.wordpress.com/2013/08/08/distant-chat-and-messaging-using-generic-tunnels/
  • connection progress/status dialog
  • keyring cleaning dialog
  • improved GUI (better layout, higher readability, protection agains xml bombs)
  • many bug fixes in core
  • Improvements:
  • Added connection progress dialog, to show connection state, and give some feedback/advice to the user
  • added storage for denied connections in linkMgr
  • new splash screen / about image
  • improved GUI layout. Many patches, mainly from Phenom, electron
  • GUI improvement for distant messages, showing correct names, handling links, correct toasters, etc
  • improved security feed so that one can send distant messages to peers that attempt to connect
  • improved command line parameter handling (used argstream class)
  • Disabled setting "Start RetroShare when my system starts" on Windows when running the debug version.
  • modified patch from AC to remove messages with security issues (e.g. Billion Laughs bomb). The message is
  • replaced by a warning, and is not forwarded
  • Updated english translation
  • Enabled distant messages. These need to be switched on the config->Messages. GUI improvements needs to be done,
  • such as properly setting peers names everywhere, but the service works. Have fun using it!
  • updated values for min/normal partial packet size to 1MB in openpgp-sdk, so that we do not create partial packets
  • for everyday use. We will have to properly extend openpgp-sdk to support parsing of partial packets if we want to
  • PGP-encrypt chunks larger than 1MB
  • patched RsCollection code to disallow crafted xml bombs
  • plugged send message from security item to send distant messages
  • added info about libssh-0.6.0rc1 in README.txt
  • added argstream.h (with authorized modified licence) to handle parameter lines
  • added Use As Direct Source in service permission dialog
  • fixed OpenBSD compilation (Patch from Stefan Sperling)
  • Removed rsiface and moved configuration options to RsServerConfig
  • Fixed cipher list to "HIGH:!DSS:!aNULL:!3DES", which should disable the weak ones, no idea how to force it to
  • PFS (which it should use)
  • fixed void * pointer maths.
  • doubled data chunk for signature in chat links. Apparently some keys need more than 287 bytes
  • added security checks against disk full in PGP keyring manager
  • TokenQueue: fixed stop of TokenQueue polling when events are locked
  • RsProtectedTimer: switched to faster poll when events are locked
  • distant chat: added ACK system to make sure the secured tunnels for distant chat are actually working, before one starts using it.
  • moved all files related to file transfer in gui/FileTransfer/
  • renamed known people into keyring
  • make friendlist fully resizable (Patch from phenom)
  • added DynDNS to RS certificate link if available
  • removed MT19937 random generator which is not used anymore. Changed N from 624 to 1024 to reduce cost
  • improved completion for chat (Patch from Phenom)
  • added help panels in MainWindow, to help beginners startup with the basic concepts.
  • changed welcome message in broadcast chat
  • improved GUI layouts in FriendList, NewsFeed, Forums, Channels, removed doubling unused buttons
  • added last time of transfer (Patch from Phenom)
  • added column with IP for connected peers (modified patch from Phenom)
  • Removed some more hardcoded colors
  • added completer to MimeTextEdit and ChatWidget (Patch from Phenom)
  • fixed deadlock (reported by Like)
  • Added quick fix to show the plain name and title in the chat lobby
  • Use the best network interface to route an ip instead of the first interface in getLocalInterfaces on Windows
  • Fixed showing utf8 characters in chat lobby name
  • Updated build instruction in file readme.txt (Patch from Henry)
  • Patch (modified) from Phenom to allow auto-subscribe to chat lobbies
  • added display of SSL encryption parameters in PeerDetails dialog
  • fixed packaging with GXS (sqlite linkage, define for encrypted database
  • patch from Henry morgan to fix soem typos (e.g misspelled connexion into connection)
  • Made pqiStore accept packets even after deserialization error, so that it is retrocompatible (Patch from Phenom)
  • Set path to sqlcipher instead of sqlite for Windows compile.
  • new db for release, TESTNET5, old TESTNET4 db's are not keyed
  • Updated english translation
  • added Specific protected timer class RsProtectedTimer to avoid passwd deadlock.
  • Added filter of items to RSTreeWidget.
  • removed email field from GenCertDialog, since it is not useful inside RS
  • GUI:
  • added/enabled GUI for distant chat (Invitation handler in config->chat, handling of Distant chat links)
  • Localized Greek and Dutch (patch from Henry). Updated English.
  • Languages updates from transifex
  • Color transfer for copy/paste (patch from AC)
  • various improvements to FriendSelectionWidget
  • typos (patches from Henry)
  • Added default stylesheet for the QTextEdit in ProfileManager
  • Fixed sort of friends in shared files.
  • fixed update of flag for peer signature over own key
  • FT:
  • added a new per-friend flag to allow to seek for direct transfers. Disabled for existing friends
  • should be added manually), enabled by default for new friends
  • libretroshare
  • Merged branch v0.5-GenericTunneling into trunk (Rev. 6284 to 6410).
  • Tunnel system is now generic. Any service can asks for tunnels and send generic data through them
  • made ftServer a client of the service. Now turtle file items are handled in ftServer
  • added new client: p3MsgService to send/recv pgp-encrypted distant messages
  • added new client: p3ChatService to perform private (AES-encrypted) distant chat through tunnels.
  • added distant chat. Works on invitations and tunnels. Has tunnel closing notification.
  • Added system to collect and create chat invites from pgp keys
  • Needs a route of peers with version > 6441 to work.
  • drop generic items with inconsistent peer id vs. tunnel directions (due to tunnel re-routing)
  • fixed several compiler warnings
  • fixed bug in anti-search-by-depth mechanism
  • Fixed crash with Windows compile. Renamed method "RsFiles::CopyFile" to "RsFiles::copyFile" (lower case)
  • to avoid renaming of "CopyFile" to "CopyFileW" with the newly included "windows.h".
  • Added a drop-down item to allow removing unused keys, in the Network dialog, key removal method in OpenPGP-SDK,
  • and PGPHandler.
  • added backup system to public keyring, impossibility to remove public parts of owned secret keys, etc.
  • added columns for last used statistics on pgp keys in network dialog.
  • GUI:
  • fixed showing the filehash in hash column for the parent file only. The combined hash+tunnel id is used to give a unique id to each source, but should not be displayed
  • added choice for default auto-download directory per channel.
  • Removed unused member mChanReadStatus from p3Channels
  • Ensured that inserConnect() is only called when the widget is visible. This reduces lags due to discovery info.
  • patch from phenom to all resizing lobby participant lists
  • Added patch from Henry Morgan, Fixed some typos.
  • Added a info Label for the Friend Request Page
  • Fixed online time in profile widget, Fixed width of settings dialog.
  • patch (from Henry Morgan) to make the tooltips translate-able in the group flags widget
  • Fixed the perm bug in ConnectFreindWizard (Patch from Henry Morgan)
  • patch from Henry Morgan to use ConfCertDialog rather than connectFriendWizard from Security item
  • made passwd box modal
  • pgp
  • added ability to keep track of when keys have been last used for signature check, signing and encryption,
  • so that we can later detect which keys are unused and get rid of them
  • Chat Lobbies
  • Enabled history for chat lobbies (not saved to disc)
  • FeedReader
  • Added new icon for news feed from Agurer
  • added new setting to save the config in the background for slow systems
  • fixed memory leak in p3FeedReader::saveList
  • retroshare-nogui
  • Updated version of RPC protocol with fancy new features like streaming, add/remove friends, file listings.
  • Merging r6107 through r6332 into 'libretroshare')
  • Bug fixes:
  • Fixed proper display of crypto params for UDP connections
  • Added missing location from cert when addign new friend
  • Added missing IndicateConfigChanged to p3PeerMgrIMPL::setDynDNS
  • Fixed crash when closing the main window without the setting "Minimize to Tray Icon"
  • Renamed the setting "Do not Minimize to Tray Icon" to "Minimize to Tray
  • Icon" and fixed wrong usage Please check your setting!
  • removed dropping an entire config file when a single item cannot be serialized.
  • removed time shift warning in lobbies. Changed into warning in help panel
  • fixed bug allowing malicious peer to display lobby messages in broadcast window
  • patch to avoid corrupting file cache on 64bits archs that store time_t as 32bits (from Stefan Sperling)
  • allow big messages to bounce correctly in lobbies, after fixing a splitting error.
  • fixed lobby aut-subscribe by looking at lobbies every 121 seconds
  • fixed looping in pqistore when a crazily long packet is found. That is
  • the result of an unknown bug, but at least we should handle it correctly.
  • fixed deadlock in notifyQt
  • fixed memory leak in cert signature verification at connect (Patch from Phenom). Also removed some unused variables reported by gcc
  • add date to chat msg if it is mroe than 1 day old
  • fixed bug in distant chat accepting tunnels for collecting invites with same hash
  • fixed memory leaks in p3distrib, signature key verification, RsDataService::retrieveNxsGrps,
  • RsGxsNetService, p3GxsCircles, p3Posted, RsDiscReply handling, getGroupData of all gxs services
  • Fixed deadlock in FriendSelectionWidget
  • fixed assert for non RSA keys
  • fixed display of names in file lists
  • fixed destination directory when downloading channel items in auto DL mode
  • improved time-stamp management for pgp keys
  • fixed translatable string with .arg (Req. From H. Morgan)
  • GUI
  • Fixed sending of status typing in chat. Modifier keys does not send typing anymore.
  • patch from Henry Morgan to avoid removing peer permission flags when removing locations
  • fixed remembering flags for own id, tentatively fixed service perm bug
  • File transfer
  • changed priority for forwarded turtle traffic. The priority was so low that it explains
  • why tunnels of length > 2 are so slow
  • fixed bug in p3peer.cc not calling the correct method
  • added missing mutex, and warnings if permission flags methods are not called with correct ids
  • fixed bug that would reset service permission flags when discovery is enabled and discovery info is received

New in Portable RetroShare 0.5.4e_6268 (Aug 30, 2013)

  • Improvements:
  • translations updated from transiflex
  • Major improvements to GXS services (new service: channels, posted) and GUI (Not yet released)
  • further reduced TR forward probability so as to avoid a crazy increase of TR out when we have a large number of friends
  • renamed Transfers tab "File Sharing", as it is more appropriate
  • removed the constraint of sharing own files only in channels. Replaced it by a warning, to allow peers to post from other locations etc.
  • switched to libssh-0.5.4 (updated README.txt with package deps)
  • fixed packaging/compilation for ubuntu raring
  • significantly lowered the cost of the network graph by computing pairwise repulsive forces 8 times less often
  • Patch from AC to enable completion over chat lobby participants
  • patch from AC to better handle colors in lobby list
  • fixed up protobuf files generation
  • improved chat lobby layout (removed columns => tool tip)
  • added a warning in chat lobbies when there's a big time shift between peers.
  • renamed Security page in settings => Profile
  • added dest dit to FT details window
  • added warning when opnning external url
  • VOIP:
  • Added dynamic menu for choosing the destination directory for files, and change the name of the des. file
  • Merged branch v0.5-ImprovedGUI. Brings all sorts of changes, the most of which are:
  • News feed to be a new tab at the top level.
  • improved transfers panel. Some tabs have been moved to Config.
  • new Chat lobby panel with improved layout. Removed tabs.
  • merged shared files and search into Transfers
  • Auto-check of shared files after download
  • Removed Qt flags from nogui .pro file
  • Packaging of VOIP for ubuntu lucid, and improved packaging scripts
  • Added new "Progressive" download mode, in between random and streaming. Still random as the former and disk-friendly as the later.
  • Lots of work on ongoing new services (Not released yet): Wiki, GXS, Forums, Identity.
  • Removed special settings for win32 from VOIP.pro
  • patch from Henry Morgan to unify compilation settings for VOIP
  • Added new dialog to set service permissions for friends.
  • Enabled embedded images in private chat and messages (only for QT version 4.7.0 and higher)
  • added tooltips to GroupFlagsWidget when buttons are unchecked (Patch from Anonym)
  • when an unknow user attempt to connect, show the name in the security item (Patch from Anonym)
  • Load new stylesheets for locale depended things. Loading order: qss.default (internal), qss. (internal e.g. qss.de_DE) stylesheet.qss (internal or external), stylesheet_.lqss (parallel to stylesheet)
  • Added api for news feeds to the plugin interface. Added news feeds to the FeedReader plugin.
  • Removed toaster for muted participant of a chat lobby.
  • Removed the policy TabFocus from some gui elements.
  • Made cert parsing errors translatable
  • added turkish translation
  • Packaging:
  • packaging of NewsReader plugin and retroshare-nogui
  • added patch from bNK to make glib include dir detected on all linux systems.
  • Removed warnings about gpgme and gpg-error , which have no reason to stay now.
  • FeedReader:
  • Added error handling to xml functions
  • Added xslt transformation
  • Added retransform of existing messages
  • Redesigned preview dialog
  • Enabled embed images for forum feeds
  • Changed config format, switching back to an older version results in a loss of all data of the FeedReader
  • Fixed memory leak in xpath processing
  • Stop long loops when closing the preview dialog or shutdown
  • Added drag and drop to xpath lists in preview dialog
  • Fixed save of xpaths lists
  • Recalculate message count of the user notify when a feed with new items is deleted.
  • Set deleted message to read and !new.
  • Added test feed item in notify settings.
  • Fixed reading author of ATOM feeds.
  • libretroshare:
  • fixed inconsistency in parameter naming, causing error_string to be mixed up with gpg id (Not a bug).
  • removed unimplemented entry loadCertificateFromFile()
  • removed #ifdef USE_NEW_CHUNK_CHECKING_CODE (enabled by default). Disable assume_availablility to put chunks or
  • not in checking mode. This was inconsistent. As a side effect, cache files of size > 1MB get chunk-checked as well, which is good
  • fixed tests: compilation, running, added new util functions, etc. Updated test results.
  • Added little upnp utility / test.
  • added checksum for new certificate format. Will be enabled in 0.6.
  • Fixed up bootstrap singleshot search function. Now returns parameters. Not functioning 100% correctly yet - due to libbitdht behaviour (TO FIX)
  • merged GXS branch into trunk. GXS Services are disabled by default.
  • retroshare-nogui:
  • made port non-optional for -S
  • Added SystemExternalAccess Function to RPC. This provides ExternalPort + DHTKey to Client. To be used to find and connect - even if Dynamic IP address changes :)
  • fixed compilation
  • GXS:
  • lots of improvements to GXSForums. Not released yet.
  • added pegmarkdown langage to Wiki
  • Other:
  • added list of non backward compatible changes in README.txt, so that we can track them
  • Bugs:
  • removed dead-end for peers not answering downloads, that would get file cache transfers to get stuck indefinitly
  • when peers are too much stressed for a short period. The offline state is entirely given by setPeerState()
  • fixed a few fixed other uninitialized memory read (In p3NetMgr, ftChunkMap)
  • do not show msg icon for current lobby (Improved upon patch from AC)
  • removed auto-clear of search field when searching (Patch from AC)
  • fixed auto DL for own channels. Apparently the channel status is missing for this special case
  • allow to import new identity before even creating one
  • fixed up profile manager to only allow to export (Importing during a session caused a bug)
  • dropping chat lobby msg for more than 10 mins in the future
  • re-enabled context menus in chat lobby list
  • Fixed crash when lobby invitation received
  • Fixed DL getting stalled in streaming mode
  • fixed the wrong notification of unexpected characters in management of RetroShare Links

New in Portable RetroShare 0.5.4d_5995 (Dec 18, 2012)

  • Improvements:
  • DHT:
  • disable bitdht printStatus
  • increased expected dht startup period, as message rate has been dropped.
  • updated bdboot.txt file.
  • Chat:
  • Made the private lobbies more accessible:
  • record which friend participates in a lobby even after they unsubscribed. The lobby list that is sent to these
  • friends contains the privaye lobby as well. In practice, people jsut need to be invited once to a private lobby.
  • Afterwards, they get the lobby in the list of nearby lobbies and can join by clicking on it.
  • added new item RsChatLobbyList_deprecated2, to replace old existing item. Should be removed in v0.6
  • changed PublicLobbies for VisibleLobbies in the code, to avoid confusion
  • the change is backward compatible, although old peers won't receive private lobby info from new peers, of course.
  • GUI:
  • Set email address in GenCertDialog to optional.
  • Fixed display of "TextLabel" in SecurityItem.
  • Added patch from Henry: enable italian language
  • Added patch from Henry: Renamed gpg to pgp
  • removed some unused images
  • Added "Edit Share Permissions" Context Menu entry to My Directions, to edit easily share permissions for each directory
  • Updated languages from transiflex.
  • updated English, Danish, German, Swedish translations
  • Added OperatingMode ComboBox to the status bar
  • Added second (temporary) switch to turtle.
  • Use session switch for OperatingMode.
  • made OperatingMode temporary - not saved.
  • Moved DataRate interface from rsiface (old) -> rsConfig.
  • Internally moved storage of data rate from pqipersongroup -> p3serverconfig
  • made DataRate + Operating Mode work together.
  • add ToolTip to OpModeStatus .... (can't actually view - please correct as necessary)
  • Fixed utf8 characters for group names in RemoteDirModel (shared files).
  • Fixed layout of the FriendRequestPage in ConnectFriendWizard.
  • Added flags for services and service permissions for peers
  • Flags are identity-related, meaning that all locations of the same peers have the same flags.
  • It's now possible to tweak which services each peer can use. Service that can be disabled are forums/channels, discovery, anonymous routing.
  • by default, peers have all flags on.
  • File Transfer:
  • use a std::map to search file hashes instead of sweeping the entire database. Improves performance a lot.
  • OpenPGP-SDK:
  • Added function "ops_open" to openpgpsdk to open files with utf8 characters on Windows.
  • changed fopen into RsDirUtil::rs_fopen in PGPHandler, to allow paths with utf8 chars on windows. Should probably fix many startup issues
  • Bugs:
  • added proper filtering of directories from RSLinks and RsCollection to avoid the possibility of writing out of the download directory.
  • Added missing closeConnection when the connection dies with SSL_ERROR_SYSCALL.
  • Fixed display of files in flat view. The files of friends are shown again
  • fixed bug in ShareManager causing directory flags to be set on wrong directory after sorting
  • Protected waitingIds with Mutex in pqipersongrp.cc.
  • Reviewed Mutex in pqihandler.
  • In general it is okay, except for: DataRate Handling, and Win32 specific: WaitingList.
  • Cleaned up some functions.
  • renamed createPerson and createListener to locked_createPerson and locked_createListener. This is required as neither Listener nor Person are thread safe (TODO).
  • fixed missing error msg in p3cfgmgr when serialisation fails.

New in Portable RetroShare 0.5.4c_5858 (Nov 21, 2012)

  • Improvements:
  • GUI:
  • patch from AC to perform html optimization of forum posts using the canonical function optimizeHtml()
  • fixed bug preventing share manager to modify more than one directory at once
  • Moved most of the hardcoded colors of lists and trees to the file qss.default Now the stylesheet can redefine these colors.
  • Added multiselective mute/unmute to chat lobby. Added mute/unmute with double click on icon.
  • Added flag for hungarian language.
  • Fixed sorting of date in forums
  • redesigned the Chatlobby participants list
  • used now QTreeWidget instead of a QListWidget
  • added icons for display the muted participants
  • added context menu for "Mute participant" ( context menu fix from thunder)
  • Removed context help button from the dialogs (currently not used) and added minimize/maximize buttons to the "floating" dialogs.
  • Added to identify for Channel Files if its a media file(s) or not, to change the Play Button text from "Play" to "Open"
  • Added icons for the Channel TreeWidget
  • Added placeholder text for Search Filter items on Group TreeWidget
  • Added placeholder text for Search Filter items in Messages Dialog
  • update the authors on the help page
  • Redesigned GenCertDialog for the usage in Profile Manager.
  • Removed the filter comboboxes and replaced it with a menu in LineEditClear.
  • Added settings for the blinking icons
  • private chat window/tab
  • chat lobby tab
  • all tray notifier
  • Added a find Icon Button for the class LineEditClear
  • Removed all not needed find icons from the Dialogs.
  • Enabled sorting for the Lobby Dialog
  • Added a placeholder text for the Search Forum filter
  • Added blinking of the chat icon for private chat window and chat lobby
  • Added blinking of the systray icon for the notifier and enabled it for private chat.
  • Cleaned includes in FriendsDialog.cpp
  • Fixed switching between combined and not combined tray icon notify with available messages.
  • Added sounds when message has arrived and download was finished.
  • The next unread button in forums search for child items and start at the top when the end of the list is reached.
  • Changed SoundManger to allow the plugins to play sounds.
  • Added example to VOIP (commented out).
  • Added more PRE_TARGETDEPS for Windows compile.
  • Added Search Filter for the FriendsList
  • set a minimum spacing on ChatWidget
  • Added to display tooltip's for the Voip button's
  • Moved the Send Button to right side of the Chat LineEdit for better look.
  • Changed some language strings in the GUI, removed hardcoded fonts
  • removed html strings from GenCertDialog
  • moved some description text from the header, to look better
  • update translation strings
  • several improvements of the GUI layout.
  • cleaned up many unnecessary files
  • Improved (ungendered) English friend recommendation message
  • Support for custom qss in data dir and config dir
  • update win installer script, to install turkish Qt translation
  • renamed Bubble Compact folder
  • Added attempt to load the translations for the Qt's internal srings from datadir/translations
  • removed some warnings and debug info
  • Fixed sensitivity of the action in the context menu to copy a link from the chat text when scrollbars are visible.
  • Stored some license files to utf-8 encoding, required by nsis installer
  • Changed font color in ProfileWidget to standard.
  • Corrected installer translation
  • Disabled fix color of chat messages for Qt 4.5 and lower because of missing methods on QColor in Qt 4.5
  • Add direct public sources for files shared in channels, when available
  • Improvements to turtle router:
  • made faster tunnels stay longer by increasing tunnel campain time. Should favor fast tunnels.
  • deactivated tunnel shortening since it cannot produce consistent tunnels every time
  • increase cache TTL for search requests to 240 secs and tunnel requests to 120 secs.
  • This should remove some zombie tunnels and search requests.
  • Debian Buildscript. Fixed Version for Packagename
  • VOIP plugin
  • Added support for external translation files for the main application and the plugins LinksCloud and VOIP.
  • The following files are loaded from the directory /translations: retroshare_*.qm, LinksCloud_*.qm, VOIP_*.qm
  • Added Turkish voip translation
  • Added Brazilian Portuguese VOIP translation
  • Added support for external translation files for the main application and the plugins LinksCloud and VOIP.
  • The following files are loaded from the directory /translations: retroshare_*.qm, LinksCloud_*.qm, VOIP_*.qm
  • Added Turkish voip translation
  • Added Brazilian Portuguese VOIP translation
  • FT:
  • added dynamic adding of direct sources from file lists. Useful for channels. Is called once every 61 seconds.
  • Added new link type: EXTRA_FILE, to allow sendign links with sources included so as to trigger direct transfer.
  • This makes possible to send files through chat without permitting tunnel access to the files. The client requests
  • the file as a direct transfer only, using the supplied source.
  • Patch to allow compilation on BSD
  • Fixed command to grab upnp patched version
  • Merged branch that provide group-based file permissions.
  • Now users can sort peers into groups in the friend list, and attribute flags and parent groups to the directories in the share manager.
  • Flags are B-B-N, meaning in order:
  • browsable for peers in the parent groups
  • browsable for everyone
  • network wide for everyone
  • Backward compatibility makes previously BN flags been interpreted as -BN, meaning browsable/network wide for everyone.
  • The merge also includes a significant improvement of the naming of flags with incompatible types
  • which should sort out some existing bugs as well, since inconsistencies in flag usage have been found during the process.
  • DHT:
  • Improved the dht msg history storage.
  • specify how long we store for.
  • cleanup old msgs.
  • improve printing of history.
  • add timeline storage as well.
  • disabled by default, enable USE_HISTORY in bdnode.c
  • There appears to be a bug related to copying bdId's around.
  • Some of the bootstrap ids are malformed, and this crashes rs.
  • Bugs:
  • added additional checking of incoming compressed chunk map, in case the data is corrupted, which might happens with a corrupted ft_transfer.cfg file.
  • fixed permission of drap+dropped files. all attached files get added to extra list, but with different permission flags depending on the client. From that, we compute sharing permissions : turtle, or direct transfer only
  • suppressed unitialized memory read in p3peers.cc
  • added missing mutex in destructor of ftFileProvider. Probably responsible for some random crashes
  • Fixed stupid bug inDHT. Labels are the wrong way around.
  • This meant limit is set to HIGH (50msg/sec) when it should be LOW
  • (5msg/sec)
  • Fixed "jumping" of the items in channels and news feed when items are changed (load, toggle and remove).
  • Added workaround for QTBUG-3372.
  • Hide request Label, when peer is unknown
  • Fixed edit of a message with plaintext. The newlines remain unchanged

New in Portable RetroShare 0.5.4b_5605 (Sep 27, 2012)

  • Bugs:
  • Fixed crash when closing the settings dialog.
  • Fixed crash and memory leak in the AudioWizard of the VOIP plugin.
  • Please use at least Qt 4.6.4 when compiling RetrosShare with the VOIP plugin because of the fix of the bug QTBUG-11883.
  • Improvements:
  • Added Spanish translation file for the VOIP plugin
  • Removed html code on some QLabels
  • Enable Translations for Voip plugin
  • Fixed some spelling errors
  • Changed font color in ProfileWidget to standard.
  • Fixed German language.
  • Disabled fix color of chat messages for Qt 4.5 and lower because of missing methods on QColor.
  • add direct public sources for files shared in channels, when available
  • patch, to make the bandwidth graph refresh rate smoother
  • Improvements to turtle router:
  • made faster tunnels stay longer by increasing tunnel campain time. Should favor fast tunnels.
  • deactivated tunnel shortenning since it cannot produce consistent tunnels every time
  • increase cache TTL for search requests to 240 secs and tunnel requests to 120 secs.
  • Will remove some zombie tunnels and search requests.

New in Portable RetroShare 0.5.4a_5582 (Sep 24, 2012)

  • Improvements:
  • Fixed commit 5579 - readable chat
  • Added RSHTML_FORMATTEXT_OPTIMIZE to RSHTML_OPTIMIZEHTML_MASK.
  • Added patch from Anonymous Coward - readable chat
  • Added new options to the Chat settings window
  • Enable custom fonts
  • Enable custom font size
  • Enable bold
  • Enable italics
  • Minimum text contrast
  • Added Enable/Disable buttons to PluginItem and a Info Label, instead of a Checkbox.
  • Disabled embedded images for the next stable release.
  • Added patch from braindead
  • Embedded images in private chat and messages (only for QT version 4.7.0 and higher)
  • Improved plugin system
  • now using two lists of rejected/accepted plugins. RS asks at start to load unknown plugins when plugins or main executable have changed.
  • added API and SVN numbers into required external plugin symbols
  • added help dialog to plugins
  • improved version number scripts to add the missing revision number as a int
  • Added window icon for the application. All windows without a parent are now showing this icon.
  • Moved some internal stylesheets to the file Standard.qss.
  • Tweaked standard style of the feed items.
  • moved file rsversion.h to rsguiversion.h, since it caused a conflict with libretroshare/src/util/rsversion.h when included as util/rsversion.h.
  • Updated version detail script.
  • reworked context channel menu to allow unsubscribing from own channels. Removed some irrelevant items.
  • Added warning when publish rights can/cannot be restored.
  • Improved ProfileManager
  • removed combobox and added export to the list of identities
  • add extension to the filename when the user enters a name without extension refill list after generating a new identity
  • Fixed height of the search input field when using no stylesheet.
  • Changed the colors of the feed items. It was too bright.
  • Enabled the menu item in the context menu again to copy the link when right clicking on a link.
  • Reworked some elements in the standard gui.
  • Added VOIP Plugin to windows installer
  • Added new finish translation from Beluga
  • Added two buttons to the NotifyPage to show examples of the activated news feeds and toasters.
  • Can also be used to test the stylesheets.
  • Reworked design of the toaster and moved internal stylesheets to the file Standard.qss.
  • Big cleaning of style sheets
  • Moved some internal stylesheets to the file Standard.qss.
  • Set the built-in stylesheet "Standard" as default for new profiles.
  • Removed some unnecessary style sheets.
  • Added two internal stylesheets (qss.default - This file is used as default for all stylesheets (e.g. the frames of the AvatarWidget) and can be overloaded from the selected stylesheet)
  • Standard.qss - The standard stylesheet for the current look of RetroShare. More internal stylesheets can be added.
  • The plan is to move nearly all internal stylesheets to the files Standard.qss/qss.default.
  • After that the "empty" stylesheet should represent the system theme of the os.
  • Added clear chat history to the context menu of the message text browser
  • Added new base class HeaderFrame - image and text at top of the windows
  • Enabled the RetroShare icon of the collection file dialogs.
  • estored SSLid to lower case in old certificate format.
  • Removed dialog FriendRequest and use ConnectFriendWizard instead.
  • Added new certificate format (Easier to parse/clean, more robust)
  • checkbox for using old cert format in security page. Old format used by default, to avoid confusing newbees
  • added new RsCertificate class to handle all certificate actions
  • Several small tweaks to the gui
  • Redesigned the Create Chat lobby dialog
  • Fixed compilation with newer versions of libupnp, except for debian sid which uses a patched old version (crap!)
  • update Spanish translation (from Senpai)
  • Added a new page for user request to ConnectFriendWizard. The page is shown instead of the conclusion page when
  • the user clicks on the certificate link in a message of type user request.
  • Enabled icons for VOIP plugin
  • Enabled display of plugin version in plugin items
  • Hide the import/export button, and set the new identity CheckBox set checked, when start a new Profile generation from Profile Manager.
  • Set PluginItem icon size to 24
  • Added automatic clean of the friend certificate in ConnectFriendWizard.
  • Fixed code for certificate link generation.
  • Added new Chat style Bubble, generated by Victor for RetroShare
  • Added a profile manager. Shoudl be useful for importing/exporting identities.
  • improved GenCertDialog logic, showing import buttons only when necessary, enabled key import when no key is present show count of new messages in the toolbar
  • improved chat dialog (enabled colored nicknames)
  • Reworked notification code in system tray.
  • Added a base class and a possibility for the main dialogs and the plugins (derived from MainPage) to provide a notifier.
  • added systray notifications for chat lobbies.
  • Enabled some more translations in news feed items and fixed German translation.
  • Removed not needed file "Thumbs.db" in skin directory.
  • improved pgp cleaning function
  • Merged branch v0.5-OpenPGP into trunk. Please read the following important release notes:
  • User-level changes:
  • libgpgme is not used anymore; it is replaced by a built-in piece of code called OpenPGP-SDK that was improved to be used by RetroShare for handling PGP keys.
  • the gnupg keyring is not used anymore. Now, RetroShare has it's own gpg keyring, shared by all instances.
  • On linux it's located in ~/.retroshare/pgp/. A lock system prevents multiple locations to read/write keyrings simultaneously.
  • the trust database from gnupg is not documented, so RetroShare cannot import it. This comes from the fact that the GPG standard (RFC4880) asks explicitly not to export trust information. So RetroShare has it's own trust DB shared by locations. This means you need to re-trust people.
  • at start, if no keyring is found, RS will propose to copy the gnupg keyring to use your existing keys. Clicking on "OK" will do the copy, and you should find back all existing locations, except for DSA keys.
  • locations for which the suitable keypair is not in the keyring will not be displayed in the login window locations for which the suitable keypair is not a RSA/RSA key will not be displayed. RetroShare does not support DSA/Elgamal keypairs yet.
  • a key import/export exchange function has been added in the certificate creation window (you go there from the login
  • window by clicking on "manage keys/locations". This allows to easily create a new location with the same pgp key on another computer. To obtain a suitable keypair using gnupg, you need to concatenate the encrypted private key and the public key into an ascii file.
  • This can be done using:
  • gpg -a --export-secret-keys [your ID] > mykey.asc
  • gpg -a --export [your ID] >> mykey.asc
  • importing a key with subkeys in not yet possible. Please remove subkeys before importing.
  • The code has been tested for a reasonable amount of time, but it's not possible to prevent some new bugs to appear. Please report them asap supplying: call-stacks if possible, and terminal output. In particular, openpgp has some assert()'s that should not be triggered unless RetroShare is calling it in an improper way.
  • Internal changes:
  • a specific component, PGPHandler, takes care of the interface between openpgp-sdk and RetroShare openpgp-sdk is c-code, with it's own memory management, which has been kept well separated from RetroShare.
  • GPG Ids are now a specific class (not a std::string anymore) for code consistency reasons. As strings are still used in many places, this requires a few conversions. In particular, AuthGPG takes strings as function params and calls GPGHandler with the proper PGPIdType class. In the future, RetroShare should only use PGPIdType. The same will be done for SSL ids.
  • signature cleaning is still handled by the Retroshare built-in function, not by openpgp, but we will do this later.

New in Portable RetroShare 0.5.3c_5190 (May 31, 2012)

  • Improvements:
  • fixed incompatibility with Qt < 4.6
  • Sort participants list in the chat lobby case insensitive.
  • Added check for empty lobby nick name. Moved notify of lobby nick name change from the gui to p3ChatService. Added missing mutex locks for p3ChatService::_default_nick_name. Recompile needed.
  • Added patch from Imanuel - Added new placeholder %style-dir% for ChatStyles.
  • Fixed replacing of %color% in ChatStyle. It should not be replaced after %message%.
  • Redesigned ConnectFriendWizard as ui file. Added new base class DropLineEdit. Fixed german language.
  • Added patch from braindead: changed base-class of AvatarWidget to QLabel
  • Switched back to not optimized compile on Windows.
  • Added changes from braindead: - simplified avatarwidget - prepared property-dependend stylesheets
  • updated ubuntu changelog
  • Optimized RsCollectionDialog (still without thread). Enabled extended selection and mark with the key 'space'.
  • main enabled notifyQt after creation of GUI
  • forgot ifs in notifyQt
  • removed data race in QObject::connect() vs. NotifyQt signals by enabling notification signals only after GUI is created
  • Added dynamic locking function for the OpenSSL library. This is needed when using OpenSSL from multiple threads.
  • Improved the default recommendation text
  • switched chunk per peer and max chunk age to previous values, now that chunk cannot be slowed down by slower peers
  • Added a default styleSheet for the "Confirm Friend / Add as Friend" Button
  • Fixed handling of html links in HandleRichText::formatText.
  • removed possible data race on boolean value (Not critical)
  • Moved HandleRichText from the folder "chat" to "util" and redesigned the source - Extended RsHtml::formatText to replace the RetroShare links with an image and enabled this for the certificate links in the system messages (friend recommen...
  • Improved mute feature, to update Blocklist, when the peer changes his name.
  • removed non-mutex-protected reference
  • Improved multi-source file transfer in two ways: - tunnels can borrow data chunks from only slower tunnels, to prevent blocking fast tunnels - tunnels can handle up to 50 data chunks at once instead of 5 Multi-source transfers are generaly ...
  • update language strings and corrected connect attempt message
  • Fixed issue with lost downloads when RetroShare exits (or crashes) during the load of the file transfer items. The pending list was not saved.
  • update translation strings, changed recommend friend context menu icon
  • Display old and new nickname to Peers during nickname change in ChatLobby.
  • Preparation for mute Peers in the Chat Lobby.
  • updated french translation (Max Romeo)
  • utf8 patch for notifyqt from AsamK
  • Fixed update (repaint) of the placeholder text of the quick view items in MessagesDialog.
  • Friend recommendation message - renamed subject - added to system message Recompile needed
  • french translation update (Max. Romeo)
  • Add the function to Mute peers in ChatLobby via checkbox.
  • Changed style of the reply/forwarded message.
  • Added a title label to Friend Request Toaster, little design changes.
  • fixed bug probably responsible for random crashes in DHT code
  • Removed hide/show Quickview function and moved Quickview little bit to the top. * Disabled to not stretch last column
  • Switched on optimized compile on Windows.
  • Removed usages of "std::istringstream" and "std::stringstream".
  • Added patch from braindead - Added empty entry to stylesheet-choice for "no stylesheet" and moved method "loadStyleSheet" from MainWindow to Rshare
  • Added (and modified) patch from Imanuel - Added ability to style the system messages in chat (e.g. Lobby management) Fixed german language.
  • Added new message flag for system messages like friend request. Show "RetroShare" as sender of system messages to myself. Added new quick view in MessagesDialog to filter system messages. Changed RetroShare link in friend request message to...
  • added paste own certificate to chat/forum context menu (patch from AC)
  • Added new notify on connect attempt by the local message system.
  • Removed not needed field in FriendRequest Dialog
  • Added new friend request toaster from defnax.
  • Added patch from Imanuel - Fixed base path for the external stylesteets
  • Optimized channel loading and layout.
  • Changed parameter of RsChannels from "std::string" to "const std::string&". Recompile needed.
  • Added threaded loading of channels (GUI).
  • added paste own certificate to chat/forum context menu (patch from AC)
  • Added function to mute some participants in chat lobbies
  • Switched on optimized compile on Windows.
  • Improved multi-source file transfer in two ways:
  • tunnels can borrow data chunks from only slower tunnels, to prevent blocking fast tunnels
  • inactive chunks are asked again after a longer time, to avoid wasting bandwidth asking them twice
  • Added new notify on connect attempt by the local message system.
  • Removed not needed field in FriendRequest Dialog
  • Added new friend request toaster from defnax.
  • Fixed base path for the external stylesteets
  • Optimized channel loading and layout.
  • Optimized RsCollectionDialog (still without thread).
  • Enabled extended selection and mark with the key 'space'.
  • Improved the default recommendation text
  • Added a default styleSheet for the "Confirm Friend / Add as Friend" Button
  • Moved HandleRichText from the folder "chat" to "util" and redesigned the source
  • Extended RsHtml::formatText to replace the RetroShare links with an image and enabled
  • this for the certificate links in the system messages (friend recommendation and user request)
  • Added new ObjectPainter for painting a button on a pixmap
  • Display old and new nickname to Peers during nickname change in ChatLobby.
  • update french translation (Max Romeo)
  • Fixed utf8 in notifyQt
  • Improved friend recommendation
  • Added a title label to Friend Request Toaster, little design changes
  • Added empty entry to stylesheet-choice for "no stylesheet" and moved method "loadStyleSheet" from MainWindow to Rshare (patch from braindead)
  • Added ability to style the system messages in chat (e.g. Lobby management)
  • Added new message flag for system messages like friend request.
  • Show "RetroShare" as sender of system messages to myself.
  • Added new quick view in MessagesDialog to filter system messages.
  • Changed RetroShare link in friend request message to certificate.
  • Added new subject image for the system messages (defnax).
  • Removed not used notify in message service.
  • removed minimal version
  • Improved TR routing strategy:
  • updated base forward probabilities to larger values
  • used a minimum FP to 1/nb_connected_friends instead of 0. This is the larger non-explosive value.
  • changed tunnel management time to 2 secs instead of 1, setting the overall number of TR/s emmitted
  • for all downloads to 0.5 (Should reduce the TR load for the whole network by a factor of 2).
  • Activate DHTML in Doxygen Documentation, for Fold in/out Class hierarchy images.
  • New Doxygen configuratin for Retroshare GUI, see at
  • http://notdefine.de/retroshare/retroshare/trunk/retroshare-gui/src/html/index.html
  • Add missing includes "unistd.h" for compiling with gcc 4.7.0. (Patch from AC)
  • Added a label for Connect Attempt after nickname "wants to be friends with you on RetroShare"
  • Added "You have a friend request" label to FriendRequest Dialog
  • Renamed "Accept Friend Request" Button to "Confirm",
  • set correct stylesheet for new forum item
  • Added stylesheet for the Friend Request Buttons
  • Added new basic class for a QLineEdit with a clear button - LineEditClear.
  • Enabled file preview on Windows.
  • The link file to preview a not finished download is created in temp directory.
  • Added a messagebox when preview a not finished download to remove the link file.
  • Fixed german language
  • Removed the max length from the ip fields in ProfileWidget to display all 15 digits.
  • enabled disabling autodownload for channel admin (patch from asamK)
  • Added Copy Certificate Button to ProfileWidget
  • Fixed compile of VOIP on Windows with Qt >4.7
  • Modified some defaults (auto check of shared directories to 15 minutes, time to idle mode to 5 minutes)
  • Added welcome message to the chat lobby
  • Changed display of the own name in FriendsDialog from "Name (me) Location" to "Name (Location)".
  • update new Spanish translation from Aitor
  • Added two new functions to libretroshare for writing formatted data to std::string
  • Added two new images from defnax to SecurityItem for SEC_TYPE_CONNECT_ATTEMPT and SEC_TYPE_UNKNOWN_IN.kkkkk
  • added new toasters for private/group/lobby chat.
  • added copy certificate button to profile widget
  • added topics to chat lobbies. Improved CL gui
  • added deferred checking of chunks in FT. Not fully functional yet, for backward compatibility reasons.
  • prepared libretroshare for OpenSSL-1.0
  • Bring the main window to foreground when receiving a link from the browser (Windows only).
  • Fixed compilation on MacOS 10.6 (patch from K.Gupta)
  • Update installer script, added spanish,arabic,italian,greek and portuguese language support
  • Optimized layout of the newsfeed items.
  • Fixed linking of the VOIP plugin on Windows (Exports all symbols from RetroShare.exe and import it in the plugins.
  • Removed the direct linking of the libretroshare and libbitdht from the plugins.)
  • Fixed utf8 characters in the transfer tab name of plugins.
  • Functional version of VOIP plugin.
  • Added ability for plugins to return their own PopupChatDialog class
  • Count the friends (gpg id's) instead of the locations (ssl id's) in the statusbar.
  • Moved update of the friends from QTimer to signals.
  • Combined p3LinkMgr::getFriendCount and p3LinkMgr::getOnlineCount and moved to p3PeerMgr.
  • Fixed scroll position of the text browser in the chat dialog when the friend changes the status and the info frame is shown or hidden
  • Reworked the start of a chat with a gpg id (doubleclick in friends tree). Removed the question to send a message when a chat
  • with an offline friend is started. Start the chat when only one ssl id exist (online or offline) or only one ssl id is online.
  • Show a messagebox when more than one ssl ids are online or all are offline.
  • Added check for required location during gpg key generation.
  • added BSD specific changes
  • made settings page system more automatic
  • updated french translation
  • mark local existing files in search dialog with red color
  • started working on VOIP plugin (not finished yet)
  • merged p3voRS code with plugin code
  • created new interface directory retroshare-gui/src/retroshare-gui
  • improved plugin system to allow adding settings pages from plugins
  • Bugs:
  • Removed data race in QObject::connect() vs. NotifyQt signals by enabling notification signals only after GUI is created
  • Added dynamic locking function for the OpenSSL library to prevent data races.
  • Fixed handling of html links in HandleRichText::formatText.
  • Removed possible data race on boolean value (Not critical)
  • Removed non-mutex-protected reference in p3turtle.cc
  • Fixed issue with lost downloads when RetroShare exits (or crashes) during the load of the file transfer items. The pending list was not saved.
  • Fixed bug probably responsible for random crashes in DHT code
  • Removed usages of "std::istringstream" and "std::stringstream", which are not thread-safe.
  • removed all calls to std::stringstream, causing a thread data race on windows
  • don't remove color and font when the last char is deleted from the chat text entry box (Patch from AC)
  • Fixed, hide "Accept Friend Request" Button for Unknown Peers
  • Improved Search Dialog (Patch from AsamK)
  • don't add friend sources count to anonymous count each time a result for the same file is received!, this could
  • lead to enormously large sources numbers
  • don't readd search in summary list if it was already removed by the user
  • don't clear the filter when new search results are added
  • when using the file name filter only show result from the current search, not also from previous searches
  • fixed adding only file types which were searched for, for this I created a new hidden column in summary list to store the file type
  • fixed sorting by file size/age, pad string with '0' instead of ' ' Search feature: a quirk I've found
  • decrease gui hanging:
  • when adding search results temporarily disable sorting
  • only add 250 instead of 500 items in one go
  • don't call selectSearchResults() for each item added to the result list; instead call hideOrShowSearchResult()
  • which only sets the hidden status of the added item, not the complete list
  • replace std::string with QString, removes unnecessary conversions
  • Fixed clickable links in forum message feed.
  • Added thread safe function for inet_ntoa in libbitdht using the existing thread safe function for inet_ntoa in libretroshare
  • Fixed deadlock when receiving a chat message with open history browser.
  • fixed version script (Patch form AC)
  • Fixed Download link for Email Invite
  • Fixed utf8 in dropping links to channels (patch from AsamK)
  • Fixed pasting cert links in the friend list (patch from AsamK)
  • Added code to allow pasting GPG certificates missing a newline at the end (patch from AsamK)
  • Fixed display of the location with utf8 characters in ConnectFriendWizard.
  • Fixed icon size in forums
  • Disabled adding new keys from friends of friends in non-discovery mode.
  • Fixed display of friend status in chat window
  • Fixed bug returning false while a string is expected in p3distrib
  • fixed crash in config dialog
  • fixed missing return value in ftcontroller.cc

New in Portable RetroShare 0.5.3b_4972 (Feb 21, 2012)

  • Improvements:
  • Added BSD specific changes - data directory and #including
  • improved plugin management to allow services to be used, and config pages to be added
  • Improvement to plugin system
  • made config page system more automatic, to allow addign config pages from plugins
  • added (disabled) checkbox and function to allow all plugins for development
  • added config page methods to RsPlugin class
  • Mark local existing files in SearchDialog with red text color.
  • added early sending of chunkmap request to newly added sources
  • Improvements to file transfer
  • corrected 2 potential flaws of swarming causing request of unavailable data (This should normally be taken care of on the server side!)
  • improved swarming test code with fault simulation
  • only ask CRC32 maps to peers that have a complete file.
  • Moved the news feed tab to the first position.
  • Added Cache system for GPG Certificates.
  • This should reduce gpg calls by 90+%.
  • Added translation for "[ ... Missing Message ... ]".
  • removed cache adding strategy to DL queue that was O(n^2). Now addign cache at the end of the queue
  • The channel message (in channels) is set to read when the user clicks on the show more button.
  • The forum/channel news feed is removed when the user reads the message in forums/channels.
  • The standard font is now used for new chat lobbies.
  • Added a new menu item to set the font of a private chat and chat lobby to the default font.
  • set max chunk inactivity period to 5 mins instead of 1 mins. Shoudl favor slow DLs. This is nw possible since missing bits will be re-asked regularly
  • Changed the color of the time of the compact chat style from red to gray.
  • disabled autodownload when subscribing to a channel.
  • Sort nick names by name in the chat lobby.
  • Added multi friend recommendation dialog.
  • You can start it from the tools menu in FriendsDialog.
  • Fixes:
  • Fixed tab order in config pages Directories and Server.
  • corrected stupid bug in settings causing crash when a plugin is ot loaded correctly
  • Fixed compile on Windows with enabled shadow build of Qt Creator.
  • patch by AsamK to save finished/checking transfers
  • Fixed private message notification. Remove offline private messages of none friends at startup and when a friend is removed.
  • Moved the removing of the history of removed friends from p3PeerMgrIMPL to p3ChatService.
  • DownloadToaster
  • Fixed handling of utf8 characters in the file name
  • Replaced QDesktopServices by RsUrlHandler to handle collections
  • Fixed crash after opening a collection
  • Fixed usage of utf8 characters in certificate links (gpg and location name)
  • added missing IPs to certificate links
  • Fixed bug when the user clicks on a link without http:// in a QTextBrowser. This link was opened directly in RetroShare.
  • Show clickable links in the channel feed message.
  • fixed reference to tryNetMode.
  • Attempted fix for maintaining External Port in Manual Forwarded Mode.
  • added check for RS_NET_MODE_EXT instead of RS_NET_MODE_TRY_EXT... as trys aren't used in p3PeerMgr.
  • removed tryMode from external interface - as this data is not available anymore.
  • Removed setting this parameter in p3peers.cc

New in Portable RetroShare 0.5.3a_4879 (Feb 3, 2012)

  • Improvements
  • Updated English Email Invite .
  • Set OSX default style to "Cleanlooks" - as AQUA style hides some windows.
  • Fixed missing headers for plugin manager.
  • Disabled ZEROCONF for OSX.
  • Optimized some internals in the news feed items
  • std::string -> const std::string&
  • QObjectList -> QSet
  • Added new compact style for chat.
  • Improved the HTML optimizer.
  • Start the CreateLobbyDialog from the list of chat lobbies with the privacy level of the selected item.
  • Added change nick name to the chat lobby dialog.
  • Optimized layout of the chat dialogs.
  • Added (make functional) the lobby menu in the context menu of the gpg and group item in FriendList.
  • Added button to add/remove signatures and button to copy RS cert link to clipboard
  • Added doubleclick to join a lobby.
  • Disable the Startup Wizard. Most of the defaults are sensible now, so its no longer needed!
  • Fixed default data rates to sensible options: 200 kB/s down, 50 kB/s up.
  • Added Minimal certificates to discovery exchange. They are invoked if the standard cert is over 10k.
  • Switched std::vector.data => &(std::vector[0]) to remove linuxism in radix64.
  • Added new common widget FriendSelectionWidget for selecting friends and use it in CreateLobbyDialog,
  • ShareKey (forums and channels) and MessageComposer.
  • Fixed german language.
  • added retroshare certificate links: allows to paste certificates everywhere.
  • added certificate links in friend recommandations
  • added certificate cleaning method, to remove signatures at export
  • improved chat lobby GUI
  • added proper counting of peers in chat lobbies, using keep-alive packets, time stamps, etc.
  • Moved the chat lobby tabs to the FriendsDialog.
  • Extracted a new widget ChatWidget for the basic chat handling from the
  • PopupChatDialog and use it in ChatLobbyDialog too.
  • Added an own ui for the ChatLobbyDialog.
  • Saved settings of the ChatLobbyDialog.
  • Reworked SoundManager and SoundPage in the settings.
  • Added new icon in the statusbar to switch off the sound
  • Enabled Relays by default.
  • This will only effect people who upgrade from a very old version.
  • Other people will have to switch it on manually.
  • Default is 0 friends, 1 FOF & 1 General @ 1kb/s... max 4kb/s usage per peer.
  • Disabled Thread debugging.
  • Fixed up bdProxyId initialisation
  • Improved Error Code translation (for unknown entries)
  • cleaned up some of the std::cerr output.
  • Changed parameters of RsStatus interface from "std::string" to "const std::string&"
  • Fixed german language.
  • Added Native (Bonjour API) Nat Port Forwarding to OSX.
  • new classe p3zcNatAssist
  • moved some common ZeroConf functions / definitions around.
  • moved virtual tick() to parent class: pqiNetAssist
  • added zcNetAssist section to makefiles. (active for OSX build)
  • setup switch between p3zcNatAssist & upnphandler in rsinit.cc
  • Changes to support Relays.
  • added p3BitDht::addKnownNode() so that DhtIds can be used instead of SslIds.
  • switched from bdStdDht() functions to use bdModDht().
  • made DhtFunctions a class variable.
  • added function to modify NodePerBucket() parameter.
  • Bugfix for LinkType. peerConnectAddress.flags was not initialised.
  • Extra debugging of LinkType data (use LINKMGR_DEBUG_LINKTYPE).
  • cleaned up udprelay output.
  • Added Compile Rules to libretroshare.pro for building LocalNet Testing Version. (testnetwork)
  • Added NumQueryNodes() function to bdDhtFunctions.
  • Switched bdquery.cc to use bdNumQueryNodes().
  • Extended bdStdDht class to bdModDht to allow NodesPerBucket to be modified.
  • Fixed up Connection Fail Callback for Relay Servers.
  • Added Extra debugging for Proxy Connections.
  • disabled turtle routing for relayed connexions
  • Added Chat Lobbies: decentalized anonymous chat rooms.
  • Chat lobbies are private (on invitation only) or public (friends can join)
  • Bit of GUI to show lobby list, with one tab per active chat lobby
  • Most fonctionality of chat are ported to lobbies including status messages
  • Internally to libretroshare, lobbies are virtual peers to talk to.
  • Deriving a RsItem from ChatLobbyBouncingObject allows the item to be bounced
  • to all peers in the lobby.
  • Improved message splitting by adding sub item ids to lobby messages. Should
  • be ported to normal chat in the next version.
  • Added parent id to RsChatLobbyMsgItem, to allow threaded chat.
  • List of public lobbies at friends are requested only when needed
  • Major cleaning of p3chatservice.cc
  • Added new entry in config->transfers to allow reserving n slots to non cache transfers
  • Add the ip address of the DNSResolver to the top of the list of the connect addresses.
  • Little design improvements for Plugin Item
  • Added manual entry for plugins
  • Added relay connexions (Note: There are still some service changes required to
  • reduce the traffic over relays)
  • Merging Dht Relay improvements into the trunk. These changes should finally make relays functional.
  • Changed the way proxy/relay peers are selected in bdConnection. (needs more work).
  • Added LinkType to peer info in p3LinkMgr & rspeers.h interface.
  • Added getConnectionType() to p3PeerMgr. This defaults to FRIEND for the moment.
  • Provide information about Bandwidth, Transport and Peer Type via LinkType().
  • Added RateCap() to limit traffic over Relay connections.
  • Set Internal Rate to 75% of Relay Limit to account for transport overhead.
  • Added various #include "util/rswin.h" to fix compile errors with standard ssl package.
  • Removed Local variables (mConnectProxyAddr, etc) which were hiding Class Variables.
  • Cleaned up bits in pqissl.cc and p3linkmgr.cc
  • Increased UDP Relay Packet size (max transport of 1400 bytes per UDP packet)
  • Modified checkRelay() to use Low Pass Filter to calculate Relay Bandwidth.
  • Improved udprelay debugging.
  • increased (x2) Relay Lifetimes - this is so that enough useful data can be transported (1meg).
  • Added LOCALNET_TESTING code to rsinit.cc. This allows Port Restrictions to simulate firewalls.
  • more debugging and minor bugfixes.
  • libbitdht
  • added Relay Flags to bdNode::setNodeDhtMode()
  • added dropRelayServers() / pingRelayServers() functions for mode switches
  • added utility function: bdFriendList::findPeersWithFlags()
  • added utility function: bdSpace::clean_node_flags(uint32_t flags)
  • added RelayMode to ConnectManager.
  • added failedConnection callback when in Server Mode.
  • added incomplete udpproxylayer code. (not compiled)
  • libretroshare
  • added RsPQIService to allow plugins based on peer-to-peer services
  • added Configuration to p3BitDht for storing Relay Settings. (bit Hackish!)
  • added RelayHandler & getRelayReceiver() - to outsource some Relay functions.
  • RelayHandler_InstallRelayConnection() & RelayHandler_LogFailedProxyAttempt()
  • added RelayServer, Mode and RelayAllowance to external DHT interface.
  • added p3PeerMgr::getGpgId() for ZeroConf usage.
  • updated parts of pqiassist virtual interfaces.
  • added Bandwidth storage to udprelay.
  • modified the way Relay Slots are allocated to match GUI interface.
  • ZeroConf now working on OSX.
  • added ZeroConf to OSX compilation.
  • extended rsDht interface to expose Relay configuration.
  • retroshare-gui
  • added Relay configuration panel.
  • Added the real size of all files of a collection to the link when added with drag and drop.
  • ConnectionFriendWizard: Show the messagebox "Your Cert is copied to Clipboard" after copying the cert into the clipboard.
  • Removed "release" from the win32 build in retroshare-nogui.pro.
  • Added retroshare-nogui to the subdir project.
  • DHT (Merging r4705 through r4717 from retroshare/branches/v0.5-dhtmods)
  • Switched on Local BadPeer DHT Filter.
  • This will remove any peer detected to be spoofing yourself or your friends.
  • This list is also shared with you friends. (in Test Mode).
  • Added Cleanup of BadPeer Filter.
  • Instead of permanent ban, peers are be banned for 6 hours.
  • bdManager periodically calls this - which prints out ban list too.
  • Added Checks against spoofing to UdpStunner.
  • Throw away Stun Results where remote_addr = reported ext_addr.
  • Added extra checks to ensure that the same Ext IP is returned, before reporting.
  • accept BadPeer List from DHT BadPeer Detection.
  • Changed BanList Service Id from Test ID to Real ID.
  • Added new widget for hashing files.
  • Added new common class FilesDefs to handle informations of file types like icons and names.
  • Removed calls to exit() in rsinit. Replaced them by proper return false
  • Adjustment of some values for file transfer: some delays can be larger, now that chunks are shared between sources. This makes file transfer more stable:
  • FT_TM_DOWNLOAD_TIMEOUT: 10 -> 20 secs (RTT limit of 10 secs is too low -> transfers in long tunnels kept switching between active and inactive)
  • INACTIVE_CHUNKS_CHECK_DELAY: 60 -> 240 secs (Chunks are kept longer before beign cancelled, which is now affordable)
  • MAX_TIME_INACTIVE_REQUEUED: 60 -> 120 secs.(Transfers a kept longer before being re-prioritized in queue)
  • DHT:
  • Reduced Default DHT Message rate from 50msg/sec to 5msg/sec
  • (Searches now take longer, but it should make crappy firewalls happy.)
  • Added Interface to allow this rate to be dynamically changed (no GUI yet).
  • Bugfixes for p3BanList: removed internal IPs from Lists, fixed AddBanPeer() logic bug.
  • Disabled p3Dsdv, after brief test.
  • Added knowledge of Friends / FoFs and Relays to DHT.
  • Added bdFriendList class to store this information.
  • Added Checks against known Peer:IP information to detect bad peers.
  • Bad Peer Checking is in Test Mode Only for the moment,
  • New Interfaces to exchange above information with libretroshare
  • Cleaned up various compiler warnings.
  • GUI
  • Added new button "Open Collection" in TransfersDialog.
  • Show main window with click on system icon when the main window is minimized.
  • Beautified RsCollectionDialog.
  • Fixed german language.
  • Added new column "Last Contact" to the FriendsDialog and MessengerWindow.
  • Moved some more basic functions to FriendsList and optimized the exisiting code.
  • Added translation for plugins and added german language to LinksCloud. Recompile needed.
  • Changed the name and the description of the plugin to utf8.
  • fixed download priority handling. Proof-tested on multiple DL from the same peer.
  • libretroshare Improvements:
  • corrected disabled RequestdirDetails in FileIndexStore to be able to retrieve root directory of a user ID
  • removed dependency of mRateIncrease into measured rtt -> would cause very slow transfers through long tunnels
  • Removed compiler warnings.
  • Added p3BanList Service and DataTypes to exchange Bad Peer information.
  • Added Plumbing to get info from network to DHT and back.
  • Supply Friend List from p3LinkMgr
  • Supply Friend of Friend List from p3Disc.
  • Added p3Dsdv Service and DataTypes for NetworkWide Routing (Testing Mode).
  • Various BugFixes.
  • Patch Manual Forward mode to preserve user selected Port.
  • implemented handling and creation of collection files
  • improved computation of CRC32 maps (separate thread, cache keeping, sending of keep-alive packets)
  • fixed compilation of some tests in libretroshare/src/tests/ft/
  • updated german language
  • started implementing a file mapper to allow linear download of data with automatic de-fragmentation (not enabled yet)
  • updated build scripts and .pro files forubuntu oneiric
  • fixed plugin system on windows.
  • updated french translation
  • Add the private chat message to the history after removing the private chat
  • queue (when the user has read the message).
  • Added loading text to forumsdialog and enabled percentage numbers to be shown also
  • added display of TR forwarding probability as a function of depth.
  • Moved the chat history into the libretroshare.
  • Now the history is saved encrypted. Please delete all files with "chat*.xml" in your profile folder.
  • Added new config p3HistoryMgr and interface p3History.
  • Added new option to limit the count of the saved history items.
  • Added new simple html optimizer "RsHtml::optimizeHtml" to reduce the size of the html strings.
  • Changed default random number generator to use RAND_bytes from openssl.
  • Updated random testing code and fixed compilation
  • Fixed compilation on FreeBSD, and improved sorting on DHT window
  • (Patch from Ben Laurie)
  • Added next unread button to forums (patch from devnewton #3401840)
  • Fixed inaccurate text in transfer page
  • Removed calls to rsfiles->get{Download,Partials}Directory() in RsDiscSpace
  • class, since it would trigger a call to ftController
  • Changed names of functions in ftTransferModules to locked_* when appropriate
  • (helps debugging)
  • Show the availability status of peers at the level of locations instead of GPG
  • keys (patch from AsamK)
  • Added paste of RS links to post on channels, and additional check that the file
  • is actually shared.
  • Stopping hash when a shared directory containing the file was removed
  • Reworked the process of the RetroShare links. Now RetroShare asks when
  • adding a file or a person link and shows a detailed result.
  • Merging distrib split into trunk, suppressed p3distrib in services
  • Send msg in plain text when the html encoding does not change anything
  • into the message. This drastically reduces message s size
  • Added missing status frame for idle.
  • Merged QoS branch into trunk.
  • Set own status initially to online
  • Added double click to NetworkDialog to show the peer details
  • Put some pqissl warnings in log file only in debug mode, since this is quite CPU demanding
  • Added new widget to display an avatar with or without the status frame - AvatarWidget.
  • Changed all existing avatars to AvatarWidget.
  • Added avatar image to ConfCertDialog (defnax).
  • Added new class AvatarDefs to get the avatar for a ssl id or gpg id
  • changed local root directory to be "My files" instead of SSLid
  • set default of the signature checkbox in ConnectFriendWizard to disabled
  • set the initial option for the download directory to network wide only
  • set the default of a new shared directory to network wide
  • added private groups option to forums
  • Added a new checbox in the settings (NotifyPage) to enable/disable the
  • new SecurityItem. It is enabled by default, but all existing users need to enable it.
  • Added new buttons to SecurityItem to add/remove the peer and view peer details.
  • Added new call to notifyListChange with NOTIFY_LIST_FRIENDS in AuthGPGimpl::AllowConnection.
  • Fixed german language.
  • Removed "location:" before the ssl name in FriendsDialog and MessengerWindow.
  • Bug fixes:
  • Fixed handling of utf8 characters in lobby nick name.
  • Fixed small bug in certificate correction
  • Added Check for successful Req creation (was crashing with NULL pointer).
  • Fixed echoes in chat lobbies
  • added a time stamp to lobby events (new item tag)
  • controlling time stamp of lobby msg and event: drop packets if time is older than cache duration.
  • moved connexion challenge code to lobby management loop
  • added new type of lobby invite to handle connexion challenges and avoid false invitations in the GUI
  • New lobby event format is not backward compatible -> "peer typing" and "peer joined/left" will need
  • the new version. Messages are still compatible)
  • Fixed crash when closing a chat window.
  • Fixed Auto-Download Button
  • Fixed wrong display of the news feed notify in FriendsDialog when the tabs were moved.
  • Another fix for the discovery fiasco... Turns out that I broke the system with my previous changes.
  • Allow certificates through with no attached GPG Certs.
  • Added StoreAllKeys() call after adding new GPG Certificate.
  • lobby participant list now updated when peers join/leave
  • Added chat lobby privacy type to lobby invite => lobby type is propagated
  • correctly to friends that are invited.
  • Bugfix for natassist (zeroconf returns 0.0.0.0:0 when its doesn't work).
  • Logged IP Addresses for Failed incoming connections.
  • Hacked IP address into the NewsFeed notifications (ugly).
  • Attempts at fixing disconnections :)
  • Added limit of 10kB for Certificate size. If it is bigger - discard certificate.
  • Remove certificates for slow / trickle connections (for Relay connections).
  • Disabled check for gpgcert text in p3disc.
  • Disabled creation of GPG Cert in AuthGPG.
  • Added extra error code to pqinetwork.
  • Added DataRate accounting to Relay and Dht.
  • Rates are exposed through rsDht.h interface.
  • Added LastIncomingTS() to pqistreamer.
  • Turned HeartBeat reset() into a warning.
  • Added NoPacket in 60 sec reset().
  • Minor typos/errors corrected.
  • Fixed message reply and forward. The new lines were removed falsely.
  • Improved logging of Connection Behaviours.
  • Added history for chat lobbies and disabled it until the lobbies are saved.
  • Added check in cachestrapper to see if a duplicate cache has been requested.
  • In this case, don't cancel the old one - just keep going!
  • Added the size of the collection to the link only for files (missing test)
  • Show the correct name in the title of the RsCollectionDialog when the filename contains ".".
  • Fixed creating of the download path of the collection when running as portable version.
  • bug fixes (by AsamK) to make rscollection files compatible with utf8
  • fixed bug asking data to deleted mTransfer
  • bug in CRC32 map cross-checking: only downloaded chunks would be checked.
  • fixed bug in file transfer re-allocating a local variable
  • removed delay in file checking that would cause excessively long file update cycle
  • implemented slice sharing between peers.
  • Replaced spaces with in RetroShare links.
  • obfuscation of TR and SR by random rare non-increase of length 1 requests (original idea by Costa)
  • layout changes for PluginItem, fixed qrc resource load in plugins.
  • corrected bug about wrong layout of friend list (patch from asamK)
  • corrected bug that would allow a direct friend to DL a file that is NETWORK_WIDE only, using direct transfer
  • fixed issue of loading the correct instance of RetroShare.conf when switching
  • locations (Patch from AsamK #3423256)
  • fixed utf8 issues (umlauts in the Windows user name, search string with utf8,
  • location names, links from browser, history manager)
  • fixed update of friend status in chat window
  • fixed bug with anonymous channels asking for friends to be sources
  • fixed link passed issue due to usin self-closign links (Patch from Asamk #3418941)
  • fixed display of filename when an upload is a partially downloaded file
  • removed early pruning of TR which was preventing any TR to go beyond the limit
  • in case of heavy traffic. Pruning now applied probabilitically at end of loop.
  • fixed missing TCP connection call - when peer is found on the DHT.
  • save IP address for DHT display.
  • store Action in action Queue (the BUG).
  • fixed sorting of transfer by priority
  • fixed utf8 issues in sending cert by email (patch from asamK #3393826)
  • added a lock into ftTransferModule::recvFileData() (Crash reported by Costa
  • of data race due to storing data in a deleted transfer module)
  • Added chunk splitting in case part of the file transfer data does not come.
  • Added strategy to ask again for missing data. The combination of these two cannot
  • result into an infinite loop (as before)
  • Fixed bug fue to deleting ftFileCreator used by datamultiplex before
  • asking datamultiplex to remove it!
  • Fixed crash in pqiSSLstore::readPkt() when rsSerialiser->deserialise() returns NULL
  • Added auto-split of long private messages, and re-combination of partial messages on
  • client side. Corrects the bug causing disconnection when sending messages of side
  • larger than the maximum packet size
  • Patch from AsamK to fix up crash at startup due to a missing else in config load
  • fixed up color codes for qt 4.7 in NetworkGraph (bug in qt::lighter())
  • corrected a few bugs in the cert cleaning method.
  • corrected several utf8 issues (for peer names, in private chat and file list, and search)
  • fixed time display in security item
  • removed potential mem leak with p3distrib group edit
  • Added check for administrator rights to add/remove the retroshare:// protocol.

New in Portable RetroShare 0.5.2a_4550 (Aug 11, 2011)

  • Improvements:
  • Plugin system:
  • Added configuration saving for plugin manager and serialization methods
  • added a list of accepted plugin hashes
  • added plugin widget for each plugin in settings, to allow enabling/disabling plugins
  • updated LinkCloud plugin to new rsPlugin class
  • put the addconfiguration for plugin manager in rsinit.cc a bit earlier to allow to load
  • the list of accepted hashes early enough
  • added icon for disabled plugins
  • added missing Q_INIT_RESOURCE call to get the plugins icon loading correctly
  • GUI:
  • Fixed an error when cancel the login password dialog at startup, the password dialog can be canceled.
  • Fixed layout in GeneralPage under Windows (there are three additional checkboxes).
  • Applied patch to enable the sort of the columns star and unread in messages (from AsamK)
  • Added missing "FORWARDED_PORT" case to natstatus
  • updated Dht and Nat Indicators to accurately reflect Network status. Roughly:
  • DHT. Off: gray, ERROR: red, NO RS PEERS: yellow, GOOD: green.
  • NAT. Offline: gray, BAD NET: red, NO DHT, or FIREWALLED: yellow, GOOD: green
  • added Advanced mode to the GUI
  • Switched ServerPage to use netMode, rather than tryNetMode. This fixes the Network Status.
  • Added "Advanced Mode" to Settings GeneralPage.
  • Store / Set Advanced Mode via rsConfig::get/setConfigurationOptions.
  • removed
  • from Linux / OSX emails - made it Windows Only.
  • updated GetStartedDialog text.
  • disable GetStartedDialog is AdvancedMode is set.
  • Enabled buttons for "Invite Friends" and "Add Friend". Linked to Email Invite, and Connect Friend Wizard.
  • Switched out FAQ for links to website, and email support buttons.
  • Added Basic Dht Details Window to Retroshare GUI.
  • created gui/dht/DhtWindow class.
  • brought across the basic structure from PeerNetQt... will be a condensed version of that GUI.
  • added to status Menu.
  • enabled via #define USE_DHTWINDOW (which is defined! in MainWindow at the moment).
  • Dht Details only displays Dht Peers at the moment.
  • Net, Dht and Configuration changes.
  • set PortForward in NetStateBox when the Network has been setup.
  • add GeneralConfig to rsConfig external interface.
  • enabled ADVANCED configuration option.
  • Addition of a "Getting Started Guide".
  • Optimized layout of the SubFileItem.
  • Optimized layout of the private chat window.
  • Show the cancel button only when downloading or when used in CreateChannelMsg.
  • Fixed layout problem (vertical scrollbar) in ChannelFeed.
  • Added a new image to the private chat window to set the window always on top.
  • Indent text of the channel message and set it to selectable.
  • Removed the single notify systray icon (combined icon) and combined it with the
  • normal RetroShare systray icon. The user can choose, which notify icon is shown as
  • single icon in systray or with the normal RetroShare icon.
  • Key management:
  • added a signature add/remove button in connect wizard, only when gpgme-1.3.1 or greater is used,
  • based on the availability of the GPGME_EXPORT_MODE_MINIMAL option.
  • Connectivity:
  • Added Second Queue, to check if connections are actually valid before installing.
  • Added Check of Time for main Core Cycle.
  • Fixed Bug in choosing port for Proxy UDP. Chooses a Random one between 30000-50000.
  • Added Address update from p3NetMgr => p3PeerMgr, when external address has been determined.
  • Simplification of p3ConnectMgr => p3LinkMgr, p3PeerMgr & p3NetMgr.
  • p3peermgr now uses RS_NET_MODE_XXXX instead of RS_NET_MODE_TRY_XXXX
  • p3netmgr maintains both TRY and ACTUAL mode (not visible through old interface -- TO FIX)
  • added default to UPNP mode.
  • Increased TCP WAIT time to allow external port to stabilize.
  • Improvements to tcponudp library to allow multiple UdpStacks / ports, with alternative receivers.
  • Improved a lot UDP Connection Code
  • Increased Timeout Periods for UDP connections - this was stopping half of them from succeeding.
  • Export UDP Addresses to DhtWindow.
  • disabled DIRECT UDP connections (Not always stable, especially if you are firewalled, and not
  • needed as a TCP connection can be made!)
  • Added DropPeers() as NON-ACTIVE (this allows peers which aren't VISIBLE to still try and connect)
  • Resurrected the UdpStunner code, and improved it.
  • Added UdpRelay code.
  • Modified startup code and ssludp code to use the new tcponudp and add a stunner.
  • Added notifications of Failed Connection Attempts in both ways
  • Services:
  • Fixed the sending of outgoing messages.
  • Refactored p3chatservice move avatar declaration to p3chat header and encapsulating config methods
  • added www.myip.dk, and removed showmyip.org address from extaddrfinder
  • Internationalization
  • Fixed german language.
  • Changed the generation of the gpg key and location to utf8.
  • DHT
  • Added Bloom filter to speed up finding RS peers in DHT.
  • Added External DHT Interface to display Connection Information.
  • extended p3bitdht to provide RsDht interface. (p3bitdht_interface.cc)
  • Switched on Dht "Attach" Mode if RS is firewalled. (and not nice firewall).
  • Added interfaces to enable AttachMode switch.
  • Updated bdboot file.
  • Tests:
  • Restored and improved regression test for tcponudp
  • Added another Test UdpLayer: TimedUdpLayer, This simulates the firewalled situation, by
  • only accepting packets after 60 seconds.
  • Added quick and dirty BitDht Packet check. test against "d1:" for the first 3 bytes. This should
  • not conflict with Stun, Relay or TOU packets.
  • packaging
  • Added win32 build bat for libbitdht
  • Bug fixes:
  • Fixed "double-click" chat startup bug, the gpgOnly flag was incorrectly set false.
  • Removed popup window for file copy error, and redirected the message to std::cerr, to save users.
  • Set maximum port value to 65535 instead of old arbitrary value of 50000, and warned about
  • system-reserved ports in server settings gui enabled sorting and added dht icon for the window
  • Fixed bug in dnsresolver reset function
  • Silly Bug, overwritten the mConnectFlag with the Bandwidth parameter.
  • Added missing mutex protection that caused random SIGSEGV in p3disc
  • Corrected a bug due to reading uint64_t with wrong format on some systems, which caused the hash cache to sometime fail
  • Fixed bug for 'copy error' and losing cache data conflict in unix and windows style directory
  • names led to cleaning of remote and local directories in Cachestrapper::loadlist()
  • Bugfixes to serialization
  • print out messages when serialisation fails.
  • removed BUG in TlvGetString() which allows a zero length TLV
  • Fixed startup bug (loops into FAILURE)
  • Fixed buggy rs_inet_ntoa
  • Fixed a bunch of apple gcc warnings. mainly for(;;); => for(;;) ;
  • Stops loading of a cache in p3GroupDistrib::loadFileMsgs on shutdown of RetroShare.
  • Fixed early initialization of QIcon in LinksCloud plugin
  • Fixed duplicate msgs found between cachefile being formed (caused by not marking cache opt loaded files as local or not)
  • also missing own-msgs bug caused by not accounting for msgs created by users
  • Added a name to the RsMutex class, allowing debugging of the waiting time for a lock of RsMutex in
  • rsthreads.h with #define RSMUTEX_DEBUG 300. That means all locks waiting longer than 300ms are logged into the stderr.
  • Added missing notify when sending a message to an offline user.
  • DHT code:
  • fixed up buggy overloading for the udplayer (for testing).
  • added processing multiple (5) remote processes per tick
  • removed unused variables from query data structure.
  • defined out debugging in bdSpace, removed old functions.
  • More agressive attempts to find proxies for connections.
  • made "final query attempt" use exact peer address rather than midid.
  • tweaked bdconnection debugging.
  • increase CONNECTION_MAX_TIMEOUT from 30 => 45. wasn't enough!
  • Limited bdQuery::QueryIdlePeriod to 15min (was unlimited).
  • added bdQuery::PotentialPeer cleanup functions - for more robust reporting.
  • fixed bdQuery debugging printouts.
  • Implemented BITDHT_QFLAGS_UPDATES flag.
  • TcoOnUdp code:
  • Reduce Maximum Transmission size from 1500 -> 1000. This is the cause of Failed Connections.
  • It looks like UDP packets are being truncated from 1520 -> 1492 bytes, and this is killing the

New in Portable RetroShare 0.5.1d (Jun 27, 2011)

  • Found the CacheTransfer Killing Bug.misplaced brackets!
  • fixed a bug in pqissl and pqistreamer. The 2nd one was responsible for disconnections and errors in GetTlvString type
  • Fixed the Missing Cache File bug.
  • Added Old Cache Storage... so these can be retrieved.
  • Connected up the CancelCacheFile() -> FileCancel.
  • Removed ipaddr = 1 bug
  • added #ifdefs to remove debugging output in p3BitDht.
  • corrected uninitialized value
  • made "." be a plugin directory for debugging only
  • corrected display of uploaded size
  • made search case insentitive, by default
  • made the default behavior for multiple keywords search to eb an AND between keywords (emule style)
  • Fixed html title bug in the forum message when answering to a message in ForumMsgItem.
  • Fixed enabled sate of the new message buton in ForumsDialog.
  • moved Plugins page little bit to the top of the settings
  • PluginManager:
  • Fixed compile under Windows.
  • Removed CloseHandle of GetModuleHandle.
  • Added missing return when the function entry of the plugin is NULL.
  • Fixed checking for the extension ".dll".
  • Fixed reaction of the checkbox "web of trust". Now the list of unvalid gpg keys is shown or hide directly after the click.
  • Fixed calculation of the unread messages in MessagesDialog. The starred messages was not counted as unread.
  • Set some tree widgets to allColumnsShowFocus.
  • added settings page for plugins.
  • fixed LinksCloud Plugin
  • fixed plugin .pri file for windows and ubuntu
  • added dlopen method for windows. To be tested.
  • Added basic infrastructure to plugin system in libretroshare and retroshare-gui.
  • ported LinksCloud to a new plugin, and removed it from main sources
  • Made the hash-cache more compliant with mounted/network drives:
  • corrected bug that would wipe out the cache file every other start
  • missing root directories are not discarded anymore, but kept empty, unless the user really removes them
  • Reworked settings dialog:
  • The settings page loads the data with the first show. The dialog now starts faster.
  • Cleaned DirectoriesPage, removed the directory list and save the data with the OK button.
  • Automatic add the recommended friend(s) as CC in the MessageComposer.
  • Fixed crash in ForumsDialog (second try).
  • Added a "return" if QTreeWidgetItem = NULL, to stop crash.
  • Fixed crash in ForumsDialog (hopefully)
  • send plain text message instead of html, when the text contains no html specifics.
  • enabled new Spanish translation
  • Fixed refill of the threads tree after receiving a new message.
  • Now the new message is expanded.
  • Moved the fill function of the ForumsDialog to a QThread.
  • Fixed memory leak of the fill thread of the history browser.
  • cleaned display of TR statistics
  • Optimized the functions for the forum messages.
  • used "const std::string&" for the parameters
  • used "std::map" for the read status
  • removed useless variables
  • Added new define DEBUG_FORUMS in ForumsDialog.cpp.
  • Added function to generate mass data for the forum messages.
  • Fixed german language for the FriendsDialog.
  • Added a placeholder text to the message list in the MessagesDialog (currently used when Starred is selected).
  • Connected the menu actions reply, reply all and forward in MessagesDialog. Now they work again.
  • Added missing Q_OBJECT to TreeStyle_RDM and fixed translation.
  • MessagesDialog:
  • Renamed "Favorite Tags" to "Quick View".
  • Added the quick view "Starred" to the list to show all messages signed with a star.
  • Redesigned the MessagesDialog to open the message in a new tab or new window for reading.
  • The MessageComposer is now only for writing a new message or editing a message from the draft box.
  • Added a new setting to the MessagePage.
  • Added a second tab for Router Statistics
  • renamed Tunneling to Router Requests
  • added missing info for search depths
  • improved tunnel statistics gui
  • moved TR filtering to beginning of TR handlign function. Makes it more consistent w.t.r. the displayed turtle statistics
  • added automatic limitation of turtle search and turtle tunnel requests as a function of current traffic
  • added additional statistics from turtle router.
  • Moved the star to the first column in MessagesDialog.
  • Fixed debug output in FriendsDialog.
  • Show the selected tag in the tab title in MessagesDialog.
  • Included patch to compile on OpenSUSE 11.4 (from AsamK)
  • Added a star column for messages.
  • added a display of turtle search/tunnel requests over time, to help spotting potential spammers
  • Added to sort by Age when one day, one week or one month is selected
  • Fixed compile Problems on Ubuntu LTS
  • Added tags to the MessageComposer.
  • Added context menu to contact list in MessageComposer.
  • Show the RetroShare id of the peer and the signers of the key in ConfCertDialog as clickable links.
  • Disabled the CACHE_OPT code, until the duplicate cache entries is fixed.
  • re-worked printcache to analyse a large batch of cache files.
  • Added "Copy RetroShare Link" of the selected peer in PeersDialog and NetworkDialog.
  • Removed the + button in channels and forums and moved the post button to the right side.
  • Added tooltip's for Messages columns
  • Added word wrap to the title of the thread and the subject of the message to avoid the stretch of the splitter.
  • Changed style sheet of the tags in MessageDialog to gradient color.
  • Added a new button in the forums dialog to download all links in the selected forum message.
  • Fixed style sheet of auto download button in channels.
  • Removed the difference of the separator for Linux and Windows.
  • Removed extra "/" of the filename (e.g. "E://") of the hashed file when sharing a whole drive.
  • fixed bug related to opening cache hist file in text mode for windows
  • added cleaning of cipher context to authssl encrypt decrypt functions
  • added header to trustview which caused compilation error
  • Fixed drag and drop of files to a forum message with utf8 chars.
  • Fixed recommend friend.
  • fixed the layout of ForumMsgItem
  • added to RetroShare Help page new commands entry for "-r retroshare://..."
  • Fixed some more utf8 handling in the GUI.
  • Optimized creation of the RetroShare links for forum and channel messages.
  • added history cache optimisation to subscribed/client groups.
  • added couple more ifdefines to remove cache opt code.
  • fixed ForumsMsgItem to not stretch the widget
  • Added new RetroShare link format to write a message
  • retroshare://message?id=...[&subject=...]
  • Added clickable links in ForumMsgItem for the signer of the message to start the MessageComposer.
  • Fixed creation of the RetroShare links as anchor.
  • Corrected bugs in chat:
  • sending large messages now works, thanks to RsChatMsgItem splitting (not 100% backward compatible, but avoids crashing)
  • removed crash due to dynamic_cast onto a deleted pointer.
  • Enabled on Private Chat to display for the status string smileys, when there is smiley codes used.
  • Added new RetroShare link format to start a search retroshare://search?keywords=...
  • Enabled key "delete" to remove search results.
  • Removed the GoTo buttons from the feeds and added clickable links.
  • Enabled space to switch the read state in MessagesDialog and ForumsDialog.
  • Added the name and location to the title of the MainWindow.
  • Get the name and location for the window tile and tray tooltip only once at start.
  • Added title to the RetroShare file links shown as toolhelp "hash (size)".
  • added script to gather statistics from ppa repository
  • suppressed channel source ID from the file source peer list
  • updated base resolution of RS icon to 48x48
  • Enabled drag and drop in ShareManager to add folders to the share.
  • improved strategy of cleaning unfinished cache transfers
  • fixed display inconsistency in tunnel local src/dst when getPeerDetails() call fails
  • always set location for connected peer. Previous settign was causing blank location display

New in Portable RetroShare 0.5.1c (Jun 27, 2011)

  • added print-cache code to the tests suite
  • Added new RetroShare link formats:
  • retroshare://forum?
  • retroshare://channel?...
  • Added "Go to" from the news feed of forums and channels.
  • Added "Copy RetroShare Link" to the forum/channel tree and messagees.
  • Fixed style sheet of the auto download button in ChannelFeed.
  • Fixed wrong size of the transfered link from the command line in EventReceiver.
  • changed policy for canceling cache files: only inactive transfers get canceled now.
  • used tr1::unordered_set instead of std::set to store pointer checking list, as it is more efficients for lookups
  • Adding a link from the browser now starts RetroShare when it is not running.
  • Added handling of RetroShare protocol under Windows.
  • Added new command line parameter "-r retroshare://..." for adding links to the registered running RetroShare.
  • attempt at making remoteDirModel less CPU intentive. Remove potential deadlock source in SearchDialog.
  • removed potential seg fault with decrypting cache file
  • implemented a verification for tunnel results.
  • When the network gets heavily loaded, some tunnel results happen to get back twice.
  • This stops the tunnel result sibblings
  • fixed cache opt bug related to new msg notice being flagged up for historical msgs
  • New dialog for defining own colors for the private chat window.
  • enabled file preview again for non windows users, using a direct call to the file in partials
  • added logic to deal with case where auto dl has been disabled then re-enabled after a manual download
  • for each channel msg post download request is now only called once.
  • fast simplification of code in pqistreamer, and added a missing =null in p3service that could cause a bug
  • Removed automatic cleaning of the certificate in p3Peers::loadDetailsFromStringCert.
  • Added new button in ConnectFriendWizard for cleaning the certificate.
  • Fixed cleaning:
  • added blank line after the armor header
  • moved the checksum to a new line
  • auto download option:
  • ability to enable and disable channels auto dl added
  • added gui update to channel feed
  • reduced path to only parent directory, to make cost tractable
  • added random bias to search and tunnel request maximum depth
  • added random (and biased) re-routing of tunnel request to improve tunnel length.
  • added a column for directory in flat view of shared files
  • made sign GPG key button disabled by default, and added a tooltip. As this action cannot be undone,it must be performed knowingly.
  • Fixed Q_ASSERT in SharedFilesDialog on Windows.
  • Load and save the view type (flat or tree) in SharedFilesDialog.
  • fix the msg download problem
  • part of code the disable auto download for channels
  • Fixed problem with utf characters in the %APPDATA% path on Windows.
  • made FileEntry derive from SmallObject class, to improve memory cache efficiency (50% time gained)
  • added some optimization to RequestDirDetails internal functions
  • improved sorting/selection in shared files flat mode
  • Fixed crash on shutdown of RetroShare, when the cache loading is running.
  • Now the p3distrib threads are stopped before the instance of AuthGPG is deleted.
  • fixed some stylesheets to use gradients instead of a background images, to solve some problems
  • implemented an optional flat view for shared files that allows sorting by date/peer/name
  • restored the search for flat view only (very slow for tree view)
  • cleaned the code a bit: made two subclasses of RetroshareDirModel: TreeStyle_RDM and FlatStyle_RDM
  • turned some uint32_t into int, for file watch period (did not produce a bug, but was still incorrect)
  • added a missing pthread_join in file checking, that eventually caused a leak of thread resources
  • changed the order of check in tick() to allow cancelling a file that is being checked
  • removed the hash step from mutex protection
  • added error message when thread creation fails
  • made sign GPG key checkbox unchecked by default
  • made current index be 0 for showing uploads by default
  • added a checkbox in settings for tuning auto-check of shared directories
  • Saved the visible state of the avatar picture in private chat for the friend.
  • Added parameter to RSettingsWin::showYourself to show the options with a specific page for news feed.
  • added tooltip for systray to display nickname and location
  • Show last error (GetLastError) in log when lock file cannot be accessed on Windows.
  • fixed file leak in history cache opt
  • added main parts of history cache optimisation. disabled at the moment (has file leakage)
  • check-pointing work essentially, but in principle working,
  • added lockfile path info to the multiple-instances warning window in rs-
  • attempt to make GPG errors more verbose at cert exchange time
  • implemented a backward compatible fix for bug when searching (advanced) with max size larger than 2Gb
  • implemented a better management of tunnel requests
  • Added a basic description of the chat style.
  • disabled the default context menus for the QToolBar's
  • Share the download directory by default.
  • Removed member ftController::mShareDownloadDir and calculate the value from the shared directories.
  • Combined the two methods for share and unshare of the download dir.
  • Added share incoming directory to the QuickStartWizard.
  • Translate QuickStartWizard, GenCertDialog and StartDialog into german.
  • Fixed tab order of the upload and download settings in QuickStartWizard.
  • Fixed utf8 issues when the partial or the download dir is set to a utf8 dir.
  • Use the native dialog for selecting the shared folder.
  • Messages with plain text (like the welcome message) are shown correctly.
  • added missign destructors, causing some parasitic memory leaks

New in Portable RetroShare 0.5.1b (Jun 27, 2011)

  • Added missing return... which was crashing OSX during directory creation.
  • fixed a toolbar icon to display with a correct size on macosx
  • The working (hashing) thread FileIndexMonitor is now stopped when RetroShare is closed.
  • Removed tab focus from the toolbar and image buttons.
  • Fixd german translation.
  • supressed memory leak due to not deleting a RsItem
  • suppressed potential SIGSEGV as exit time
  • suppressed memory leak in GUI
  • Added a confirm to the delete history action.
  • Added the RetroShare icon to the password input window.
  • fixed soem other potential SIGSEGVs
  • fixed potential SIGSEGV because of not checking returned pointer

New in Portable RetroShare 0.5.1a (Jun 27, 2011)

  • New features (DHT, Channels, Network View)
  • Improved stability w.r.t. previous version 0.5.0g"
  • Added lots of improvements, check for details svn log entrys

New in Portable RetroShare 0.5.0g (Jun 27, 2011)

  • Corrected a bug that caused file copy error: a closeFile() was missing when the file is complete.

New in Portable RetroShare 0.5.0f (Jun 27, 2011)

  • restored the retroshare-nogui executable
  • bug corrections in cachestrapper
  • bug corrections in RsTunnelItem and p3tunnel
  • better error handling in rstunnelitem on windows
  • removed deadlock in data multiplex
  • improved p3disc info update

New in Portable RetroShare 0.5.0e (Jun 27, 2011)

  • Made a pass on the code in p3disc.
  • Corrected some bugs:
  • suppressed an unwanted return in packet treatment
  • prevented sending info to a peer about itself
  • changed askInfoToAllPeers() such as not to discard info from peers with NODISC flag (because we especially need info for these)
  • enabled receiving p3disc info even if p3discovery is disabled. Indeed, disabeling p3disc is a measure of protection, so it should limit the export of p3disc info, not the import.
  • removed test discarding info about dummy friends, because it is useless
  • don't discard info about peers that have the NODISC flag (meaning that we especially need info for them)
  • added safety check about received GPG keys. Before we relied on this test being performed by p3ConnMgr::addFriend()
  • added some debug info
  • put correct (i.e. non conservative) size for RsDiscReply packets
  • corrected bug in rsdiscitem that prevented RsDiscReply packets to transfer cp serialiser/rsdiscitems.cc
  • switched ip addr finder to on by default (users seem to request it, and its not harmful)
  • automatic removal of file lists from deleted peers, at restart (After double check that this does not alter exchange of file lists in any way)
  • set heartbeat values to intermediate value
  • added verification for file size computation (bug correction)
  • augmented the heartbeat parameters, to reduce the stress on connections. Seems to help a lot when the traffic is high.

New in Portable RetroShare 0.5.0c (Jun 27, 2011)

  • Fixes two problems in the current group chat:
  • the parser fails to embed two links in the same sentence
  • the parser can potentially put smileys in the middle of tags
  • Solution:
  • Since the message is in HTML, it is parsed into a DOM tree, then that DOM tree is traversed and only the text nodes are parsed (see HandleRichText.cpp for details).
  • Bonus fixes:
  • missing std:: for endl (which was falling back to its Qt counterpart)
  • commenting useless code in PeersDialog::smileyWidgetgroupchat()
  • replacing int by size_t
  • RetroShare.pro now queries gpgme-config for its include path
  • fixed Memory leaks:
  • getLocalInterfaces -> iptable = (MIB_IPADDRTABLE *) malloc(dwSize);
  • main -> RshareSettings *_settings = new RshareSettings();
  • ExtAddrFinder::~ExtAddrFinder - use free for pointer allocated with malloc
  • fixed RetroShare stopped responding during signing a key and asking for password.
  • The QSingleShotTimer of ConfCertDialog wants to update the gui and stopped in PeerItem::updateItem.
  • fixed chat bug that was truncating some messages, due to using a uint16_t to store a local size. Totally backward compatible.
  • fixed crash with second open of HelpDialog solved
  • implemented a short circuit to local cache transfers.
  • This saves a large number of file descriptors, and improves reactivity of the software

New in Portable RetroShare 0.5.0a (Jun 27, 2011)

  • Bug fix: Checkbox for automatic share of the incoming directory doesn't correctly set with setDown, use setChecked
  • ShareManager and RSettingsWin doesn't need to be created all the time
  • RSettingsWin: Save the last active page for the current runtime
  • ShareManager and DirectoryPage: Show changed shared directories direct after the change
  • corrected handling of null strings in RsTlvBase::GetTlvString()
  • suppressed uninitialized memory read
  • added security check against malformed packets
  • added a security check to avoid core dump when a bad p3discReply packet is received
  • corrected other mismatched free/delete in avatar items
  • corrected mismatched free/delete in avatar items. Might have caused random crashes.
  • removed double definition of fingerprint
  • Fixed deadlock when asking for GPG passwd with gpg callback during session.
  • Added a method lockAllEvents()/unlockAllEvents() to remove timer updates in RsAutoUpdatePage
  • Updated passwd message to be more user-friendly
  • removed some warnings in authgpg.cc
  • added commandline option '-U' to allow user to access different profile
  • in the situation where autologin is enabled
  • BUG found (or rather autologin induced it), if one asks to make friends to a
  • peer (in ConfCertDialog) 'within' a session that uses autologin it freezes
  • add the internal counter mutex lock. Move the code of the rw mutec to the rsthreads.cc file
  • fix a code bug
  • add a read / write lock and refactor authgpg with it
  • Fix a bug when adding a cert
  • Fixed new message string
  • added gpg initialization for autologin
  • your friends are not authenticated if not
  • Added support for Auto-login
  • Using rc4 to store ssl pword on file for linux, for windows already using cryptprotect
  • yes its not safe, but its the user's choice to keep pword or not
  • consider using method closely hooked to linux kernel (another layer of obfuscation)
  • windows i believe is stronger (because its proprietary/ heavily obfuscated)
  • added checkbox in start dialog including warning (autologin not safe)
  • added check box in gen setting to disable autologin on shutdown
  • block the notify callback of authgpg when the main windows is launched

New in Portable RetroShare 0.5.0 (Jun 27, 2011)

  • corrected small bug in max search determination
  • Fixed translations on StatusBar display.
  • added a state message for examining files.
  • suppressed bug in settings
  • cleaned the code and debugged the icons
  • suppressed notify callback in main thread, resulting in deadlock, and explicitely askes for queued message passing for notifyError
  • bug fixed for deleting selected messages
  • change the timings and add some randomness for tcp connections
  • corrected one nasty bug due to missing return
  • added security to fd management, corrected bug causing bad fseeks
  • suppressed some uninitialized memory reads
  • made the key font Courier New to allow fixed-size display (makes the key much more readable)
  • suppressed uninitialized memory read in file transfer, also made the TransferDialog more secure
  • reset only ComboBox when close all search results
  • Fixed to display Dir Count in search
  • fixed to display Certificate in CryptoPage userfriendly
  • restored the courier new font, to allow the user to quickly vizualize errors in the keys (and to make the display less messy)
  • fixed open file, removed file action menu (already handled by the system)
  • fixed the update of message icon when there is a new message
  • fixed: enabled translation for Hide/Expand Button in Messages
  • cleaned some debug text, suppressed a few memory leaks
  • suppressed some memory leaks due to bad use of QMenu
  • fixed Folder Age with min_age
  • Change the status bar network display
  • add the ability to copy file details text