Allow data to be successfully written (and discarded) to a void data
transfer buffer, rather than throwing an error. This allows a void
data transfer buffer to be used when determining the length of a file
downloaded from a TFTP server that does not support the "tsize" option
defined in RFC 2349.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
if ( ( rc = xferbuf_ensure_size ( xferbuf, max_len ) ) != 0 )
return rc;
- /* Check that buffer is non-void */
- if ( len && ( ! xferbuf->data ) )
- return -ENOTTY;
-
- /* Copy data to buffer */
+ /* Copy data to buffer (if non-void) */
profile_start ( &xferbuf_write_profiler );
- memcpy ( ( xferbuf->data + offset ), data, len );
+ if ( xferbuf->data )
+ memcpy ( ( xferbuf->data + offset ), data, len );
profile_stop ( &xferbuf_write_profiler );
return 0;