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