TimeSlice and Socket-Timeout bounds checking wrong
--------------------------------------------------

                 Key: DERBY-2748
                 URL: https://issues.apache.org/jira/browse/DERBY-2748
             Project: Derby
          Issue Type: Bug
          Components: Network Client
    Affects Versions: 10.2.2.0
            Reporter: Kurt Huwig


ClientThread sets the Socket timeout based upon the timeslice value:

        //set time out                                  
        //this looks highly suspect.  Why does timeSlice setSoTimeout?          
        if (timeSlice != 0)
                clientSocket.setSoTimeout(timeSlice);

it gets the timeSlice from NetworkServerControlImpl which sets it like this:

        /**
         * Set the current value of  time slice
         *
         * @param value time slice value
         * @exception Exception if value is < 0
         */
        private void setTimeSlice(int value)
                throws Exception
        {
                if (value < MIN_TIMESLICE)
                        consolePropertyMessage("DRDA_InvalidValue.U", new 
String [] 
                                {new Integer(value).toString(), "timeslice"});
                if (value == USE_DEFAULT)
                        value = DEFAULT_TIMESLICE;
                synchronized(timeSliceSync) {
                        timeSlice = value;
                }
        }

but

        private final static int MIN_TIMESLICE = -1;

therefore a value of -1 is accepted by setTimeSlice, due to "!= 0" used for 
Socket.setSoTimeout which will bail out with an Exception:

        if (timeout < 0)
          throw new IllegalArgumentException("timeout can't be negative");

According to the comments, the proper fix would be

-       private final static int MIN_TIMESLICE = -1;
+       private final static int MIN_TIMESLICE = 0;

but I do not understand the timeslice at all, so this is just my guess.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to