[ 
https://issues.apache.org/jira/browse/DERBY-2748?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12501181
 ] 

Kurt Huwig commented on DERBY-2748:
-----------------------------------

Code and doc look ok to me.

> 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
>            Assignee: Bernt M. Johnsen
>         Attachments: DERBY-2748-code.diff, DERBY-2748-doc.diff
>
>
> 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