Well I need to get the JNLP3 tests to either be disabled or passing in order to merge JNLP4...
On 10 August 2016 at 17:04, Daniel Beck <[email protected]> wrote: > So IIUC v3 is an unfixable mess but has little real world impact, other > than 10% of installs playing Russian roulette with protocol negotiation, > but the "bullet" is a fallback to v2? > > Looks to me like we can keep this around for now, wait until v4 > enabled-by-default reaches a certain threshold (50% perhaps?) and then > disable v3 for everyone by default. Or just never disable it by default, > and work towards v4 everywhere, with an admin monitor warning admins about > agents negotiating an older (v1/v2) protocol (i.e. VersionColumn Plugin > light)? > > > > On 10.08.2016, at 16:54, Stephen Connolly <stephen.alan.connolly@gmail. > com> wrote: > > > > Thoughts are welcome... > > > > So as part of my PR for the JNLP4 protocol I have been hitting loads of > issues in the JNLP3 protocol (because I had to refactor the protocol > handlers and thus now can actually test the different protocols via > loop-back tests from within remoting) > > > > What I have basically found is that the whole negotiation of JNLP3 is > riddled with encoding issues... roundtripping byte arrays as Strings > through UTF-8 encoding. > > > > I suspect that nobody has hit these issues for two reasons: > > > > 1. JNLP3 is enabled by default for only 10% of users > > 2. If JNLP3 fails, normally JNLP2 will try... and of course that will > succeed > > > > I cannot fix the JNLP3 protocol in a backwards compatible way (as the > stream format does not allow for an up-front versioning so you end up > hitting encoding issues with the encryption of the initial challenge: > > > > The encypted challenge bytes are encoded as a String in ISO-8859-1, > which gets put into a Properties which gets converted into a String and the > String's UTF-8 bytes then gets sent over the wire... > https://github.com/jenkinsci/remoting/blob/master/src/main/ > java/org/jenkinsci/remoting/engine/JnlpProtocol3.java#L175 > > > > Now Java properties encoding is not UTF-8 rather it is ISO-8859-1... so > > > > Properties props = new Properties(); > > props.put(SLAVE_NAME_KEY, slaveName); > > props.put(CHALLENGE_KEY, handshakeCiphers.encrypt(challenge)); > > if (cookie != null) { > > props.put(COOKIE_KEY, handshakeCiphers.encrypt(cookie)); > > } > > ByteArrayOutputStream o = new ByteArrayOutputStream(); > > props.store(o, null); > > outputStream.writeUTF(PROTOCOL_PREFIX + NAME); > > outputStream.writeUTF(o.toString("UTF-8")); > > > > Can result in writing an invalid byte sequence in the properties UTF > blob... which then on the server side can result in a corrupted Properties > load and the challenge will fail... > > > > There are further encoding roundtrip bugs, but as we cannot get past the > very first one there really is not much we can do at all. > > > > So the question becomes what do we do... > > > > We can only fix the stream format by breaking backwards compatibility... > but given that JNLP4 is coming, do we even care? > > > > -Stephen > > > > > > -- > > You received this message because you are subscribed to the Google > Groups "Jenkins Developers" group. > > To unsubscribe from this group and stop receiving emails from it, send > an email to [email protected]. > > To view this discussion on the web visit https://groups.google.com/d/ > msgid/jenkinsci-dev/CA%2BnPnMy9LzgjLaWsXNQVdm7nLbjJKG > tnCB_iCWTc-m7UuxFw4w%40mail.gmail.com. > > For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google Groups > "Jenkins Developers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/jenkinsci-dev/D9D5B8E4-043C-4444-892B-D886FDF26BDA%40beckweb.net. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Jenkins Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/CA%2BnPnMwUGqFw%3D_mdPGn9BN-68%3DzerV1j0iDm7i8%2B40HxJ%3DF%3DSA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
