I think it's better to disable IPv6 via manual connectivity settings by default. If it's enabled and the user doesn't have public v6 IP (or she does but is firewalled) then DC++ will try to connect to certain set of clients though IPv6 in ADC hubs, which obviously fails in the above cases. People who know what they're doing can always enable it for themselves.
(Another thing to investigate why would DC++ connect to only DC++'s in v6 and not to other capable clients - as that's the case at the moment.) The IPv6 auto detection code never runs any mapper in the current implementation we got from AirDC (unreachable code). Reason is not clear but as I mentioned after a lengthy discussion we couldn't think of any possible way of what would be the best logic of the v6 detection. There were too many questions that the people discussing and web searches could not answer straight. -- You received this bug notification because you are a member of Dcplusplus-team, which is subscribed to DC++. https://bugs.launchpad.net/bugs/1506210 Title: Decision on how to move forward with IPv6 connectivity setup Status in DC++: Confirmed Bug description: Recently we have added a bunch of code containing IPv6 improvements. The code originates from AirDC which iceman50 modified for Dice++. In his initial commit http://sourceforge.net/p/dcplusplus/code/ci/a783fa70a1a616a5d74c829a80d75ca810876665/ we can basically see the way he used/modified this code for Dice++. It introduces a bunch of new settings but some of them has only defaults and aren't propagated in the UI. Above a few small bugs the main problem with the initial commit is that it breaks the zero configuration (so one magic switch does everything and the user should not need to configure anything in most cases) logic for auto connectivity setup that we've implemented for DC++ before and which has proven to be highly successful throughout the DC community. Notably the patch adds *two* (one more) checkboxes for Automatic Connectivity Detection, one for each protocol (v4/v6). This layout would require the average user to know about IP protocols and such to decide things, a requirement of special knowledge of networking to set up connectivity at times, which we have already avoided years ago. Hence a decision made to make things easier to the user and not to break the existing layout, see commit http://sourceforge.net/p/dcplusplus/code/ci/f8c7501e096576e0e04066da81f0a4c0058b303e/ At the same time there was a (not too fruitful) discussion about improving the added IPv6 auto setup (since the implementation in the patch doesn't do much, e.g. don't run mappers at all and knowledge about the necessity of mapping / hole-punching on v6 is missing/ambigous among the people discussing the problem) which ended up with a change in the v6 IP comparsion in the detection code (see the comments in the source in the commit). It turned out later that these later changes cause connectivity issues in both an auto detected or in a manual setup on an IPv4 only environment. After some investigation while exmining the AirDC source code and connectivity setup UI layout it has become evident that they use a different logic in connectivity setup than we do. They have only one pane in the settings dialog (called ProtocolPage in their source) where you can separately set the auto detection/manual setup for both v4 and v6 protocols as well as there's settings to completly disable the connectivity of any of the protocols. Moreover in their setup, the manual enable/disable switch has an effect to the automatic detection: if the manual connectivity is set to disabled for a protocol then it also blocks the auto detection for the said protocol. This logic is completly different to ours, however, the code supporting this logic is already added to DC++ through the initial commit. Basically this, with the later changes committed, causes C-C connectivity issues in the tip revision of DC++ as of the day this report is posted. AirDC also propagates all manual connectivity settings for v6 something which we should add to our UI anyway. The following patch from Pretorian does most of it: http://pastie.org/10479684 However, we should decide in what way do we implement our v6 connectivity setup. Basically I can think of two ways, as follows: #1 We keep our old logic so there's only one checkbox for Automatic Connectivity Setup. This either runs detection for both protocol or only for v4 for the time beeing. For the new manual v6 connectivity settings we set the v6 connectivity disabled by default. Advantage: no change from the user's point of view. Still zero config setup that's easy to support. Disadvantages: - no way to set the auto detection to run for one protocol while use manual config for the other. - requires changes to the ConnectivityManager code in added from AirDC #2 We switch to a pair of auto detect checkboxes for one both protocols. Advantages: - the initial patch can be used more or less, with the exception of the manual enable/disable connectivity switches have effect on the automatic detection. We clearly don't need that. - there's a way to set the auto detection to run for one protocol while use manual config for the other. Disadvantage: change from the simple UI/logic we used to have which can make support cases more difficult at times. Any of the two ways we choose I suggest keeping the v6 detection/manual connectivity disabled by default until we know more about topologies, mapping, what's when we got a public IP but we're behind a firewall, etc... since we already experienced that wrongly enabled v6 connectivity can cause C-C connectivity issues on ADC hubs. Ideas, opinions, suggestions welcome! To manage notifications about this bug go to: https://bugs.launchpad.net/dcplusplus/+bug/1506210/+subscriptions _______________________________________________ Mailing list: https://launchpad.net/~linuxdcpp-team Post to : linuxdcpp-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~linuxdcpp-team More help : https://help.launchpad.net/ListHelp