Michael Anderson
2007-08-28 16:40:31 UTC
I am debugging a application problem in which I do not see data
returned from the other side when the following pattern occurs.
00:52:08.41 172.19.82.19.4318 > 172.30.102.11.www: S 0:0(0) win 65535
<mss 1460,,wscale 1,,,timestamp 29360128:0> (DF)
00:52:08.47 172.30.102.11.www > 172.19.82.19.4318: S 0:0(0) ack 1 win
65535 <mss 1380,,wscale 0,,,timestamp 0:0> (DF)
00:52:08.47 172.19.82.19.4318 > 172.30.102.11.www: . ack 1 win 32850
<,,timestamp 29360128:1896742912> (DF)
00:52:57.27 172.19.82.19.4318 > 172.30.102.11.www: . 1:1381(1380) ack
1 win 32850 <,,timestamp 29360128:1903099904> (DF)
00:52:57.52 172.30.102.11.www > 172.19.82.19.4318: . ack 1381 win
65535 <,,timestamp 1572864:-584777728> (DF)
00:52:57.52 172.19.82.19.4318 > 172.30.102.11.www: . 1381:2761(1380)
ack 1 win 32850 <,,timestamp 29360128:1903165440> (DF)
00:52:57.52 172.19.82.19.4318 > 172.30.102.11.www: . 2761:4141(1380)
ack 1 win 32850 <,,timestamp 29360128:1903165440> (DF)
00:52:57.59 172.30.102.11.www > 172.19.82.19.4318: . ack 4141 win
65535 <,,timestamp 1572864:-584777728> (DF)
00:52:57.59 172.19.82.19.4318 > 172.30.102.11.www: P 4141:4500(359)
ack 1 win 32850 <,,timestamp 29360128:1903165440> (DF)
00:52:57.82 172.30.102.11.www > 172.19.82.19.4318: . ack 4500 win
65176 <,,timestamp 1572864:-584581120> (DF)
00:52:57.89 172.30.102.11.www > 172.19.82.19.4318: P 1:828(827) ack
4500 win 65176 <,,timestamp 1572864:-584581120> (DF)
00:52:57.89 172.30.102.11.www > 172.19.82.19.4318: F 828:828(0) ack
4500 win 65176 <,,timestamp 1572864:-584581120> (DF)
00:52:57.89 172.19.82.19.4318 > 172.30.102.11.www: . ack 829 win 32436
<,,timestamp 29360128:1903230976> (DF)
00:56:48.09 172.19.82.19.4318 > 172.30.102.11.www: F 4500:4500(0) ack
829 win 32436 <,,timestamp 29360128:1933312000> (DF)
00:56:48.16 172.30.102.11.www > 172.19.82.19.4318: R 829:829(0) win 0
Basically data is sent by me and then a response from server followed
by immediate FIN by the server the 827 bytes returned from server I do
not seem to be able to read using recv() instead recv() returns 0
indicating shutdown. I am running this on OpenVMS 7.3-2 with Multinet
5.1A with out any patches. I have noticed a kernel patch for 5.1A that
"Correct invalid setting of FIN flag on second to last packet" is this
in any way related to the problem I am having. I may have some bug in
my C++ code but I am have not been able to find it my sockets are set
to non blocking and mostly I use select() determine if any thing is
available to read. select() is signaled and I recv() on the socket and
get the 0 bytes. I am very puzzled at this point as I have even
changes that code to a more efficient design in which I send my data
and FIN and then wait for that data from server but I have still have
problems with getting returned data.
returned from the other side when the following pattern occurs.
00:52:08.41 172.19.82.19.4318 > 172.30.102.11.www: S 0:0(0) win 65535
<mss 1460,,wscale 1,,,timestamp 29360128:0> (DF)
00:52:08.47 172.30.102.11.www > 172.19.82.19.4318: S 0:0(0) ack 1 win
65535 <mss 1380,,wscale 0,,,timestamp 0:0> (DF)
00:52:08.47 172.19.82.19.4318 > 172.30.102.11.www: . ack 1 win 32850
<,,timestamp 29360128:1896742912> (DF)
00:52:57.27 172.19.82.19.4318 > 172.30.102.11.www: . 1:1381(1380) ack
1 win 32850 <,,timestamp 29360128:1903099904> (DF)
00:52:57.52 172.30.102.11.www > 172.19.82.19.4318: . ack 1381 win
65535 <,,timestamp 1572864:-584777728> (DF)
00:52:57.52 172.19.82.19.4318 > 172.30.102.11.www: . 1381:2761(1380)
ack 1 win 32850 <,,timestamp 29360128:1903165440> (DF)
00:52:57.52 172.19.82.19.4318 > 172.30.102.11.www: . 2761:4141(1380)
ack 1 win 32850 <,,timestamp 29360128:1903165440> (DF)
00:52:57.59 172.30.102.11.www > 172.19.82.19.4318: . ack 4141 win
65535 <,,timestamp 1572864:-584777728> (DF)
00:52:57.59 172.19.82.19.4318 > 172.30.102.11.www: P 4141:4500(359)
ack 1 win 32850 <,,timestamp 29360128:1903165440> (DF)
00:52:57.82 172.30.102.11.www > 172.19.82.19.4318: . ack 4500 win
65176 <,,timestamp 1572864:-584581120> (DF)
00:52:57.89 172.30.102.11.www > 172.19.82.19.4318: P 1:828(827) ack
4500 win 65176 <,,timestamp 1572864:-584581120> (DF)
00:52:57.89 172.30.102.11.www > 172.19.82.19.4318: F 828:828(0) ack
4500 win 65176 <,,timestamp 1572864:-584581120> (DF)
00:52:57.89 172.19.82.19.4318 > 172.30.102.11.www: . ack 829 win 32436
<,,timestamp 29360128:1903230976> (DF)
00:56:48.09 172.19.82.19.4318 > 172.30.102.11.www: F 4500:4500(0) ack
829 win 32436 <,,timestamp 29360128:1933312000> (DF)
00:56:48.16 172.30.102.11.www > 172.19.82.19.4318: R 829:829(0) win 0
Basically data is sent by me and then a response from server followed
by immediate FIN by the server the 827 bytes returned from server I do
not seem to be able to read using recv() instead recv() returns 0
indicating shutdown. I am running this on OpenVMS 7.3-2 with Multinet
5.1A with out any patches. I have noticed a kernel patch for 5.1A that
"Correct invalid setting of FIN flag on second to last packet" is this
in any way related to the problem I am having. I may have some bug in
my C++ code but I am have not been able to find it my sockets are set
to non blocking and mostly I use select() determine if any thing is
available to read. select() is signaled and I recv() on the socket and
get the 0 bytes. I am very puzzled at this point as I have even
changes that code to a more efficient design in which I send my data
and FIN and then wait for that data from server but I have still have
problems with getting returned data.