Age | Commit message (Collapse) | Author |
|
A failing file:sendfile call would often send a message
{inet_reply, Port, {error, Reason}} that would pollute the mailbox
of the calling process.
TCP_REQ_SENDFILE has its own reply messages format
{sendfile, _, _} and does not expect an inet_reply message.
Solution: Suppress inet_reply error message if TCP_ADDF_SENDFILE
is set.
|
|
driver_select() was called after port had been killed
by tcp_inet_sendfile() calling tcp_send_error().
|
|
|
|
The option no longer does anything at all.
|
|
This also hides the module behind ?PRIM_FILE to make testing new
implementations less painful.
|
|
|
|
On Solaris, giving a too long sfv_len results in an
EINVAL error, but data is still transmitted and len is
correctly. So we translate this to a success with that
amount of data sent. This may hide some other errors
that causes EINVAL, but it is the best we can do for now.
|
|
|
|
?config is ugly and not recommended. Use proplists:get_value/2
instead.
|
|
|
|
The tests have to be skipped when the emulator running the tests does
not have any async threads.
|
|
* lukas/erts/sendfile_no_async_pool/OTP-11639:
erts/kernel: sendfile no longer uses async threads
|
|
The bug incorrectly issued driver_select when un-ignoring an fd
for a socket in passive mode, which caused an incorrect error
tuple to be returned when the remote end closed the connection.
|
|
This has been done because a slow client attack is possible if the
async thread pool is used. The scenario is:
Client does a request for a file and then slowly receives the file one
byte at a time. This will eventually fill the async thread pool with blocking
sendfile operations and thus starving the vm of all file operations.
If you still want to use the async threads pool for sendfile an option to
enable it has been introduced.
|
|
|
|
Since stop_select is called at an arbitrary point in the future
it would sometime not be alled before the tcp driver started
selecting on the fd. So now ERL_DRV_USE_NO_CALLBACK is used
so that the stop_select call is never made.
This seems to only have happened OS X.
|
|
The return value from efile_sendfile was not consistent
inbetween platforms. The API should now be working as it
was intended.
OTP-9994
|
|
|
|
|
|
|
|
When sendfile crashes during a send there should be no
error_logger printouts about stolen fds.
|
|
If the socket is closed by the remote end, sendfile
now returns {error,closed}.
|
|
Thanks Tuncer Ayaz
|
|
sendfilev is a richer API which allows us to
do non blocking TCP on solaris. The normal
sendfile API seems to have some issue with
non blocking sockets and the return value of
sendfile.
|
|
|
|
|
|
Since the API for headers/trailers seem to be very awkward to
work with when using non-blocking io the feature is dropped
for now. See unix_efile.c for more details.
|
|
Since sendfile could in theory be used to send to any type
of file descriptor in *nix, it is a better fit to have it
in file.
|