Hi,
after some debugging I found out
that dillo was frozen because it waits for input on the unix
socket from the cookies.dpi.
cookies.dpi itself blocks on the read() on the connection socket.
If you kill dillo and stop dpid, the next time
the cookies.dpi starts, it finds the cookies files locked and terminates
immedediately. Then dpid starts the cookies.dpi again and again in an
infinite loop.
In my theory, the freeze where both processes are hanging in read()
is caused when a connection is creating via
DEBUG_MSG(5, "Cookies.c: a_Cookies_set \n\t \"%s\" \n",cmd );
a_Capi_dpi_send_cmd(NULL, NULL, cmd, "cookies", 1);
but the data is not send yet and
/* Get the answer from cookies.dpi */
dpip_tag = a_Dpi_send_blocking_cmd("cookies", cmd);
is called.
I have attached a patch which uses a_Dpi_send_blocking_cmd().
It seems to fix the problem. dillo has not been frozen again yet.
Maybe cookies.dpi should create the SockHandler only when there
is data to read (checking for it with select() first).
Greetings
Andreas Kemnade