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:   TDiocpTcpServer = class(TComponent)
    private
      FClosingFlag:Byte;
      
      FListeners: TDiocpListeners;
  
  
negative.code: procedure TDiocpTcpServer.CheckOpen(pvInitalizeNum:Integer);
  begin
    if FActive then Exit;
  
    FOpeningFlag := 1;
    try
    
      // 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);
    finally
      FOpeningFlag := 0;
    end;
  end;
  
  
  