/*
- * jSite2 - FcpConnectionHandler.java -
- * Copyright © 2008 David Roden
+ * jFCPlib - FcpConnectionHandler.java - Copyright © 2008 David Roden
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
/**
* Handles an FCP connection to a node.
- *
+ *
* @author David ‘Bombe’ Roden <bombe@freenetproject.org>
- * @version $Id$
*/
class FcpConnectionHandler implements Runnable {
/**
* Creates a new connection handler that operates on the given connection
* and input stream.
- *
+ *
* @param fcpConnection
* The underlying FCP connection
* @param remoteInputStream
*/
public void run() {
FcpMessage fcpMessage = null;
+ Throwable throwable = null;
while (true) {
synchronized (this) {
if (shouldStop) {
fcpMessage = new FcpMessage(line);
continue;
}
- if ("EndMessage".equals(line)) {
+ if ("EndMessage".equalsIgnoreCase(line) || "Data".equalsIgnoreCase(line)) {
fcpConnection.handleMessage(fcpMessage);
fcpMessage = null;
}
String value = line.substring(equalSign + 1);
assert fcpMessage != null: "fcp message is null";
fcpMessage.setField(field, value);
- } catch (IOException e) {
+ } catch (IOException ioe1) {
+ throwable = ioe1;
break;
}
}
- fcpConnection.handleDisconnect();
+ fcpConnection.handleDisconnect(throwable);
}
/**
/**
* Reads bytes from {@link #remoteInputStream} until ‘\r’ or ‘\n’ are
* encountered and decodes the read bytes using UTF-8.
- *
+ *
* @return The decoded line
* @throws IOException
* if an I/O error occurs