[java-sig-commits] [jenkins-remoting] Update to upstream version 2.32

Michal Srb msrb at fedoraproject.org
Mon Sep 9 06:59:45 UTC 2013


commit 3d5fab73633f4c3d1d3d40fb0474d9e880d4fafa
Author: Michal Srb <msrb at redhat.com>
Date:   Mon Sep 9 08:52:09 2013 +0200

    Update to upstream version 2.32

 .gitignore                                    |    1 +
 0001-Use-base64-implementation-from-JDK.patch |  407 +++++--------------------
 jenkins-remoting.spec                         |    8 +-
 sources                                       |    2 +-
 4 files changed, 81 insertions(+), 337 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index a81a598..0aea7a4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
 /remoting-2.23.tar.gz
 /LICENSE-2.0.txt
+/remoting-2.32.tar.gz
diff --git a/0001-Use-base64-implementation-from-JDK.patch b/0001-Use-base64-implementation-from-JDK.patch
index 6903b1a..7f3b32a 100644
--- a/0001-Use-base64-implementation-from-JDK.patch
+++ b/0001-Use-base64-implementation-from-JDK.patch
@@ -1,348 +1,77 @@
-From d7e4014c479d504018141d47771b8f618c14e47a Mon Sep 17 00:00:00 2001
+From 38abb8e9d0be52d09bab497b511d7e8d1a32807f Mon Sep 17 00:00:00 2001
 From: Michal Srb <msrb at redhat.com>
-Date: Wed, 15 May 2013 10:33:43 +0200
+Date: Fri, 9 Aug 2013 14:42:07 +0200
 Subject: [PATCH] Use base64 implementation from JDK
 
 ---
- src/main/java/hudson/remoting/Base64.java          | 303 ---------------------
- src/main/java/hudson/remoting/Engine.java          |   3 +-
- src/main/java/hudson/remoting/Launcher.java        |   3 +-
- .../java/hudson/remoting/BinarySafeStreamTest.java |   7 +-
- 4 files changed, 8 insertions(+), 308 deletions(-)
- delete mode 100644 src/main/java/hudson/remoting/Base64.java
+ src/main/java/hudson/remoting/Engine.java          | 29 +++++++++++-----------
+ src/main/java/hudson/remoting/Launcher.java        | 11 ++++----
+ .../java/hudson/remoting/BinarySafeStreamTest.java |  7 +++---
+ 3 files changed, 25 insertions(+), 22 deletions(-)
 
