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.

Reply via email to