[ 
https://issues.apache.org/jira/browse/NET-220?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12597990#action_12597990
 ] 

Sebb commented on NET-220:
--------------------------

Just realised that fixing the launch() problem will require a change to the API.

The server needs to be started by the caller; this will require changes to Test 
code.

There should be no existing application code, as the class is new to 2.0 - as 
far as I know.

> TFTPServer is not threadsafe
> ----------------------------
>
>                 Key: NET-220
>                 URL: https://issues.apache.org/jira/browse/NET-220
>             Project: Commons Net
>          Issue Type: Bug
>    Affects Versions: 2.0
>            Reporter: Sebb
>
> The TFTPServer class is not threadsafe.
> There are several reasons for this:
> Ctors call private launch() method which creates a thread and start()s it.
> This publishes the instance before it has been fully constructed.
> Various instance fields are not thread-safe - e.g. serverReadDirectory_ is 
> neither final nor volatile, and accesses to it are not synchronized. 
> Although it is only written by the ctors, the lack of synch means that the 
> field may not be visible to other threads.
> As far as possible, instance fields should be made final - this guarantees 
> that the field will be visible to other threads.
> One of the shutdown_ variables is volatile (so is threadsafe) but the 
> shutdown_ variable in the nested TFTPTransfer class is not,  yet is accessed 
> from multiple threads.
> The access to the variable serverException is not synch; should probably be 
> volatile.
> Patch to follow.

-- 
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