RetroShare Changelog

What's new in RetroShare 0.6.7a

Dec 3, 2023
  • Update OBS submodule

New in RetroShare 0.6.5 (Feb 14, 2019)

  • Distant GXS syncronization:
  • The generic data distribution system that RetroShare uses for distributing forums, links, channels and emails had originally been written to work friend to friend, transmitting data between pairs of subscribed connected users. This makes it quite robust but still requires a full chain of subscribed friends to connect you to the source of some data in so that you get new posts. In version 0.6.5, we introduce an optional distant synchronization of GXS groups (e.g. a single Channel is a GXS group) that allows to sync subscribed groups using authenticated encrypted tunnels. With this technique, people can search, subscribe and synchronize groups that are not subscribed by immediate friend nodes.
  • This has been enabled in Channels only, as an experimental feature. If it proves useful enough we’ll extend it to forums and potentially all GXS services in the next release.
  • The new search at the bottom of the channel list sends a query across the network and only reports channels that *are not* already advertised by friends nodes. When a new channel is reported, right click on it and hit “request data” to retrieve the full channel group (which means encryption keys, mainly). If available, it will soon be moved into “Other channels”, from where you can subscribe to it. We may automate this a bit more in the future in order to make this 2-step process simpler, but the current setup helps us diagnose potential problems.
  • As a side effect, channels synchronize using tunnels only when necessary, which we figure out by looking at whether friend nodes already supply information about a particular channel or not. This does not totally prevent “isolated islands”, and we may improve this heuristic a little bit in the future.
  • Forum moderation:
  • In this release, forums can have moderators, who are allowed to edit anybody’s post. Moderators are set by the owner (meaning the creator) of the forum, as part of the forum group data that is signed by the admin key of the forum owner.
  • Posts still cannot be deleted. The reason for this is that because posts are duplicated on all subscribers, it would give a false sense of security to let someone believe that he/she actually deleted a given post.
  • Post can also be pinned by the forum administrator, which makes them stay on top no matter which sorting method is chosen, with a colored background. Only the administrator has the right to do this, which allows forums without moderators to have pinned posts. It also simplifies a lot the security of it since the list of pinned posts is part of the forum group data that is signed by the administrator.
  • Forum model:
  • We implemented a new QAbstractItemModel for forums, the beauty of which can only be seen by reading the code (sorry). Still, it makes the forum loading much faster and more memory efficient. Because this is new code and is rather complex, you may find errors. Please report them back to the dev team.
  • Tor only and clear-net versions merged:
  • In version 0.6.4 we used to provide 2 different versions: one working on the clear-net and one working over Tor. Both versions are now merged in the same executable. When creating a new certificate/node the user can choose the node type as Standard node or Hidden node. A third option allows to manually configure Tor/I2P to allow all the combinations previously possible.
  • When a hidden node is created or started, RetroShare will look for Tor (which it should find if properly installed on your system) and automatically configure it to run a hidden service which will be used by your friends to connect to you. It will complain immediately if something’s not working in the configuration of Tor.
  • Of course hidden nodes can still talk to non-hidden nodes, but connections only happen from the non-hidden node which has Tor proxy configured. This is usually sufficient, and this way no Tor exit nodes are involved whatsoever. We also made sure that the discovery system *never* sends IP addresses to Tor nodes (they don’t need IP addresses but could potentially leak them between friends). The UI in Tor-only mode is overall much simpler, since UDP, Relays, DHT, Nat punching code, IPs filtering, etc. are irrelevant in this setup. As such, Tor nodes offer a much better level of connectivity.
  • Automated JSON API generation:
  • The experience of rapidly developing a Retroshare based Android chat app with Qml plus the old libresapi convinced us that exposing a complete JSON API would be strategic for the growth of Retroshare ecosystem. Still we realized that libresapi wasn’t capable of supporting that growth because for every function of the Retroshare C++ API we wanted to expose trough it we had to manually write wrappers for it, which is a very boring and error prone job. This caused libresapi to be always severely behind libretroshare in terms of functionalities. This problem motivated us to investigate for a better approach, and led us to a radical change on how we expose the JSON API.
  • The new approach uses restbed as a HTTP framework and automatically generates JSON API stubs directly from Retroshare C++ API code and documentation, with the help of doxygen capability to parse the code and outputting XML description of it integrated with the inline documentation. This way any properly documented method from Retroshare C++ is now available without extra work trough the JSON API. Another benefit is that if we change a method or add a new one the change apply to JSON API too without need of extra work.
  • This is very important for developers who would like to develop decentralized applications without being a distributed networks or a C++ god. Now any JavaScript, or python or Lua or whatever programming language script kiddie can harness the power of RetroShare to develop it’s own custom decentralized app (and some are already doing it). We also started upgrading the existing Web interface with the new API, and hope for Google Summer of Code to make finish it during 2019.
  • We’re also presenting the JSON API this year at FOSDEM’2019.
  • Pv6 support
  • The long time efforts to bring IPv6 support to RetroShare have finally brought their fruits. The IPv6 support is finally stable and merged in the official version which we even managed to do without a code refactor chain reaction, and without breaking retro-compatibility with Retroshare 0.6.4.
  • Most connection problems in F2F networks are due to NAT being practically omnipresent in the IPv4 Internet because of address space exhaustion, punching a connection trough a NAT is a time consuming and not always a reliable task, as result developers and user experience are not always as smooth as one would desire. IPv6 instead offers plenty of addresses so every device cat get at least a public address without a NAT interfering with your connections, so connecting to your friend nodes is almost instantaneous and very reliable when IPv6 is available. If your Internet provider is IPv6 ready you will benefit of seamless direct connection to all your IPv6 enabled friends nodes, otherwise we suggest to look for an IPv6 enabled internet provider to improve your Internet participation.
  • Direct node-to-node chat+mail is now an option
  • As we’re planning to re-design the chat system entirely, we need to get rid of the double chat system (between nodes and between identities in People) that is currently very confusing to new users. We added an option to allow to hide the interactions between nodes (chat and messages) and the broadcast system between nodes (compile with CONFIG=no_direct_chat), which leaves only chat and messages between identities.
  • However, in order to help some users with this abrupt transition, two new features improve a lot the distribution and visibility of your non anonymous identities:
  • Your own signed identities are automatically advertised to friend nodes using discovery. When friend nodes do not “know” them they will request them;
  • RetroShare allows you to automatically add identities owned by friend nodes to your contact list.
  • The combination of these two features makes Mail and Chat much easier for newcomers as they can immediately reach identities hosted at neighbor nodes.
  • Various bugs fixed:
  • As usual, we spent days fixing lots of bugs (and probably introducing new ones as well), among which:
  • we fixed the display of single chunk transfers was wrong;
  • the display of updates in forums and circles was also fixed;
  • files are not anymore hashed while being modified (e.g. written). This is quite easy to achieve by looking at last modification time stamp and prevents files to get the wrong hash;
  • file transfer now aggressively re-requests pending chunks at the end of transfers, which prevents slow sources that have been set to a given chunk to slow down the termination of the transfer. Now the last chunks may be received twice, but they come much faster.
  • we fixed the nefarious crash in UDP connection with OpenSSL 1.1+

