Datagram sockets such as UDP, ICMP, and fibre channel tend to provide
a custom xfer_alloc_iob() handler to ensure that transmit I/O buffers
contain sufficient headroom to accommodate any required protocol
headers.
Stream sockets such as TCP and TLS do not typically provide a custom
xfer_alloc_iob() handler at present. The default handler simply calls
alloc_iob(), and so stream socket consumers can therefore get away
with using alloc_iob() rather than xfer_alloc_iob().
Fix the HTTP and ONC RPC protocols to use xfer_alloc_iob() where
relevant, in order to operate correctly if the underlying stream
socket chooses to provide a custom xfer_alloc_iob() handler.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
}
/* Allocate I/O buffer */
- iobuf = alloc_iob ( len + 1 /* NUL */ + http->request.content.len );
+ iobuf = xfer_alloc_iob ( &http->conn, ( len + 1 /* NUL */ +
+ http->request.content.len ) );
if ( ! iobuf ) {
rc = -ENOMEM;
goto err_alloc;
frame_size = oncrpc_compute_size ( header );
frame_size += oncrpc_compute_size ( fields );
- io_buf = alloc_iob ( frame_size );
+ io_buf = xfer_alloc_iob ( intf, frame_size );
if ( ! io_buf )
return -ENOBUFS;