- _dbus_verbose("body attaching\n");
- item = KDBUS_PART_NEXT(item);
- MSG_ITEM_BUILD_VEC(_dbus_string_get_const_data(body), body_size);
+ const char* body_data;
+
+ body_data = _dbus_string_get_const_data(body);
+ while(body_size > KDBUS_MSG_MAX_PAYLOAD_VEC_SIZE)
+ {
+ _dbus_verbose("body attaching\n");
+ item = KDBUS_PART_NEXT(item);
+ MSG_ITEM_BUILD_VEC(body_data, KDBUS_MSG_MAX_PAYLOAD_VEC_SIZE);
+ body_data += KDBUS_MSG_MAX_PAYLOAD_VEC_SIZE;
+ body_size -= KDBUS_MSG_MAX_PAYLOAD_VEC_SIZE;
+ }
+ if(body_size)
+ {
+ _dbus_verbose("body attaching\n");
+ item = KDBUS_PART_NEXT(item);
+ MSG_ITEM_BUILD_VEC(body_data, body_size);
+ }