From: "David S. Miller" <davem@redhat.com>
To: stelian.pop@fr.alcove.com
Cc: linux-kernel@vger.kernel.org
Subject: Re: socket write(2) after remote shutdown(2) problem ?
Date: Fri, 05 Apr 2002 04:04:51 -0800 (PST) [thread overview]
Message-ID: <20020405.040451.127871174.davem@redhat.com> (raw)
In-Reply-To: <20020405120054.GF16595@come.alcove-fr>
From: Stelian Pop <stelian.pop@fr.alcove.com>
Date: Fri, 5 Apr 2002 14:00:55 +0200
As you can see, read() doesn't return any error, just 0 to
indicate end-of-file (seems correct interpretation of remote
shutdown here), but it doesn't report any error from the
precedent write... Bug ?
Race, wait a bit, the reset will arrive.
This is a error state in your code, writing when the server expects no
data. Always remember that when you are trying to judge if
whatever socket operation results is valid or invalid.
Since we find out about the reset asynchronously, this is what
happens.
> But all of this is irrelevant. When a server closes and says "send me
> no more data", this implies that the server told the client it doesn't
> want any more data.
Perfectly valid but only if the 'applicative close' has reached the
other end. If it's still queued in TCP buffers, the client may not
have received yet that close... I thought that this was the only
reason that shutdown() existed at all: flush the buffers preparing
an imminent close...
Not a close "in TCP" but a close "in your apps protocol".
As in:
write(socket_fd, "Ok client I have all your data, lets close now")
See? If the server closes without telling the client that, all
bets are off.
Look, your app is buggy, PERIOD. Once you start to write to a closed
socket, sorry the phase of the moon decides what happens to you. Most
of the time you'll be lucky and see an error.
next prev parent reply other threads:[~2002-04-05 12:11 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-04-05 9:50 socket write(2) after remote shutdown(2) problem ? Stelian Pop
2002-04-05 10:04 ` David S. Miller
2002-04-05 10:47 ` Stelian Pop
2002-04-05 10:44 ` David S. Miller
2002-04-05 10:55 ` Stelian Pop
2002-04-05 11:02 ` David S. Miller
2002-04-05 12:00 ` Stelian Pop
2002-04-05 12:04 ` David S. Miller [this message]
2002-04-05 12:23 ` Stelian Pop
2002-04-05 12:59 ` Stelian Pop
[not found] <20020405104733.GD16595@come.alcove-fr.suse.lists.linux.kernel>
[not found] ` <20020405.024435.88131177.davem@redhat.com.suse.lists.linux.kernel>
[not found] ` <20020405105509.GE16595@come.alcove-fr.suse.lists.linux.kernel>
[not found] ` <20020405.030251.28451401.davem@redhat.com.suse.lists.linux.kernel>
2002-04-05 11:47 ` Andi Kleen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20020405.040451.127871174.davem@redhat.com \
--to=davem@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=stelian.pop@fr.alcove.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox