summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-03-01 00:19:43 +0200
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-03-02 00:20:48 +0200
commitdc320164d82c222e5be85f81d290df4d9b5581d9 (patch)
treeccf593d215de83848998624eb29165a068283486
parent4f72aa86bfba3abcd64018f6ecd3520fdd9f5f56 (diff)
downloadmicropython-dc320164d82c222e5be85f81d290df4d9b5581d9.tar.gz
micropython-dc320164d82c222e5be85f81d290df4d9b5581d9.zip
unix/modsocket: Add comment regarding close() error checking (which is none).
-rw-r--r--unix/modsocket.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/unix/modsocket.c b/unix/modsocket.c
index b5a6041b16..427a36b3cd 100644
--- a/unix/modsocket.c
+++ b/unix/modsocket.c
@@ -114,6 +114,13 @@ STATIC mp_uint_t socket_write(mp_obj_t o_in, const void *buf, mp_uint_t size, in
STATIC mp_obj_t socket_close(mp_obj_t self_in) {
mp_obj_socket_t *self = MP_OBJ_TO_PTR(self_in);
+ // There's a POSIX drama regarding return value of close in general,
+ // and EINTR error in particular. See e.g.
+ // http://lwn.net/Articles/576478/
+ // http://austingroupbugs.net/view.php?id=529
+ // The rationale MicroPython follows is that close() just releases
+ // file descriptor. If you're interested to catch I/O errors before
+ // closing fd, fsync() it.
close(self->fd);
return mp_const_none;
}