New in RetroShare 0.6.4 (May 14, 2018)

  • TOR-ONLY PACKAGE:
  • Since version 0.6.0, Retroshare is able to run over the Tor network, using a Tor hidden service to create a so-called “Hidden node” which IP is not visible even to friends of this node. The configuration of a hidden node however was not very easy, especially on windows. With version 0.6.4, we release a special version of Retroshare which bundles Tor and configures it automatically. As a result, creating a hidden node is now one click away.
  • How does it work? At start, RS launches Tor using a QProcess, and uses the socket-based control system of Tor to configure a hidden service. Then it configures itself to use that hidden service. To do this, we borrowed some code from the Ricochet project. After you created your node, Retro-Tor will temporarily display a status window. When the bootstrap reaches 100%, you’re good to go.
  • Running Retroshare over Tor has a number of definite advantages: it does not require firewall management (Tor does it for you); you do not need a DHT to find your friends (Tor does it for you), and whatever code is tied to ensuring security of your IP information is not needed anymore. We thus removed IP filters.
  • We envision multiple use cases where this special “retro-tor” combination would be very useful. To list a few:
  • while Retroshare would normally require that you only create connections to some trusted friends, Retro-Tor allows you to safely connect to strangers, who cannot know your real identity (meaning your IP address and physical location) when they connect to you. Retro-Tor therefore allows you to easily test Retroshare by exchanging certificates with stangers from the internet in a way that is perfectly safe. If you’re happy with the software, you may turn to the “classical” Retroshare to create a network with trusted friends.
  • your work or activity requires you to securely and very privately contact trusted persons, while being able to send large files, forum posts, or have a multi-party discussion? Then Retro-Tor is a valuable option.
  • you want to anonymously share information/data (i.e. without ever revealing your identity and physical location to anyone)? Then create a hidden node with Retro-Tor and exchange certificates with interested people.
  • In the future, depending on the feedback we receive, we may unify the Tor only and vanilla Retroshare versions into a single package that will optionally run its own Tor. This will allow users to easily connect to hidden nodes and bridge between the two networks.
  • It is important to note that connections over Tor may take a little while to find their way, especially the first time. But they eventually always do if your friends are indeed online. Also, in this version, Retroshare will only start after Tor manages to bootstrap correctly.
  • Retro-Tor is available as an AppImage on linux, a zipped archive on windows, and a DMG archive on MacOS. It can also be compiled from the master branch using “CONFIG+=retrotor”, but the packages do not need you to install Tor as the executable is also in the packages. In is referred to in the download page as “Tor Only” version. Retroshare+Tor represent a significantly powerful tool that raises anonymity to a total new level. Use is responsively!
  • EXPERIMENTAL ANDROID BUILD:
  • For the first time we offer a very experimental version of Retroshare on Android. This version only allows to connect to other peers and distant-chat your friends. This however constitutes a major step toward a more complete Android version since a lot of work was done to get our code base to compile and properly run on smartphones, and to create a Qml UI for it.
  • SECURITY:
  • We reviewed the security of the signed TLS handshake and made the following improvements:
  • the signature of certificates used to require a double hash. While not a security problem per se, this was an unfortunate design choice.
  • PGP signatures are now only possible in SHA1, SHA256 and SHA512 format. Certificates signed with another hash algorithm will be rejected.
  • SSL ids are now computed using a secure hash function. While not a critical security problem (since signatures are always checked), the previous method to produce SSL ids was not coming with a theoretical guaranty of how difficult it was to create a node/location pair that had the same SSL id than an existing node.
  • In order to make all these changes backward compatible, we adopt 2, and ship the code to handle 1+3 in version 0.6.4. In the next version, we’ll switch the default hashing algorithm to SHA256 and switch the way SSL ids are formed. Switches for these changes are at the end of retroshare.pri
  • Finally, hidden nodes do not accept nor pass any IP information through discovery. That means in particular that a hidden node that is friend to 2 normal nodes that trust each others will not transmit each other’s IPs. In addition to a security improvement, we think it is better that hidden nodes do not store any IP whatsoever since they will not use it anyway.
  • IMPROVEMENTS IN GUI:
  • We performed the following improvements on the GUI. To name a few:
  • All downloads now use the “RsCollection” Dialog box, which allows to choose a destination directory, de-select some files, etc;
  • links can encode (small) hierarchies of directories;
  • file lists now are more efficient, and have a search function in tree mode;
  • the keyring and download lists are now handled by a QAbstractItemModel, which makes them much more efficient when displaying many entries;
  • chat lobbies are renamed into “chat rooms”;
  • we added two kinds of links: chat room links, and identity links;
  • log remembers the new forums/channels, and will not display them again when you restart.
  • BACKEND:
  • we added a cache in GxsGrpMeta (but not GxsMsgMeta), which improves a lot the speed of accessing group lists.
  • we fixed a few bugs in channel permission sharing, and improved the update of GUI when new groups are published.