-diff --git a/src/main/java/hudson/remoting/Base64.java b/src/main/java/hudson/remoting/Base64.java
-deleted file mode 100644
-index c73c9c1..0000000
---- a/src/main/java/hudson/remoting/Base64.java
-+++ /dev/null
-@@ -1,303 +0,0 @@
--/*
-- * Copyright 1999-2002,2004 The Apache Software Foundation.
-- *
-- * Licensed under the Apache License, Version 2.0 (the "License");
-- * you may not use this file except in compliance with the License.
-- * You may obtain a copy of the License at
-- *
-- *      http://www.apache.org/licenses/LICENSE-2.0
-- *
-- * Unless required by applicable law or agreed to in writing, software
-- * distributed under the License is distributed on an "AS IS" BASIS,
-- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- * See the License for the specific language governing permissions and
-- * limitations under the License.
-- */
--package hudson.remoting;
--
--/**
-- * This class provides encode/decode for RFC 2045 Base64 as
-- * defined by RFC 2045, N. Freed and N. Borenstein.
-- * RFC 2045: Multipurpose Internet Mail Extensions (MIME)
-- * Part One: Format of Internet Message Bodies. Reference
-- * 1996 Available at: http://www.ietf.org/rfc/rfc2045.txt
-- * This class is used by XML Schema binary format validation
-- *
-- * This implementation does not encode/decode streaming
-- * data. You need the data that you will encode/decode
-- * already on a byte arrray.
-- *
-- * @xerces.internal
-- *
-- * @author Jeffrey Rodriguez
-- * @author Sandy Gao
-- * @version $Id: Base64.java,v 1.4 2007/07/19 04:38:32 ofung Exp $
-- */
--public final class  Base64 {
--
--    static private final int  BASELENGTH         = 128;
--    static private final int  LOOKUPLENGTH       = 64;
--    static private final int  TWENTYFOURBITGROUP = 24;
--    static private final int  EIGHTBIT           = 8;
--    static private final int  SIXTEENBIT         = 16;
--    static private final int  SIXBIT             = 6;
--    static private final int  FOURBYTE           = 4;
--    static private final int  SIGN               = -128;
--    static private final char PAD                = '=';
--    static private final boolean fDebug          = false;
--    static final private byte [] base64Alphabet        = new byte[BASELENGTH];
--    static final private char [] lookUpBase64Alphabet  = new char[LOOKUPLENGTH];
--
--    static {
--
--        for (int i = 0; i < BASELENGTH; ++i) {
--            base64Alphabet[i] = -1;
--        }
--        for (int i = 'Z'; i >= 'A'; i--) {
--            base64Alphabet[i] = (byte) (i-'A');
--        }
--        for (int i = 'z'; i>= 'a'; i--) {
--            base64Alphabet[i] = (byte) ( i-'a' + 26);
--        }
--
--        for (int i = '9'; i >= '0'; i--) {
--            base64Alphabet[i] = (byte) (i-'0' + 52);
--        }
--
--        base64Alphabet['+']  = 62;
--        base64Alphabet['/']  = 63;
--
--        for (int i = 0; i<=25; i++)
--            lookUpBase64Alphabet[i] = (char)('A'+i);
--
--        for (int i = 26,  j = 0; i<=51; i++, j++)
--            lookUpBase64Alphabet[i] = (char)('a'+ j);
--
--        for (int i = 52,  j = 0; i<=61; i++, j++)
--            lookUpBase64Alphabet[i] = (char)('0' + j);
--        lookUpBase64Alphabet[62] = (char)'+';
--        lookUpBase64Alphabet[63] = (char)'/';
--
--    }
--
--    protected static boolean isWhiteSpace(char octect) {
--        return (octect == 0x20 || octect == 0xd || octect == 0xa || octect == 0x9);
--    }
--
--    protected static boolean isPad(char octect) {
--        return (octect == PAD);
--    }
--
--    protected static boolean isData(char octect) {
--        return (octect < BASELENGTH && base64Alphabet[octect] != -1);
--    }
--
--    protected static boolean isBase64(char octect) {
--        return (isWhiteSpace(octect) || isPad(octect) || isData(octect));
--    }
--
--    /**
--     * Encodes hex octects into Base64
--     *
--     * @param binaryData Array containing binaryData
--     * @return Encoded Base64 array
--     */
--    public static String encode(byte[] binaryData) {
--
--        if (binaryData == null)
--            return null;
--
--        int      lengthDataBits    = binaryData.length*EIGHTBIT;
--        if (lengthDataBits == 0) {
--            return "";
--        }
--
--        int      fewerThan24bits   = lengthDataBits%TWENTYFOURBITGROUP;
--        int      numberTriplets    = lengthDataBits/TWENTYFOURBITGROUP;
--        int      numberQuartet     = fewerThan24bits != 0 ? numberTriplets+1 : numberTriplets;
--        char     encodedData[]     = null;
--
--        encodedData = new char[numberQuartet*4];
--
--        byte k=0, l=0, b1=0,b2=0,b3=0;
--
--        int encodedIndex = 0;
--        int dataIndex   = 0;
--        if (fDebug) {
--            System.out.println("number of triplets = " + numberTriplets );
--        }
--
--        for (int i=0; i<numberTriplets; i++) {
--            b1 = binaryData[dataIndex++];
--            b2 = binaryData[dataIndex++];
--            b3 = binaryData[dataIndex++];
--
--            if (fDebug) {
--                System.out.println( "b1= " + b1 +", b2= " + b2 + ", b3= " + b3 );
--            }
--
--            l  = (byte)(b2 & 0x0f);
--            k  = (byte)(b1 & 0x03);
--
--            byte val1 = ((b1 & SIGN)==0)?(byte)(b1>>2):(byte)((b1)>>2^0xc0);
--
--            byte val2 = ((b2 & SIGN)==0)?(byte)(b2>>4):(byte)((b2)>>4^0xf0);
--            byte val3 = ((b3 & SIGN)==0)?(byte)(b3>>6):(byte)((b3)>>6^0xfc);
--
--            if (fDebug) {
--                System.out.println( "val2 = " + val2 );
--                System.out.println( "k4   = " + (k<<4));
--                System.out.println( "vak  = " + (val2 | (k<<4)));
--            }
--
--            encodedData[encodedIndex++] = lookUpBase64Alphabet[ val1 ];
--            encodedData[encodedIndex++] = lookUpBase64Alphabet[ val2 | ( k<<4 )];
--            encodedData[encodedIndex++] = lookUpBase64Alphabet[ (l <<2 ) | val3 ];
--            encodedData[encodedIndex++] = lookUpBase64Alphabet[ b3 & 0x3f ];
--        }
--
--        // form integral number of 6-bit groups
--        if (fewerThan24bits == EIGHTBIT) {
--            b1 = binaryData[dataIndex];
--            k = (byte) ( b1 &0x03 );
--            if (fDebug) {
--                System.out.println("b1=" + b1);
--                System.out.println("b1<<2 = " + (b1>>2) );
--            }
--            byte val1 = ((b1 & SIGN)==0)?(byte)(b1>>2):(byte)((b1)>>2^0xc0);
--            encodedData[encodedIndex++] = lookUpBase64Alphabet[ val1 ];
--            encodedData[encodedIndex++] = lookUpBase64Alphabet[ k<<4 ];
--            encodedData[encodedIndex++] = PAD;
--            encodedData[encodedIndex++] = PAD;
--        } else if (fewerThan24bits == SIXTEENBIT) {
--            b1 = binaryData[dataIndex];
--            b2 = binaryData[dataIndex +1 ];
--            l = ( byte ) ( b2 &0x0f );
--            k = ( byte ) ( b1 &0x03 );
--
--            byte val1 = ((b1 & SIGN)==0)?(byte)(b1>>2):(byte)((b1)>>2^0xc0);
--            byte val2 = ((b2 & SIGN)==0)?(byte)(b2>>4):(byte)((b2)>>4^0xf0);
--
--            encodedData[encodedIndex++] = lookUpBase64Alphabet[ val1 ];
--            encodedData[encodedIndex++] = lookUpBase64Alphabet[ val2 | ( k<<4 )];
--            encodedData[encodedIndex++] = lookUpBase64Alphabet[ l<<2 ];
--            encodedData[encodedIndex++] = PAD;
--        }
--
--        return new String(encodedData);
--    }
--
--    /**
--     * Decodes Base64 data into octects
--     *
--     * @param encoded string containing Base64 data
--     * @return Array containind decoded data.
--     */
--    public static byte[] decode(String encoded) {
--
--        if (encoded == null)
--            return null;
--
--        char[] base64Data = encoded.toCharArray();
--        // remove white spaces
--        int len = removeWhiteSpace(base64Data);
--
--        if (len%FOURBYTE != 0) {
--            return null;//should be divisible by four
--        }
--
--        int      numberQuadruple    = (len/FOURBYTE );
--
--        if (numberQuadruple == 0)
--            return new byte[0];
--
--        byte     decodedData[]      = null;
--        byte     b1=0,b2=0,b3=0,b4=0;
--        char     d1=0,d2=0,d3=0,d4=0;
--
--        int i = 0;
--        int encodedIndex = 0;
--        int dataIndex    = 0;
--        decodedData      = new byte[ (numberQuadruple)*3];
--
--        for (; i<numberQuadruple-1; i++) {
--
--            if (!isData( (d1 = base64Data[dataIndex++]) )||
--                !isData( (d2 = base64Data[dataIndex++]) )||
--                !isData( (d3 = base64Data[dataIndex++]) )||
--                !isData( (d4 = base64Data[dataIndex++]) ))
--                return null;//if found "no data" just return null
--
--            b1 = base64Alphabet[d1];
--            b2 = base64Alphabet[d2];
--            b3 = base64Alphabet[d3];
--            b4 = base64Alphabet[d4];
--
--            decodedData[encodedIndex++] = (byte)(  b1 <<2 | b2>>4 ) ;
--            decodedData[encodedIndex++] = (byte)(((b2 & 0xf)<<4 ) |( (b3>>2) & 0xf) );
--            decodedData[encodedIndex++] = (byte)( b3<<6 | b4 );
--        }
--
--        if (!isData( (d1 = base64Data[dataIndex++]) ) ||
--            !isData( (d2 = base64Data[dataIndex++]) )) {
--            return null;//if found "no data" just return null
--        }
--
--        b1 = base64Alphabet[d1];
--        b2 = base64Alphabet[d2];
--
--        d3 = base64Data[dataIndex++];
--        d4 = base64Data[dataIndex++];
--        if (!isData( (d3 ) ) ||
--            !isData( (d4 ) )) {//Check if they are PAD characters
--            if (isPad( d3 ) && isPad( d4)) {               //Two PAD e.g. 3c[Pad][Pad]
--                if ((b2 & 0xf) != 0)//last 4 bits should be zero
--                    return null;
--                byte[] tmp = new byte[ i*3 + 1 ];
--                System.arraycopy( decodedData, 0, tmp, 0, i*3 );
--                tmp[encodedIndex]   = (byte)(  b1 <<2 | b2>>4 ) ;
--                return tmp;
--            } else if (!isPad( d3) && isPad(d4)) {               //One PAD  e.g. 3cQ[Pad]
--                b3 = base64Alphabet[ d3 ];
--                if ((b3 & 0x3 ) != 0)//last 2 bits should be zero
--                    return null;
--                byte[] tmp = new byte[ i*3 + 2 ];
--                System.arraycopy( decodedData, 0, tmp, 0, i*3 );
--                tmp[encodedIndex++] = (byte)(  b1 <<2 | b2>>4 );
--                tmp[encodedIndex]   = (byte)(((b2 & 0xf)<<4 ) |( (b3>>2) & 0xf) );
--                return tmp;
--            } else {
--                return null;//an error  like "3c[Pad]r", "3cdX", "3cXd", "3cXX" where X is non data
--            }
--        } else { //No PAD e.g 3cQl
--            b3 = base64Alphabet[ d3 ];
--            b4 = base64Alphabet[ d4 ];
--            decodedData[encodedIndex++] = (byte)(  b1 <<2 | b2>>4 ) ;
--            decodedData[encodedIndex++] = (byte)(((b2 & 0xf)<<4 ) |( (b3>>2) & 0xf) );
--            decodedData[encodedIndex++] = (byte)( b3<<6 | b4 );
--
--        }
--
--        return decodedData;
--    }
--
--    /**
--     * remove WhiteSpace from MIME containing encoded Base64 data.
--     *
--     * @param data  the byte array of base64 data (with WS)
--     * @return      the new length
--     */
--    protected static int removeWhiteSpace(char[] data) {
--        if (data == null)
--            return 0;
--
--        // count characters that's not whitespace
--        int newSize = 0;
--        int len = data.length;
--        for (int i = 0; i < len; i++) {
--            if (!isWhiteSpace(data[i]))
--                data[newSize++] = data[i];
--        }
--        return newSize;
--    }
--}
 diff --git a/src/main/java/hudson/remoting/Engine.java b/src/main/java/hudson/remoting/Engine.java
