p***@public.gmane.org
2012-12-09 10:58:43 UTC
Dpi_connect_socket function from src/IO/dpi.c (also duplicated in
test/cookies.c) has retry argument. It is set to TRUE on first call,
and Dpi_connect_socket calls itself recursively with retry == FALSE in
case of error.
This retry function is not working. If connection fails, at line 645
sock_fd is set, but ret is still set to -1. Even if the second attempt
to connect is successful, -1 is returned and conected sock_fd is lost.
It is possible to fix it by adding "ret = sock_fd", but I think it is
better to just remove retries completely. It is unlikely that
connecting using loopback interface will fail on first try and succeed
on retry.
Also, comment says "the server closes sock_fd on error". However,
sock_fd should still be closed by client to free allocated file
descriptor. OS don't know if Dillo is going to read from it (in which
case error such as ECONNRESET should happen) so file descriptor can't
be reused.
File descriptor should be closed in case of error in a_Dpip_build_cmd
too.
Patch to fix this function and its calls in src/IO/dpi.c and
test/cookies.c is attached.
test/cookies.c) has retry argument. It is set to TRUE on first call,
and Dpi_connect_socket calls itself recursively with retry == FALSE in
case of error.
This retry function is not working. If connection fails, at line 645
sock_fd is set, but ret is still set to -1. Even if the second attempt
to connect is successful, -1 is returned and conected sock_fd is lost.
It is possible to fix it by adding "ret = sock_fd", but I think it is
better to just remove retries completely. It is unlikely that
connecting using loopback interface will fail on first try and succeed
on retry.
Also, comment says "the server closes sock_fd on error". However,
sock_fd should still be closed by client to free allocated file
descriptor. OS don't know if Dillo is going to read from it (in which
case error such as ECONNRESET should happen) so file descriptor can't
be reused.
File descriptor should be closed in case of error in a_Dpip_build_cmd
too.
Patch to fix this function and its calls in src/IO/dpi.c and
test/cookies.c is attached.