New in RetroShare 0.6.3 (Mar 5, 2018)

  • 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.
  • 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.
  • Renamed executables and packages:
  • In order to comply with standard unix naming systems, we had to rename a few things.
  • 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.
  • 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 RetroShare 0.6.2 (Mar 5, 2018)

  • 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.
  • 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).
  • 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.
  • Improved GUI:
  • 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.
  • Compatibility with OpenSSL-1.1.0:
  • This step has required some effort! OpenSSL-1.1.0 hides a few structures which where previously open.

New in RetroShare 0.6.0 (Mar 12, 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).
  • Special thanks to “Jolavilette” for his endless testing of GXS network system.
  • 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).
  • Your own opinion about some particular identity is shared with your friends (using a differential system which only shares non neutral opinions).
  • 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. See the 0.6.0-RC2 release notes for more information.
  • 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. All the details are listed in the following Elttam blog post.
  • Special thanks to Elttam for putting some effort in fixing up Retroshare!
  • 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 (This is the work of an external contributor “G10H4ck”. Special thx to him)

New in RetroShare 0.5.5c (Jan 30, 2014)

  • Changes:
  • 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 (Modified patch from Phenom)
  • 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 missign 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 (Patch from Phenom)

New in RetroShare 0.5.5a (Sep 14, 2013)

  • 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 RetroShare 0.5.0g (Oct 11, 2010)

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

