def receive_outofband_data(&block)
      wait_for_datasocket do |datasocket|
        if datasocket.nil?
          send_response "425 Error establishing connection"
          yield false
        else

          # let the client know we're ready to start
          send_response "150 Data transfer starting"

          datasocket.callback do |data|
            block.call(data)
          end
        end
      end
    end
def receive_outofband_data(&block)
      wait_for_datasocket do |datasocket|
        if datasocket.nil?
          send_response "425 Error establishing connection"
          yield false
        else

          # let the client know we're ready to start
          send_response "150 Data transfer starting"

          datasocket.callback do |data|
            block.call(data)
          end
        end
      end
    end
receive a file data from the client across the data socket.

 The data socket is NOT guaranteed to be setup by the time this method runs.
 If this happens, exit the method early and try again later. See the method
 comments to send_outofband_data for further explanation.