Date: Wed, 9 May 2001 22:08:29 +0700 From: "Rashid N. Achilov" <shelton@sentry.granch.ru> To: Garrett Wollman <wollman@khavrinen.lcs.mit.edu>, "Jonathan Graehl" <jonathan@graehl.org> Cc: <freebsd-net@FreeBSD.ORG> Subject: Re: Do I need to close after shutdown if I don't want to leak descriptors? (making sure TCP retransmits all my data) Message-ID: <01050922082909.02773@sentry.granch.com> In-Reply-To: <200105081923.PAA64300@khavrinen.lcs.mit.edu> References: <000001c0d6d5$87607e80$6dfeac40@straylight.com> <200105081923.PAA64300@khavrinen.lcs.mit.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday 09 May 2001 02:23, Garrett Wollman wrote: > <<On Mon, 7 May 2001 02:10:14 -0700, "Jonathan Graehl" <jonathan@graehl.org> said: > > Problem: close() does not perform an orderly shutdown, does not resend > > unacknowledged data - responds with RST to data/acks sent to me > > I suggest that this is a bug. WinDoze do so. When connection finished, it sends RST instead FIN :-) But it isn't good. shutdown() should be called before close(). > > > Incomplete solution: shutdown(SHUT_RDWR), but then what? Will the OS > > close the fd for me once the other end acknowledges, or better yet, > > closes its end as well, or do I need to close the fd? > > No, you still have to close. Yes, you still should close. shutdown() marks socket as "unusable for read/write/all" but don't free socket handle. > > > (selecting for readable is not a solution; if they have > > sent me data I am uninterested in reading, I will select readable) > > selecting for an exception *should* do what you want, but doesn't > (this is also a bug). > > > Obviously, if shutdown fails (it shouldn't, I die on failure), you would > > need to close to avoid descriptor leakage. But do I need to babysit the > > descriptor after I have no more interest in it? > > Yes. shutdown != close. I have set flag 'close-on-exec' when open socket, because when I accept new connetcion, daemon forked. And have called shutdown() BEFORE close(). -- With Best Regards. Rashid N. Achilov (RNA1-RIPE), Web: http://granch.ru/~shelton Granch Ltd. system administrator, e-mail: achilov@granch.ru PGP: 83 CD E2 A7 37 4A D5 81 D6 D6 52 BF C9 2F 85 AF 97 BE CB 0A To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?01050922082909.02773>