anchor.diff:  
   function TDiocpTcpServer.CanWork: Boolean;
   begin
  -  Result := FActive and (self.FClosingFlag = 0);
  +  Result := (FActive and (self.FClosingFlag = 0)) or (FOpeningFlag = 1);
   end;
   
   procedure TDiocpTcpServer.CheckCreatePoolObjects(pvMaxNum:Integer);
  
positive.code: procedure TDiocpTcpServer.CheckOpen(pvInitalizeNum:Integer);
  begin
    if FActive then Exit;
    
    // IOCP
    FIocpEngine.CheckStart;
  
    if UseAsyncRecvQueue then
    begin
      FRecvBuffLink := NewBufferPool(self.FWSARecvBufferSize, 0);
    end;
    
    DoBeforeOpen();
  
    if FListeners.FList.Count = 0 then
    begin
      FDefaultListener.FListenAddress := FDefaultListenAddress;
      FDefaultListener.FListenPort := FPort;
      FDefaultListener.FIPVersion := IP_V4;
      FDefaultListener.Start(FIocpEngine);
      FDefaultListener.PostAcceptExRequest(pvInitalizeNum);
    end else
    begin
      FListeners.Start(FIocpEngine);
      FListeners.PostAcceptExRequest(pvInitalizeNum);
    end;
  
    FActive := True;
  
    DoAfterOpen;
    if Assigned(FOnAfterOpen) then FOnAfterOpen(Self);
  end;
  
  
  
negative.code:   TDiocpTcpServer = class(TComponent)
    private
      FClosingFlag:Byte;
      FOpeningFlag:Byte;
      
      FListeners: TDiocpListeners;
  
  