Currently, `pcmk__ipc_prepare_iov()` will compress IPC messages if they are larger than a certain size. However if the compressed message is still too large, it returns an error.
We should be able to split overlarge messages into parts and reassemble them on the other end. That would remove any limit on CIB size and allow us to do away with the `PCMK_ipc_buffer` environment variable.
Maybe `pcmk__ipc_header_t` could have a new `enum crm_ipc_flags` value for whether this is a partial message. Dispatch functions on both the server and client sides would need to check that to reassemble messages. We probably want to guarantee that any one message will be sent together (not interrupted by other messages).
We could always use 128KB as the buffer size, or we might be able to dynamically choose a larger size as long as it's within system limits (such as `/proc/sys/net/core/rmem_max` and `/proc/sys/net/core/wmem_max` for socket receive and send buffer maximums on Linux, although we don't know whether libqb is using sockets or shared memory for IPC).
Backward compatibility shouldn't be an issue since IPC connections are always on the same server. Proxied Pacemaker Remote IPC connections are still local on the controller side; the remote connection itself uses direct reads and writes of the socket, with data treated as a stream of bytes rather than messages.