protected boolean sendSomeOutgoingData( TCPSession sess ) throws Exception {
		SocketAddressPair rap = sess.rap;
		boolean anythingSent = false;
		if( sess.combine ) {
			anythingSent = sendData( rap, sess.outBuf, !sess.outBuf.synAcked, true, true, sess.inputSequence ); 
		} else {
			if( !sess.outBuf.synAcked ) {
				anythingSent |= sendData( rap, sess.outBuf, true, false, false, sess.inputSequence );
			}
			if( sess.outBuf.buffer.length > 0 ) {
				anythingSent |= sendData( rap, sess.outBuf, false, true, false, sess.inputSequence );
			}
			if( sess.outBuf.buffer.length <= 1024 && sess.outBuf.closed && !sess.outBuf.closeAcked ) {
				outputSegmentSink.give( TCPSegment.create(
					rap,
					sess.outBuf.sequence + sess.outBuf.buffer.length,
					sess.inputSequence,
					TCPFlags.FIN | TCPFlags.ACK,
					WINDOW_SIZE,
					SimpleByteChunk.EMPTY_BYTE_ARRAY, 0, 0
				));
				anythingSent = true;
			}
		}
		return anythingSent;
	}