-index 85453e0..e883285 100644
+index fa2a435..ef3e1db 100644
 --- a/src/main/java/hudson/remoting/Engine.java
 +++ b/src/main/java/hudson/remoting/Engine.java
-@@ -39,6 +39,7 @@ import java.util.concurrent.ThreadFactory;
+@@ -42,6 +42,7 @@ import java.util.concurrent.ThreadFactory;
  import java.util.List;
  import java.util.Collections;
  import java.util.logging.Logger;
 +import javax.xml.bind.DatatypeConverter;
  
- /**
-  * Slave agent engine that proactively connects to Hudson master.
-@@ -149,7 +150,7 @@ public class Engine extends Thread {
+ import static java.util.logging.Level.INFO;
+ 
+@@ -90,7 +91,7 @@ public class Engine extends Thread {
+     private final String secretKey;
+     public final String slaveName;
+     private String credentials;
+-	private String proxyCredentials = System.getProperty("proxyCredentials");
++    private String proxyCredentials = System.getProperty("proxyCredentials");
+ 
+     /**
+      * See Main#tunnel in the jnlp-agent module for the details.
+@@ -137,9 +138,9 @@ public class Engine extends Thread {
+         this.credentials = creds;
+     }
+ 
+-	public void setProxyCredentials(String proxyCredentials) {
+-		this.proxyCredentials = proxyCredentials;
+-	}
++    public void setProxyCredentials(String proxyCredentials) {
++        this.proxyCredentials = proxyCredentials;
++    }
+ 
+     public void setNoReconnect(boolean noReconnect) {
+         this.noReconnect = noReconnect;
+@@ -170,16 +171,16 @@ public class Engine extends Thread {
+                     // find out the TCP port
                      HttpURLConnection con = (HttpURLConnection)salURL.openConnection();
-                     if (con instanceof HttpURLConnection && credentials != null) {
-                         // XXX /tcpSlaveAgentListener is unprotected so why do we need to pass any credentials?
--                        String encoding = Base64.encode(credentials.getBytes());
-+                        String encoding = DatatypeConverter.printBase64Binary(credentials.getBytes());
-                         con.setRequestProperty("Authorization", "Basic " + encoding);
+                     if (con instanceof HttpURLConnection) {
+-                    	if (credentials != null) {
+-                    		// TODO /tcpSlaveAgentListener is unprotected so why do we need to pass any credentials?
+-                    		String encoding = Base64.encode(credentials.getBytes("UTF-8"));
+-                    		con.setRequestProperty("Authorization", "Basic " + encoding);
+-                    	}
+-                    	
+-                    	if (proxyCredentials != null) {
+-    	                    String encoding = Base64.encode(proxyCredentials.getBytes("UTF-8"));
+-    	                    con.setRequestProperty("Proxy-Authorization", "Basic " + encoding);
+-                    	}
++                        if (credentials != null) {
++                            // TODO /tcpSlaveAgentListener is unprotected so why do we need to pass any credentials?
++                            String encoding = DatatypeConverter.printBase64Binary(credentials.getBytes());
++                            con.setRequestProperty("Authorization", "Basic " + encoding);
++                        }
++
++                        if (proxyCredentials != null) {
++                            String encoding = DatatypeConverter.printBase64Binary(credentials.getBytes());
++                            con.setRequestProperty("Proxy-Authorization", "Basic " + encoding);
++                        }
                      }
                      try {
+                         try {
 diff --git a/src/main/java/hudson/remoting/Launcher.java b/src/main/java/hudson/remoting/Launcher.java
-index 9718c1c..e7bfed2 100644
+index 83a3425..ea9bcaa 100644
 --- a/src/main/java/hudson/remoting/Launcher.java
 +++ b/src/main/java/hudson/remoting/Launcher.java
 @@ -78,6 +78,7 @@ import java.security.SecureRandom;
@@ -353,13 +82,23 @@ index 9718c1c..e7bfed2 100644
  
  /**
   * Entry point for running a {@link Channel}. This is the main method of the slave JVM.
-@@ -239,7 +240,7 @@ public class Launcher {
-                 if (con instanceof HttpURLConnection && slaveJnlpCredentials != null) {
+@@ -252,13 +253,13 @@ public class Launcher {
+                 if (con instanceof HttpURLConnection) {
                      HttpURLConnection http = (HttpURLConnection) con;
-                     String userPassword = slaveJnlpCredentials;
--                    String encoding = Base64.encode(userPassword.getBytes());
-+                    String encoding = DatatypeConverter.printBase64Binary(userPassword.getBytes());
-                     http.setRequestProperty("Authorization", "Basic " + encoding);
+                     if  (slaveJnlpCredentials != null) {
+-	                    String userPassword = slaveJnlpCredentials;
+-	                    String encoding = Base64.encode(userPassword.getBytes("UTF-8"));
+-	                    http.setRequestProperty("Authorization", "Basic " + encoding);
++                        String userPassword = slaveJnlpCredentials;
++                        String encoding = DatatypeConverter.printBase64Binary(userPassword.getBytes());
++                        http.setRequestProperty("Authorization", "Basic " + encoding);
+                     }
+                     if (System.getProperty("proxyCredentials", proxyCredentials) != null) {
+-	                    String encoding = Base64.encode(System.getProperty("proxyCredentials", proxyCredentials).getBytes("UTF-8"));
+-	                    http.setRequestProperty("Proxy-Authorization", "Basic " + encoding);
++                        String encoding = DatatypeConverter.printBase64Binary(System.getProperty("proxyCredentials", proxyCredentials).getBytes("UTF-8"));
++                        http.setRequestProperty("Proxy-Authorization", "Basic " + encoding);
+                     }
                  }
                  con.connect();
 diff --git a/src/test/java/hudson/remoting/BinarySafeStreamTest.java b/src/test/java/hudson/remoting/BinarySafeStreamTest.java
diff --git a/jenkins-remoting.spec b/jenkins-remoting.spec
index 98af988..6d5762e 100644
--- a/jenkins-remoting.spec
+++ b/jenkins-remoting.spec
@@ -1,8 +1,8 @@
 %global shortname remoting
 
 Name:           jenkins-remoting
-Version:        2.23
-Release:        2%{?dist}
+Version:        2.32
+Release:        1%{?dist}
 Summary:        Jenkins remoting module
 
 # License is specified in pom file
@@ -24,6 +24,7 @@ BuildArch:      noarch
 BuildRequires:  maven-local
 BuildRequires:  mvn(args4j:args4j)
 BuildRequires:  mvn(commons-io:commons-io)
+BuildRequires:  mvn(org.jenkins-ci:constant-pool-scanner)
 
 
 %description
@@ -82,6 +83,9 @@ cp %{SOURCE2} .
 %doc LICENSE-MIT LICENSE-ASL
 
 %changelog
+* Mon Sep 02 2013 Michal Srb <msrb at redhat.com> - 2.32-1
+- Update to upstream version 2.32
+
 * Sat Aug 03 2013 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 2.23-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
 
diff --git a/sources b/sources
index 38a5128..17d70ca 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-3864ed76dca662ee000f3152ad78c1c4  remoting-2.23.tar.gz
 3b83ef96387f14655fc854ddc3c6bd57  LICENSE-2.0.txt
+6d4fd12b299940770e99030fe80dac79  remoting-2.32.tar.gz


More information about the java-sig-commits mailing list