Mercurial > dropbear
diff dbutil.c @ 279:1f5ec029dfe8
merge of 4c883eb469d2d251ee8abddbc11ae4005db6da17
and bed6155e95a293c9fce7e889d283b5958f3035dc
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Wed, 08 Mar 2006 12:53:11 +0000 |
parents | 044bc108b9b3 |
children | 79bf1023cf11 973fccb59ea4 e17f0333c21e 28b10e93685c |
line wrap: on
line diff
--- a/dbutil.c Wed Mar 08 12:53:09 2006 +0000 +++ b/dbutil.c Wed Mar 08 12:53:11 2006 +0000 @@ -588,20 +588,17 @@ } #endif -/* loop until the socket is closed (in case of EINTR) or - * we get and error. - * Returns DROPBEAR_SUCCESS or DROPBEAR_FAILURE */ -int m_close(int fd) { +/* make sure that the socket closes */ +void m_close(int fd) { int val; do { val = close(fd); } while (val < 0 && errno == EINTR); - if (val == 0 || errno == EBADF) { - return DROPBEAR_SUCCESS; - } else { - return DROPBEAR_FAILURE; + if (val < 0 && errno != EBADF) { + /* Linux says EIO can happen */ + dropbear_exit("Error closing fd %d, %s", fd, strerror(errno)); } }