public void handle() throws Exception {
		byte body[] = this.requestThread.getClientContent();

		String weAreHeader = this.requestThread.getHeader(
				RequestThread.X_P300_WE_ARE, null);

		if (weAreHeader == null) {
			D.out("LanMessageRequest: No ID header from "
					+ this.requestThread.getRemoteIP());
		} else if (body == null || body.length == 0) {
			D.out("LanMessageRequest: No message XML from "
					+ this.requestThread.getRemoteIP());
		} else {
			Host from = MainDialog.hostMap.get(weAreHeader);
			if (from == null) {
				D.out("LanMessageRequest: No local host with IP "
						+ this.requestThread.getRemoteIP());
			} else {
				if (!from.hasIp(this.requestThread.getRemoteIP())) {
					D
							.out("LanMessageRequest: Spoof? Host with given ID has not IP "
									+ this.requestThread.getRemoteIP());
				} else {
					Document d = de.guruz.p300.utils.DOMUtils
							.documentFromByteArray(body);

					if (d != null) {
						handleMessage(from, d);
					} else {
						D.out("LanMessageRequest: No valid message XML from "
								+ this.requestThread.getRemoteIP());
					}
				}
			}
		}

		this.requestThread.httpStatus(200, "OK");
		this.requestThread.httpContentLength(0);
		this.requestThread.httpContents();
		this.requestThread.flush();
		this.requestThread.close();

	}