@Override
	protected void handleProtocol() throws Exception {

		handleLoop:
		while(!aborted() && !isProtocolCompleted()) {
			int timeout = getTimeout();
			
			IPacket packet = socket.waitForPacket(timeout);
			
			if(aborted()) {
				return;
			}
			
			if(packet == null) {
				int newTimeout = getTimeout();
				
				if(newTimeout <= timeout) {
					this.timeout = true;
					throw new TimeoutException("Protocol timeout! Protocol was handled to slow!");
				}
				
				continue handleLoop;
			}

			distributor.distribute(packet);
			
			if(!socket.isConnected()) {
				throw new SocketException("Disconnect during protocol execution!");
			}
		}
	}