public void acceptServerInput() {
		// new Exception("DEBUG").printStackTrace(System.err);
		while(pausing) {
			try {
				if (serverConnection == null || serverConnection.isClosed()) 
					serverConnection = new ServerSocket(port);
				Fluid.log("Source: Accepting connection on port " + port);
				sourceSocket = serverConnection.accept();
				InputStream sourceInputStream = sourceSocket.getInputStream();
				OutputStream sourceOutputStream = sourceSocket.getOutputStream();
				// give the source a chance to send something
				try {
					Thread.sleep(1000);
				} 
				catch (InterruptedException e) {
					// nah
				}
				byte[] rawInput = new byte[sourceInputStream.available()];
				sourceInputStream.read(rawInput);
				String rawString = new String(rawInput).trim();
				int index = rawString.indexOf("\n");
				String[] greeting = accept;
				if (password != null && (
						index <= 0 || 
						!password.equals(rawString.substring(0, index).trim()))) {
					greeting = reject;
				}
				for (int i = 0; i < greeting.length; i++) {
					sourceOutputStream.write(greeting[i].getBytes());
					sourceOutputStream.write("\r\n".getBytes());
				}
				sourceOutputStream.write("\r\n\r\n".getBytes());
				if (greeting == reject) {
					sourceSocket.close();
				} else {
					// send the (possible) information to the event listeners
					StreamEventListener[] listeners = getStreamEventListeners();
					for(int i = 0; i < listeners.length; i++) {
						listeners[i].handleEvent(new StreamEvent("SourceDetails", rawInput, this));
					}				
					Fluid.log("Source: Accepted input from "
							+ sourceSocket.getInetAddress().getCanonicalHostName());
					setInputStream(sourceInputStream);
					pausing = false;
				}
			}
			catch(IOException e) {
				Fluid.error(e);
			}
		}
	}