I am delighted to report we have isolated the issues that have been hampering recent progress and a fix has already being proposed.Once the workaround is agreed on this evening by all involved we can proceed on a fix.
Old version sends 112 bytes non-standard, Bitcoin sends 88 bytes.
Two options, the first is applied currently that allows the clients to sync. 0.2.7 has no subver set at all, so 0.2.6 shows it as blank and other 0.2.7 clients also show as blank in 0.2.7. 0.2.6 show incorrectly in 0.2.7 as well, we'd want to hide that and possibly just show the PROTOCOL_VERSION instead. 0.2.7 would be the bridge and newer clients can behave as normal. This is a bit hacky but functional.
Option two is to set 0.2.7 to use 112 bytes the same as 0.2.6. It is non-standard and you'd have to break every subsequent versions in the same way. The plus here is that versions should show correctly between new and old.
If we go for the hacky solution now then we do not need to make changes to compensate for this in version 0.2.8 sort of thing, like when porting 0.14 to Bitcoin Plus it can then just connect to the 0.2.7. So 0.2.7 will bridge new and old versions.
I'd prefer it to show the subver but then you always have to support bespoke code.
I'll send some screens of what the hacky route looks like. We can pretty much remove the info from display in the GUI as it was never shown in the 0.2.7 release.
Basically hide the subver in the GUI and getpeerinfo.
There's going to be some complaining about broken subver, basically we'd need to explain that it was non-standard in the past and moving to standard will mean that 0.2.7 has no subver at all so that 0.2.6 will not reject it but that 0.2.8 will return to normal and have standard handshake. That's probably the way to do it but it is up to you. The other way will keep subver intact and displaying correctly.
First option we get to go standard Bitcoin in the future.We do not compromise anything by dropping subver, we can identify versions using protocol version and it might be straight forward to use that to lookup subver and replace broken strings in the GUI and console.The more vanilla you are the easier it is to follow Bitcoin developments.