
Nulling of destination addresses for optimized marshalling
==========================================================

Author: Bela Ban
Date: Aug 26 2005

When we marshall a message (org.jgroups.Message), we can transmit a null value for the destination, because
the receiver can determine the destination:
- for UDP: if received on the multicast receive socket, the destination is the multicast address (same as null)
           if received on the unicast receive socket, the destination is the local_addr (ourself)
- for TCP: we use the MULTICAST byet sent with the message when unmarshalling the message:
           - if true, we leave the deatination null (= multicast destination)
           - if not set, we set the destination to the address passed to use from the ConnectionTable

This requires that when marshalling a message, we send a multicast byte with each Message (or once for bundled msgs)
based on the destination address!

Note that we *cannot* modify the destination address in the message itself, otherwise retransmissions might fail!

