return true;
    private void handleDataReceived(Object sender, long seqno, Message msg) {        if(trace)            log.trace(new StringBuffer().append(local_addr).append(" <-- DATA(").append(sender).append(": #").append(seqno));        if(previous_members.contains(sender)) {            if(trace)                log.trace("removed " + sender + " from previous_members as we received a message from it");            previous_members.removeElement(sender);        }        Entry    entry;        synchronized(connections) {            entry=(Entry)connections.get(sender);            if(entry == null) {                entry=new Entry();                connections.put(sender, entry);                if(trace)                    log.trace(local_addr + ": created new connection for dst " + sender);            }            if(entry.received_msgs == null)                entry.received_msgs=new AckReceiverWindow(DEFAULT_FIRST_SEQNO);        }        entry.received_msgs.add(seqno, msg); // entry.received_msgs is guaranteed to be non-null if we get here        num_msgs_received++;        num_bytes_received+=msg.getLength();        // Try to remove (from the AckReceiverWindow) as many messages as possible as pass them up        Message  m;        // Prevents concurrent passing up of messages by different threads (http://jira.jboss.com/jira/browse/JGRP-198);        // this is all the more important once we have a threadless stack (http://jira.jboss.com/jira/browse/JGRP-181),        // where lots of threads can come up to this point concurrently, but only 1 is allowed to pass at a time        // We *can* deliver messages from *different* senders concurrently, e.g. reception of P1, Q1, P2, Q2 can result in        // delivery of P1, Q1, Q2, P2: FIFO (implemented by UNICAST) says messages need to be delivered only in the        // order in which they were sent by their senders        synchronized(entry) {            while((m=entry.received_msgs.remove()) != null)                passUp(new Event(Event.MSG, m));        }    }