Code changes are integrated in Solaris and now I am trying to give back to 
community. If Socket is getting interrupted with signal EINTR, we should keep 
socket in progress state. I have borrowed following code from Socket Write 
_fs_flush():line274 . I have done exactly same at _fs_fill (). Socket Write 
will not close the connection and re attempt to read buffer.

Signed-off-by: Arvind Umrao <[email protected]>
---
 src/fc/fsio.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/fc/fsio.c b/src/fc/fsio.c
index 03a689f..4deab88 100644
--- a/src/fc/fsio.c
+++ b/src/fc/fsio.c
@@ -184,8 +184,11 @@ _fs_fill (FSFpePtr conn)
                    continue;
                }
            }
-           _fs_connection_died (conn);
-           return FSIO_ERROR;
+           if (!ECHECK(EINTR))
+           {
+               _fs_connection_died (conn);
+               return FSIO_ERROR;
+           }
        }
     }
     return FSIO_READY;
-- 
1.7.9.2

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to