|
@@ -905,7 +905,7 @@ static int mcast_msg (
|
|
|
* fragment_buffer on exit so that max_packet_size + fragment_size
|
|
* fragment_buffer on exit so that max_packet_size + fragment_size
|
|
|
* doesn't exceed the size of the fragment_buffer on the next call.
|
|
* doesn't exceed the size of the fragment_buffer on the next call.
|
|
|
*/
|
|
*/
|
|
|
- if ((copy_len + fragment_size) <
|
|
|
|
|
|
|
+ if ((iovec[i].iov_len + fragment_size) <
|
|
|
(max_packet_size - sizeof (unsigned short))) {
|
|
(max_packet_size - sizeof (unsigned short))) {
|
|
|
|
|
|
|
|
memcpy (&fragmentation_data[fragment_size],
|
|
memcpy (&fragmentation_data[fragment_size],
|
|
@@ -963,7 +963,7 @@ static int mcast_msg (
|
|
|
iovecs[1].iov_len = mcast_packed_msg_count *
|
|
iovecs[1].iov_len = mcast_packed_msg_count *
|
|
|
sizeof(unsigned short);
|
|
sizeof(unsigned short);
|
|
|
iovecs[2].iov_base = (void *)data_ptr;
|
|
iovecs[2].iov_base = (void *)data_ptr;
|
|
|
- iovecs[2].iov_len = max_packet_size;
|
|
|
|
|
|
|
+ iovecs[2].iov_len = fragment_size + copy_len;
|
|
|
assert (totemsrp_avail(totemsrp_context) > 0);
|
|
assert (totemsrp_avail(totemsrp_context) > 0);
|
|
|
res = totemsrp_mcast (totemsrp_context, iovecs, 3, guarantee);
|
|
res = totemsrp_mcast (totemsrp_context, iovecs, 3, guarantee);
|
|
|
if (res == -1) {
|
|
if (res == -1) {
|