New in RetroShare 0.5.0d (Jun 1, 2010)

  • Package improvements:
  • suppressed package dependency on gpg-agent
  • Improvements:
  • implemented a free disk space checking method, with a warning when running low
  • fixed proper sorting/updating of IP lists.
  • only keep the most recent port for identical ips.
  • don't start when the local address+port are already in use to avoid corrupting file lists, config files etc
  • added failure tests for fwrite
  • added tests against wrong ip 1.0.0.0 on MacOS
  • Major bug corrections:
  • added missing locks in search requests into fimonitor.cc
  • Suppressed the possibility for browsable only files to be searched by hash from turtle router.
  • cleaned up some deadly code in rsdiscitems.cc, causing crashes
  • improved the security of size determination for file lists, that caused a chain reaction ending in crash at clients.
  • added missign lock in ftcontroller
  • Minor bug corrections:
  • added a check to avoid (possibly rare) data races in data multiplex
  • suppressed double click action for download in Shared File lists

New in RetroShare 0.5.0c (May 14, 2010)

  • 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 tagsSolution:Since the message is in HTML, it is parsed into a DOM tree, then that DOM treeis 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 RetroShare 0.5.0 (Apr 6, 2010)

  • 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

New in RetroShare 0.5.0 Alpha 2 (Mar 23, 2010)

  • fixed a bug in download queue when ticking inactive files. Added a checkbox for showing cache transfers. Cleaned the dialog cleaning method.
  • suppresed bad lookup in _queue causing SIGV
  • utf8 fix
  • fixed RS link clipboard so that links can be imported/exported from both RS and the application clipboard.
  • cleaned the config->Transfers tab, made the default chunk strategy combobox effective.
  • fixed copy/paste of RS links in public and private chat
  • cleaned the code for anchorClick() in private chat
  • added return false for FileRequest of already have files
  • suppressed sources when the file is complete, in TransfersDialog.
  • added info and consistency for gpg sign and trust signification
  • added proper close for file transfers. This drops down the number of FDs from 250 to ... 50 svn status
  • added missing locks, that caused random crashes
  • improve the recieving of bad gpg keys
  • fixed RS link copy/paste from shared/search to transfers/forums/Pmessages
  • increase udp ttl
  • fixed queue menu to work on multiple languages
  • change ssl binary encryption to aes debug code
  • change ssl binary encryption to aes
  • lower connection attempt timings
  • moved removal of sources off turtle mutex to avoid cross-lock. Added a closeFile() call when moving files out of the queue
  • fixed to get work again Chinese language , and load now Qt translations for widgets
  • bug correction: avoid reading deleted pointers by moving saveDone() after the next line
  • added paste multiple links
  • added Timestamps for forum message feeds to know the date for each Forum Message.
  • cleaned the RS link code, factorized the parsing into a single class.
  • fix a bug in the double file configuration loading
  • Fixed config forward compatibility problem
  • note to self: C++ binary file not same as C binary file
  • fixed sharemanager closing
  • fixed to enable translation suppor for Trustview strings
  • added for Queue actions own icons
  • clean up languages and corrected few languages
  • added proper dynamic suppression of sources from chunkmap, and updated the gui
  • suppressed bug in dynamic removal of sources. suppressed bug in string search. Suppressed some warnings.
  • added to show bytes and formates size FileTranferInfoWidget
  • suppressed debug msg
  • Added proper dl queue behavior
  • suppressed old DwlQueue class
  • turned mDownloads into a list of pointers to allow easy cross-info update between queue and std::map of downloads
  • added queue functionality for moving files top/bottom/up/down
  • added the necessary functions in rsFiles
  • reengineered the network dialog insert connect method
  • small design change of confcertdialog
  • restrain ip list exchange in an attempt for bug solving
  • small update of connct mgr and ssl connection
  • added Popularity view as icons to display for each channel
  • fixed to display pasted plaintext retroshare link in public chat in html format to get click able.
  • added Copy link as html format
  • fixed to get click able the retroshare links in privat chat
  • fixed only show a new message icon on tray when its a inbox message
  • small change in ext address detection
  • Added new 2-pass save method to configuration management
  • essentially if any part of the file saving procedure fails, there should be config files whose signatures/hash match up
  • set a item foreground color for Inbox when get a new message, set gridsize for listwidget to 18
  • disable the extract failed certificate
  • make the gpg key list reading a little more error proof
  • change the pointer offset cast
  • added Download Time column to Downloads
  • added to DetailsDialog Download Time label
  • added formating the filesize's for FileTransferInfoWidget
  • suppressed bug in file transfer while removing inactive chunks.
  • added initialisation of gpgmeKeySelected.
  • suppressed deadlock (mutex explicitely locked before thread exit)
  • Fixed to get again gui resize able , search not allowed more to set gui to a minimum size.
  • color adjustement for the network dialog
  • cleaned some memory leak in search, added 2 checkboxes for F2F and friend lists, made the "include own files" work properly
  • put the max result test at a more appropriate place in the code
  • fixed display of uploads tunnels
  • fixed trayicon tooltip
  • added change trayicon when get a new message, added change trust icons when trust is changed
  • added a spacer when counting Messages
  • added to installer to install gpg4win
  • change the color of peer display
  • change the button at the end the the connect friend wizard dialog
  • small fix on gencert dialog
  • small fix xhen loading detail from a string cert
  • change the gpg key list display
  • add own ip addresses list to profile widget
  • cleaned the code in fimonitor, modified the order of file hashing, and put a more explicit progress message while hashing.
  • connect PrintButton when not use the menu
  • disable the ssl cert config persistance
  • changed add friend icon
  • small bug correction in display of unknown hashes
  • added a spinbox to limit the number of search results (too many results may hang the gui)
  • add the tunnel config to server tab, and activate the tunnel on fresh configs
  • reimplemented the tunnel handshake
  • update implemention for new ssl encryption
  • remove some exit(1)
  • implementation of an SSL binary encryption
  • enabled Run Email Program for all platforms
  • moved the Buttons Make Friends,Deny Friend, Sig GPG Key to the Bottom of Trust Tab
  • improved the icons and Buttons in Trust Tab
  • use for color sources friends sources + anonymous sources
  • added missing NetworkWide flag to download from recommendation
  • added missing NetworkWide flag to download from recommendation
  • corrected bug in MessageDialog: friendly size was could not be properly converted into a real file size. We should not use it.
  • Properly close ssl connection when receiving error SYS_CALL. Bug solved
  • Fixed Load and Save own status Message in MessengerWindow works now.
  • suppressed unninitialisez memory reads
  • added context menu action for Paste retroshare Link for Create Forum Message
  • added smotth interpolation flag to image scaling
  • added Paste retroshare link's from a Button in Create Forum Message, and fixed to not allow send blank Forum Messages
  • improved display of turtle router info
  • changed the default Blog Header stylesheet, and use now white Text Color
  • include own files check option on search
  • fixed Resume/Pause context menu actions to work properly in all Translations
  • redesign Create Blog Msg Publisher with html Formating features and fixed textSize formating for Message Composer
  • added to can use *.gif pictures now too for Avatars.
  • added new French translation
  • search result filtering
  • fixed display issue in transfers (bad colors in crosses)
  • improved display of tunnel info
  • made gpg ids more consistent with the way gpg lists them
  • added more detailed info about gpg ids in login and gen certificates dialogs
  • fixed to get work properly Play and OpenFile when File Transfer is complete, Play action is only visible when its a media file.
  • added additional info into FileTransferInfoWidget
  • added actions for disable/enable Emoticons in Privat Chat and for Clear Chat History
  • made complete files stay in the download list
  • fixed bug in clink on link in group chat
  • added action to GroupChats Button Menu for disable/enable Emoticon's
  • filter after search, not before search
  • fixed group chat download
  • fixed the recommend system
  • corrected compled completion and file progress issues
  • security fix to xprogressbar display
  • reengineered the transfer list display
  • reduced cost of progress bar display
  • fixed a bug on MessengerWindow context menu
  • messenger-window thumbnail photo update on change
  • set TextAlignment for sources to AlignRight
  • added to show files sources count in form of friend source/ total source
  • fixed stylesheets for Search LineEdit's frame
  • put a safety check against sockfd==-1
  • limited the search to > 3 chars
  • fixed remove a bug in peersdialog
  • added clear Filter Button for Messages Filter
  • change the profile widget to replave spinbox by lineedit
  • add some validators for gpg key gen
  • fixed setFocus for search LineEdit when clearing it.
  • improved turtle router display
  • added put the tunnel info as a new tab in the transfer page.
  • added hide reset button when search field is empty
  • fixed to get work again to hide/show the Messages Filelist
  • added a ending 0 to form a proper string in gpg cert export
  • fixed the left side friends list for Message Composer to get resizeable
  • fixed display issues: always -> all and void string -> unknown for turtle hashes
  • fixed Messages items to not editable
  • corrected bug in file completion
  • added Messages Filter for Attachments,Subject,From,Date,
  • rewrite MessagesDialog to use QTreeView with QStandardItemModel
  • added change search results text color when it has more sources
  • fixed stylesheets and enable OpenExternalLinks on InfoDialog
  • change peericon when indicator changed
  • added Save Cert Button to ConnectFriend Wizard
  • added more info for Network Wide/Browsable to the Description Label in Share Manager
  • added icon for gpg key checkbox
  • improved design of profile generation

New in RetroShare 0.4.10 (Oct 17, 2008)

  • Cleaned up Mac Fonts
  • Improvements to ft - but still in development.
  • Various GUI tweaks.