It seems to me the function "_dxfCompleteServer" in "src/exec/dpexec/ccm.c" will not return correct file id for the connection. This could be the cause of the bug.

The following is my suggestion for the bug. However, I have not tested the codes, because I can not conpile the code in my computer. Sorry.

--- ccm.c.orig    2002-07-11 17:44:20.000000000 -0400
+++ ccm.c    2002-07-11 17:45:33.000000000 -0400
@@ -265,7 +265,7 @@
    if (FD_ISSET(sock, &fds))
    {
    length = sizeof(server);
-    if (accept(sock, (struct sockaddr *)&server, &length) < 0)
+    if ((fd = accept(sock, (struct sockaddr *)&server, &length)) < 0)
    {
        perror ("accept");
        goto error;
@@ -275,13 +275,14 @@
    else
    {
length = sizeof (userver) - sizeof(userver.sun_path) + strlen (userver.sun_path);
-    if (accept(usock, (struct sockaddr *)&userver, &length) < 0)
+    if ((fd = accept(usock, (struct sockaddr *)&userver, &length)) < 0)
    {
        perror ("accept");
        goto error;
    }
    }
#endif
+    return fd;

error:
#if DXD_SOCKET_UNIXDOMAIN_OK
@@ -292,5 +293,5 @@
#endif
    if (sock >= 0)
    close (sock);
-    return (fd);
+    return -1;
}


Junren



Reply via email to