private void loop()
	{
		Thread thTmp = Thread.currentThread();
		Socket sckTmp = null;

		while(! thTmp.isInterrupted())
		{
			try
			{
				sckTmp = this.ssck.accept();
				sckTmp.setSoTimeout(EzimNetwork.dtxTimeout);

				EzimContact ecTmp = EzimContactList.getInstance().getContact
				(
					((InetSocketAddress) sckTmp.getRemoteSocketAddress())
						.getAddress()
				);

				// only take messages from known contacts
				if (ecTmp != null)
				{
					EzimDtxTakerThread emttTmp = new EzimDtxTakerThread
					(
						ecTmp
						, sckTmp
					);

					EzimThreadPool etpTmp = EzimThreadPool.getInstance();

					etpTmp.execute(emttTmp);
				}
				else if (sckTmp != null && ! sckTmp.isClosed())
				{
					sckTmp.close();
					sckTmp = null;
				}
			}
			catch(Exception e)
			{
				if (! thTmp.isInterrupted())
					EzimLogger.getInstance().severe(e.getMessage(), e);
			}
		}
	}