Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 30 May 2010 11:05:45 +0300
From:      Mikolaj Golub <to.my.trociny@gmail.com>
To:        freebsd-net@FreeBSD.org
Cc:        "Robert N. M. Watson" <rwatson@FreeBSD.org>, "Lavrentiev, Anton \(NIH/NLM/NCBI\) \[C\]" <lavr@ncbi.nlm.nih.gov>, bug-followup@FreeBSD.org
Subject:   Re: kern/146845: [libc] close(2) returns error 54 (connection reset by peer) wrongly
Message-ID:  <86eigt4xwm.fsf@kopusha.home.net>
In-Reply-To: <86mxvkqsvq.fsf@zhuzha.ua1> (Mikolaj Golub's message of "Fri, 28 May 2010 12:26:33 %2B0300")
References:  <201005280440.o4S4e3sM052201@freefall.freebsd.org> <86mxvkqsvq.fsf@zhuzha.ua1>

next in thread | previous in thread | raw e-mail | index | archive | help
--=-=-=

On Fri, 28 May 2010 04:40:03 GMT Lavrentiev, Anton (NIH/NLM/NCBI) [C] wrote:

 >  IMHO, it is not, unfortunately, a solution:  it seems to clear ECONNRESET
 >  blindly and w/o distinguishing the situation when the remote end closes the
 >  connection prematurely (i.e. before acknowledging all data written from the
 >  local end) -- and that qualifies for the true "connection reset by peer"
 >  from close()...

I did some experiments the results I would like to share here. The idea is
following: the client sends data in one write() more then a win, while the
server closes the connection without reading (sending RST on close). I also
played with LINGER option. I have managed to get ECONNRESET only on write(),
if the server sends RST before the client calls write(). In all other cases
write()/close() returned without error. See the attachment for details. 

So I think that with the workaround (ignore ECONNRESET returned by
sodisconnect() in soclose()) we would not make the situation worse (while it
fixed the issue with applications getting unexpectedly ECONNRESET after
shutdown()/close() sequence).

-- 
Mikolaj Golub


--=-=-=
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=test_tcp_close.c
Content-Transfer-Encoding: base64

I2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL3NvY2tldC5oPgojaW5jbHVkZSA8
bmV0aW5ldC9pbi5oPgojaW5jbHVkZSA8c2lnbmFsLmg+CiNpbmNsdWRlIDxzdGRpby5oPgojaW5j
bHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgoj
aW5jbHVkZSA8ZXJyLmg+CgojZGVmaW5lIEJVRlNJWkUJNDA5NjAwCiNkZWZpbmUgUE9SVAkyMzQ4
MQojZGVmaW5lIFNMRUVQMQkwCiNkZWZpbmUgU0xFRVAyCTEKI3VuZGVmIExJTkdFUl9JTl9DTElF
TlQKI3VuZGVmIExJTkdFUl9JTl9TRVJWRVIKCmludAptYWluKGludCBhcmdjLCBjaGFyICoqYXJn
dikKewoJc3RydWN0IHNvY2thZGRyX2luIHNpbjsKCWludCBsaXN0ZW5mZCwgY29ubmZkLCBwaWQ7
CgljaGFyIGJ1ZltCVUZTSVpFXTsKI2lmZGVmIExJTkdFUl9JTl9DTElFTlQKCXN0cnVjdCBsaW5n
ZXIgbGluZzsKI2Vsc2UKI2lmZGVmIExJTkdFUl9JTl9TRVJWRVIKCXN0cnVjdCBsaW5nZXIgbGlu
ZzsKI2VuZGlmCiNlbmRpZiAvKiBMSU5HRVJfSU5fQ0xJRU5UIHx8IExJTkdFUl9JTl9TRVJWRVIg
Ki8KCQoJaWYgKChsaXN0ZW5mZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgMCkpIDwg
MCkKCQllcnIoMSwgInNvY2tldCBlcnJvciIpOwoJbWVtc2V0KCZzaW4sIDAsIHNpemVvZihzaW4p
KTsKCXNpbi5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKCXNpbi5zaW5fcG9ydCA9IGh0b25zKFBPUlQp
OwoJaWYgKGJpbmQobGlzdGVuZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNpbiwKCQkgc2l6ZW9m
KHNpbikpIDwgMCkKCQllcnIoMSwgImJpbmQgZXJyb3IiKTsKCWlmIChsaXN0ZW4obGlzdGVuZmQs
IDEwMjQpIDwgMCkKCQllcnIoMSwgImxpc3RlbiBlcnJvciIpOwoJcGlkID0gZm9yaygpOwoJaWYg
KHBpZCA9PSAtMSkKCQllcnIoMSwgImZvcmsgZXJyb3IiKTsKCWlmIChwaWQgIT0gMCkgewoJCWNs
b3NlKGxpc3RlbmZkKTsKCQlzbGVlcCgxKTsKCQlpZiAoKGNvbm5mZCA9IHNvY2tldChBRl9JTkVU
LCBTT0NLX1NUUkVBTSwgMCkpIDwgMCkgewoJCQkodm9pZClraWxsKHBpZCwgU0lHVEVSTSk7CgkJ
CWVycigxLCAicGFyZW50OiBzb2NrZXQgZXJyb3IiKTsKCQl9CgkJaWYgKGNvbm5lY3QoY29ubmZk
LCAoc3RydWN0IHNvY2thZGRyICopJnNpbiwKCQkJICAgIHNpemVvZihzaW4pKSA8IDApIHsKCQkJ
KHZvaWQpa2lsbChwaWQsIFNJR1RFUk0pOwoJCQllcnIoMSwgInBhcmVudDogY29ubmVjdCBlcnJv
ciIpOwoJCX0KI2lmZGVmIExJTkdFUl9JTl9DTElFTlQKCQlsaW5nLmxfb25vZmYgPSAxOwoJCWxp
bmcubF9saW5nZXIgPSAxMDsKCQlpZiAoc2V0c29ja29wdChjb25uZmQsIFNPTF9TT0NLRVQsIFNP
X0xJTkdFUiwKCQkJICAgICAgICZsaW5nLCBzaXplb2YobGluZykpIDwgMCkKCQkJZXJyKDEsICJw
YXJlbnQ6IHNldHNvY2tvcHQgZXJyb3IiKTsKI2VuZGlmIC8qIExJTkdFUl9JTl9DTElFTlQgKi8K
CQlzbGVlcChTTEVFUDEpOwoJCWlmICh3cml0ZShjb25uZmQsIGJ1ZiwgQlVGU0laRSkgPCAwKSB7
CgkJCSh2b2lkKWtpbGwocGlkLCBTSUdURVJNKTsKCQkJZXJyKDEsICJwYXJlbnQ6IHdyaXRlIGVy
cm9yIik7CgkJfQoJCWlmIChjbG9zZShjb25uZmQpIDwgMCkgewoJCQkodm9pZClraWxsKHBpZCwg
U0lHVEVSTSk7CgkJCWVycigxLCAicGFyZW50OiBjbG9zZSBlcnJvciIpOwoJCX0KCX0gZWxzZSB7
CgkJaWYgKChjb25uZmQgPSBhY2NlcHQobGlzdGVuZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKilOVUxM
LAoJCQkJICAgICBOVUxMKSkgPCAwKQoJCQllcnIoMSwgImNoaWxkOiBhY2NlcHQgZXJyb3IiKTsK
I2lmZGVmIExJTkdFUl9JTl9TRVJWRVIJCQoJCS8qCgkJICogU2VuZCBSU1Qgb24gY2xvc2UuCgkJ
ICovCgkJbGluZy5sX29ub2ZmID0gMTsKCQlsaW5nLmxfbGluZ2VyID0gMDsJCQoJCWlmIChzZXRz
b2Nrb3B0KGNvbm5mZCwgU09MX1NPQ0tFVCwgU09fTElOR0VSLAoJCQkgICAgICAgJmxpbmcsIHNp
emVvZihsaW5nKSkgPCAwKQoJCQllcnIoMSwgImNoaWxkOiBzZXRzb2Nrb3B0IGVycm9yIik7CiNl
bmRpZiAvKiBMSU5HRVJfSU5fU0VSVkVSICovCgkJc2xlZXAoU0xFRVAyKTsKCQlpZiAoY2xvc2Uo
Y29ubmZkKSA8IDApCgkJCWVycigxLCAiY2hpbGQ6IGNsb3NlIGVycm9yIik7Cgl9CglleGl0KDAp
Owp9CgojaWYgMAoKU0xFRVAxID0gMDsgU0xFRVAyID0gMDogTElOR0VSX0lOX1NFUlZFUjogcGFy
ZW50OiB3cml0ZSBlcnJvcjogQ29ubmVjdGlvbiByZXNldCBieSBwZWVyCjAwOjAwOjAwLjAwMDAw
MCBJUCAxMjcuMC4wLjEuMjM4NTEgPiAxMjcuMC4wLjEuMjM0ODE6IEZsYWdzIFtTXSwgc2VxIDMy
MzM3NjU5OTMsIHdpbiA2NTUzNSwgb3B0aW9ucyBbbXNzIDE2MzQ0LG5vcCx3c2NhbGUgMyxzYWNr
T0ssVFMgdmFsIDI4NjA1OCBlY3IgMF0sIGxlbmd0aCAwCjAwOjAwOjAwLjAwMDA0NCBJUCAxMjcu
MC4wLjEuMjM0ODEgPiAxMjcuMC4wLjEuMjM4NTE6IEZsYWdzIFtTLl0sIHNlcSA5MTcwNDkwODcs
IGFjayAzMjMzNzY1OTk0LCB3aW4gNjU1MzUsIG9wdGlvbnMgW21zcyAxNjM0NCxub3Asd3NjYWxl
IDMsc2Fja09LLFRTIHZhbCAzNDkwMDg1MDA0IGVjciAyODYwNThdLCBsZW5ndGggMAowMDowMDow
MC4wMDAwMzQgSVAgMTI3LjAuMC4xLjIzODUxID4gMTI3LjAuMC4xLjIzNDgxOiBGbGFncyBbLl0s
IGFjayAxLCB3aW4gODk2MCwgb3B0aW9ucyBbbm9wLG5vcCxUUyB2YWwgMjg2MDU4IGVjciAzNDkw
MDg1MDA0XSwgbGVuZ3RoIDAKMDA6MDA6MDAuMDAwMTkxIElQIDEyNy4wLjAuMS4yMzQ4MSA+IDEy
Ny4wLjAuMS4yMzg1MTogRmxhZ3MgW1IuXSwgc2VxIDEsIGFjayAxLCB3aW4gODk2MCwgb3B0aW9u
cyBbbm9wLG5vcCxUUyB2YWwgMzQ5MDA4NTAwNCBlY3IgMjg2MDU4XSwgbGVuZ3RoIDAKClNMRUVQ
MSA9IDE7IFNMRUVQMiA9IDA6IExJTkdFUl9JTl9TRVJWRVI6IG5vIGVycm9yCjAwOjAwOjAwLjAw
MDAwMCBJUCAxMjcuMC4wLjEuMjc1NTggPiAxMjcuMC4wLjEuMjM0ODE6IEZsYWdzIFtTXSwgc2Vx
IDQwNDIwNjA4MjEsIHdpbiA2NTUzNSwgb3B0aW9ucyBbbXNzIDE2MzQ0LG5vcCx3c2NhbGUgMyxz
YWNrT0ssVFMgdmFsIDI5MTQ2NSBlY3IgMF0sIGxlbmd0aCAwCjAwOjAwOjAwLjAwMDA0MiBJUCAx
MjcuMC4wLjEuMjM0ODEgPiAxMjcuMC4wLjEuMjc1NTg6IEZsYWdzIFtTLl0sIHNlcSAyNzg5MzQy
NTc3LCBhY2sgNDA0MjA2MDgyMiwgd2luIDY1NTM1LCBvcHRpb25zIFttc3MgMTYzNDQsbm9wLHdz
Y2FsZSAzLHNhY2tPSyxUUyB2YWwgMTk1OTQxNzYxMSBlY3IgMjkxNDY1XSwgbGVuZ3RoIDAKMDA6
MDA6MDAuMDAwMDM0IElQIDEyNy4wLjAuMS4yNzU1OCA+IDEyNy4wLjAuMS4yMzQ4MTogRmxhZ3Mg
Wy5dLCBhY2sgMSwgd2luIDg5NjAsIG9wdGlvbnMgW25vcCxub3AsVFMgdmFsIDI5MTQ2NSBlY3Ig
MTk1OTQxNzYxMV0sIGxlbmd0aCAwCjAwOjAwOjAwLjAwMDE3MyBJUCAxMjcuMC4wLjEuMjM0ODEg
PiAxMjcuMC4wLjEuMjc1NTg6IEZsYWdzIFtSLl0sIHNlcSAxLCBhY2sgMSwgd2luIDg5NjAsIG9w
dGlvbnMgW25vcCxub3AsVFMgdmFsIDE5NTk0MTc2MTEgZWNyIDI5MTQ2NV0sIGxlbmd0aCAwCgpT
TEVFUDEgPSAwOyBTTEVFUDIgPSAxOiBMSU5HRVJfSU5fU0VSVkVSOiBubyBlcnJvcgowMDowMDow
MC4wMDAwMDAgSVAgMTI3LjAuMC4xLjY0MTg0ID4gMTI3LjAuMC4xLjIzNDgxOiBGbGFncyBbU10s
IHNlcSA3MzU3NjE0MTEsIHdpbiA2NTUzNSwgb3B0aW9ucyBbbXNzIDE2MzQ0LG5vcCx3c2NhbGUg
MyxzYWNrT0ssVFMgdmFsIDI5OTc5MiBlY3IgMF0sIGxlbmd0aCAwCjAwOjAwOjAwLjAwMDA0OSBJ
UCAxMjcuMC4wLjEuMjM0ODEgPiAxMjcuMC4wLjEuNjQxODQ6IEZsYWdzIFtTLl0sIHNlcSAxNzYx
NzY4MDU1LCBhY2sgNzM1NzYxNDEyLCB3aW4gNjU1MzUsIG9wdGlvbnMgW21zcyAxNjM0NCxub3As
d3NjYWxlIDMsc2Fja09LLFRTIHZhbCAxMTgyMDg5NjY3IGVjciAyOTk3OTJdLCBsZW5ndGggMAow
MDowMDowMC4wMDAwMzUgSVAgMTI3LjAuMC4xLjY0MTg0ID4gMTI3LjAuMC4xLjIzNDgxOiBGbGFn
cyBbLl0sIGFjayAxLCB3aW4gODk2MCwgb3B0aW9ucyBbbm9wLG5vcCxUUyB2YWwgMjk5NzkyIGVj
ciAxMTgyMDg5NjY3XSwgbGVuZ3RoIDAKMDA6MDA6MDAuMDAwMjIyIElQIDEyNy4wLjAuMS42NDE4
NCA+IDEyNy4wLjAuMS4yMzQ4MTogRmxhZ3MgWy5dLCBhY2sgMSwgd2luIDg5NjAsIG9wdGlvbnMg
W25vcCxub3AsVFMgdmFsIDI5OTc5MiBlY3IgMTE4MjA4OTY2N10sIGxlbmd0aCAxNDMzNgowMDow
MDowMC4wOTkzOTYgSVAgMTI3LjAuMC4xLjIzNDgxID4gMTI3LjAuMC4xLjY0MTg0OiBGbGFncyBb
Ll0sIGFjayAxNDMzNywgd2luIDcxNjgsIG9wdGlvbnMgW25vcCxub3AsVFMgdmFsIDExODIwODk2
NzcgZWNyIDI5OTc5Ml0sIGxlbmd0aCAwCjAwOjAwOjAwLjAwMDA0NyBJUCAxMjcuMC4wLjEuNjQx
ODQgPiAxMjcuMC4wLjEuMjM0ODE6IEZsYWdzIFsuXSwgYWNrIDEsIHdpbiA4OTYwLCBvcHRpb25z
IFtub3Asbm9wLFRTIHZhbCAyOTk4MDIgZWNyIDExODIwODk2NzddLCBsZW5ndGggMTQzMzYKMDA6
MDA6MDAuMDAwMDE0IElQIDEyNy4wLjAuMS42NDE4NCA+IDEyNy4wLjAuMS4yMzQ4MTogRmxhZ3Mg
W1AuXSwgYWNrIDEsIHdpbiA4OTYwLCBvcHRpb25zIFtub3Asbm9wLFRTIHZhbCAyOTk4MDIgZWNy
IDExODIwODk2NzddLCBsZW5ndGggMTQzMzYKMDA6MDA6MDAuMDAwMDQ3IElQIDEyNy4wLjAuMS4y
MzQ4MSA+IDEyNy4wLjAuMS42NDE4NDogRmxhZ3MgWy5dLCBhY2sgNDMwMDksIHdpbiAzNTg0LCBv
cHRpb25zIFtub3Asbm9wLFRTIHZhbCAxMTgyMDg5Njc3IGVjciAyOTk4MDJdLCBsZW5ndGggMAow
MDowMDowMC4wMDAxMTUgSVAgMTI3LjAuMC4xLjY0MTg0ID4gMTI3LjAuMC4xLjIzNDgxOiBGbGFn
cyBbUC5dLCBhY2sgMSwgd2luIDg5NjAsIG9wdGlvbnMgW25vcCxub3AsVFMgdmFsIDI5OTgwMiBl
Y3IgMTE4MjA4OTY3N10sIGxlbmd0aCAxNDMzNgowMDowMDowMC4wMDAxNTUgSVAgMTI3LjAuMC4x
LjY0MTg0ID4gMTI3LjAuMC4xLjIzNDgxOiBGbGFncyBbLl0sIGFjayAxLCB3aW4gODk2MCwgb3B0
aW9ucyBbbm9wLG5vcCxUUyB2YWwgMjk5ODAyIGVjciAxMTgyMDg5Njc3XSwgbGVuZ3RoIDE0MzM2
CjAwOjAwOjAwLjAwMDAxOSBJUCAxMjcuMC4wLjEuMjM0ODEgPiAxMjcuMC4wLjEuNjQxODQ6IEZs
YWdzIFsuXSwgYWNrIDcxNjgxLCB3aW4gMCwgb3B0aW9ucyBbbm9wLG5vcCxUUyB2YWwgMTE4MjA4
OTY3NyBlY3IgMjk5ODAyXSwgbGVuZ3RoIDAKMDA6MDA6MDAuOTA5NjQ4IElQIDEyNy4wLjAuMS4y
MzQ4MSA+IDEyNy4wLjAuMS42NDE4NDogRmxhZ3MgW1IuXSwgc2VxIDEsIGFjayA3MTY4MSwgd2lu
IDAsIG9wdGlvbnMgW25vcCxub3AsVFMgdmFsIDExODIwODk3NjggZWNyIDI5OTgwMl0sIGxlbmd0
aCAwCgpTTEVFUDEgPSAwOyBTTEVFUDIgPSAxOiBMSU5HRVJfSU5fU0VSVkVSOiBMSU5HRVJfSU5f
Q0xJRU5UOiBubyBlcnJvcgowMDowMDowMC4wMDAwMDAgSVAgMTI3LjAuMC4xLjYyNTM1ID4gMTI3
LjAuMC4xLjIzNDgxOiBGbGFncyBbU10sIHNlcSAyNDE2MzExNjU4LCB3aW4gNjU1MzUsIG9wdGlv
bnMgW21zcyAxNjM0NCxub3Asd3NjYWxlIDMsc2Fja09LLFRTIHZhbCAzMDU1NjcgZWNyIDBdLCBs
ZW5ndGggMAowMDowMDowMC4wMDAwNjMgSVAgMTI3LjAuMC4xLjIzNDgxID4gMTI3LjAuMC4xLjYy
NTM1OiBGbGFncyBbUy5dLCBzZXEgNzIzMjQxMDczLCBhY2sgMjQxNjMxMTY1OSwgd2luIDY1NTM1
LCBvcHRpb25zIFttc3MgMTYzNDQsbm9wLHdzY2FsZSAzLHNhY2tPSyxUUyB2YWwgOTUzNDY0Mjkg
ZWNyIDMwNTU2N10sIGxlbmd0aCAwCjAwOjAwOjAwLjAwMDAzMyBJUCAxMjcuMC4wLjEuNjI1MzUg
PiAxMjcuMC4wLjEuMjM0ODE6IEZsYWdzIFsuXSwgYWNrIDEsIHdpbiA4OTYwLCBvcHRpb25zIFtu
b3Asbm9wLFRTIHZhbCAzMDU1NjcgZWNyIDk1MzQ2NDI5XSwgbGVuZ3RoIDAKMDA6MDA6MDAuMDAw
MjY2IElQIDEyNy4wLjAuMS42MjUzNSA+IDEyNy4wLjAuMS4yMzQ4MTogRmxhZ3MgWy5dLCBhY2sg
MSwgd2luIDg5NjAsIG9wdGlvbnMgW25vcCxub3AsVFMgdmFsIDMwNTU2NyBlY3IgOTUzNDY0Mjld
LCBsZW5ndGggMTQzMzYKMDA6MDA6MDAuMDAwMDE5IElQIDEyNy4wLjAuMS42MjUzNSA+IDEyNy4w
LjAuMS4yMzQ4MTogRmxhZ3MgWy5dLCBhY2sgMSwgd2luIDg5NjAsIG9wdGlvbnMgW25vcCxub3As
VFMgdmFsIDMwNTU2NyBlY3IgOTUzNDY0MjldLCBsZW5ndGggMTQzMzYKMDA6MDA6MDAuMDAwMDE1
IElQIDEyNy4wLjAuMS42MjUzNSA+IDEyNy4wLjAuMS4yMzQ4MTogRmxhZ3MgW1AuXSwgYWNrIDEs
IHdpbiA4OTYwLCBvcHRpb25zIFtub3Asbm9wLFRTIHZhbCAzMDU1NjcgZWNyIDk1MzQ2NDI5XSwg
bGVuZ3RoIDE0MzM2CjAwOjAwOjAwLjAwMDAwNCBJUCAxMjcuMC4wLjEuMjM0ODEgPiAxMjcuMC4w
LjEuNjI1MzU6IEZsYWdzIFsuXSwgYWNrIDI4NjczLCB3aW4gNTM3Niwgb3B0aW9ucyBbbm9wLG5v
cCxUUyB2YWwgOTUzNDY0MjkgZWNyIDMwNTU2N10sIGxlbmd0aCAwCjAwOjAwOjAwLjAwMDE3OSBJ
UCAxMjcuMC4wLjEuNjI1MzUgPiAxMjcuMC4wLjEuMjM0ODE6IEZsYWdzIFsuXSwgYWNrIDEsIHdp
biA4OTYwLCBvcHRpb25zIFtub3Asbm9wLFRTIHZhbCAzMDU1NjcgZWNyIDk1MzQ2NDI5XSwgbGVu
Z3RoIDE0MzM2CjAwOjAwOjAwLjAwMDAxNSBJUCAxMjcuMC4wLjEuNjI1MzUgPiAxMjcuMC4wLjEu
MjM0ODE6IEZsYWdzIFsuXSwgYWNrIDEsIHdpbiA4OTYwLCBvcHRpb25zIFtub3Asbm9wLFRTIHZh
bCAzMDU1NjcgZWNyIDk1MzQ2NDI5XSwgbGVuZ3RoIDE0MzM2CjAwOjAwOjAwLjAwMDAwOCBJUCAx
MjcuMC4wLjEuMjM0ODEgPiAxMjcuMC4wLjEuNjI1MzU6IEZsYWdzIFsuXSwgYWNrIDU3MzQ1LCB3
aW4gMTc5Miwgb3B0aW9ucyBbbm9wLG5vcCxUUyB2YWwgOTUzNDY0MjkgZWNyIDMwNTU2N10sIGxl
bmd0aCAwCjAwOjAwOjAwLjA5OTMxNyBJUCAxMjcuMC4wLjEuMjM0ODEgPiAxMjcuMC4wLjEuNjI1
MzU6IEZsYWdzIFsuXSwgYWNrIDcxNjgxLCB3aW4gMCwgb3B0aW9ucyBbbm9wLG5vcCxUUyB2YWwg
OTUzNDY0MzkgZWNyIDMwNTU2N10sIGxlbmd0aCAwCjAwOjAwOjAwLjkxMDAzOSBJUCAxMjcuMC4w
LjEuMjM0ODEgPiAxMjcuMC4wLjEuNjI1MzU6IEZsYWdzIFtSLl0sIHNlcSAxLCBhY2sgNzE2ODEs
IHdpbiAwLCBvcHRpb25zIFtub3Asbm9wLFRTIHZhbCA5NTM0NjUzMCBlY3IgMzA1NTY3XSwgbGVu
Z3RoIDAKClNMRUVQMSA9IDA7IFNMRUVQMiA9IDE6IExJTkdFUl9JTl9DTElFTlQ6IG5vIGVycm9y
CjAwOjAwOjAwLjAwMDAwMCBJUCAxMjcuMC4wLjEuNTIyMzIgPiAxMjcuMC4wLjEuMjM0ODE6IEZs
YWdzIFtTXSwgc2VxIDgzNzc0ODQyOSwgd2luIDY1NTM1LCBvcHRpb25zIFttc3MgMTYzNDQsbm9w
LHdzY2FsZSAzLHNhY2tPSyxUUyB2YWwgMzA5NjM5IGVjciAwXSwgbGVuZ3RoIDAKMDA6MDA6MDAu
MDAwMDQ0IElQIDEyNy4wLjAuMS4yMzQ4MSA+IDEyNy4wLjAuMS41MjIzMjogRmxhZ3MgW1MuXSwg
c2VxIDEyNjE2MTQ3MDcsIGFjayA4Mzc3NDg0MzAsIHdpbiA2NTUzNSwgb3B0aW9ucyBbbXNzIDE2
MzQ0LG5vcCx3c2NhbGUgMyxzYWNrT0ssVFMgdmFsIDMxMjYxMDY5NTcgZWNyIDMwOTYzOV0sIGxl
bmd0aCAwCjAwOjAwOjAwLjAwMDAzNCBJUCAxMjcuMC4wLjEuNTIyMzIgPiAxMjcuMC4wLjEuMjM0
ODE6IEZsYWdzIFsuXSwgYWNrIDEsIHdpbiA4OTYwLCBvcHRpb25zIFtub3Asbm9wLFRTIHZhbCAz
MDk2MzkgZWNyIDMxMjYxMDY5NTddLCBsZW5ndGggMAowMDowMDowMC4wMDAyNDkgSVAgMTI3LjAu
MC4xLjUyMjMyID4gMTI3LjAuMC4xLjIzNDgxOiBGbGFncyBbLl0sIGFjayAxLCB3aW4gODk2MCwg
b3B0aW9ucyBbbm9wLG5vcCxUUyB2YWwgMzA5NjM5IGVjciAzMTI2MTA2OTU3XSwgbGVuZ3RoIDE0
MzM2CjAwOjAwOjAwLjAwMDAxOCBJUCAxMjcuMC4wLjEuNTIyMzIgPiAxMjcuMC4wLjEuMjM0ODE6
IEZsYWdzIFsuXSwgYWNrIDEsIHdpbiA4OTYwLCBvcHRpb25zIFtub3Asbm9wLFRTIHZhbCAzMDk2
MzkgZWNyIDMxMjYxMDY5NTddLCBsZW5ndGggMTQzMzYKMDA6MDA6MDAuMDAwMDE5IElQIDEyNy4w
LjAuMS4yMzQ4MSA+IDEyNy4wLjAuMS41MjIzMjogRmxhZ3MgWy5dLCBhY2sgMjg2NzMsIHdpbiA1
Mzc2LCBvcHRpb25zIFtub3Asbm9wLFRTIHZhbCAzMTI2MTA2OTU3IGVjciAzMDk2MzldLCBsZW5n
dGggMAowMDowMDowMC4wMDAwMjggSVAgMTI3LjAuMC4xLjUyMjMyID4gMTI3LjAuMC4xLjIzNDgx
OiBGbGFncyBbUC5dLCBhY2sgMSwgd2luIDg5NjAsIG9wdGlvbnMgW25vcCxub3AsVFMgdmFsIDMw
OTYzOSBlY3IgMzEyNjEwNjk1N10sIGxlbmd0aCAxNDMzNgowMDowMDowMC4wMDAxNDMgSVAgMTI3
LjAuMC4xLjUyMjMyID4gMTI3LjAuMC4xLjIzNDgxOiBGbGFncyBbLl0sIGFjayAxLCB3aW4gODk2
MCwgb3B0aW9ucyBbbm9wLG5vcCxUUyB2YWwgMzA5NjM5IGVjciAzMTI2MTA2OTU3XSwgbGVuZ3Ro
IDE0MzM2CjAwOjAwOjAwLjAwMDAxNSBJUCAxMjcuMC4wLjEuNTIyMzIgPiAxMjcuMC4wLjEuMjM0
ODE6IEZsYWdzIFsuXSwgYWNrIDEsIHdpbiA4OTYwLCBvcHRpb25zIFtub3Asbm9wLFRTIHZhbCAz
MDk2MzkgZWNyIDMxMjYxMDY5NTddLCBsZW5ndGggMTQzMzYKMDA6MDA6MDAuMDAwMDA3IElQIDEy
Ny4wLjAuMS4yMzQ4MSA+IDEyNy4wLjAuMS41MjIzMjogRmxhZ3MgWy5dLCBhY2sgNTczNDUsIHdp
biAxNzkyLCBvcHRpb25zIFtub3Asbm9wLFRTIHZhbCAzMTI2MTA2OTU3IGVjciAzMDk2MzldLCBs
ZW5ndGggMAowMDowMDowMC4wOTkzNzEgSVAgMTI3LjAuMC4xLjIzNDgxID4gMTI3LjAuMC4xLjUy
MjMyOiBGbGFncyBbLl0sIGFjayA3MTY4MSwgd2luIDAsIG9wdGlvbnMgW25vcCxub3AsVFMgdmFs
IDMxMjYxMDY5NjcgZWNyIDMwOTYzOV0sIGxlbmd0aCAwCjAwOjAwOjAwLjkxMDExNCBJUCAxMjcu
MC4wLjEuMjM0ODEgPiAxMjcuMC4wLjEuNTIyMzI6IEZsYWdzIFtGLl0sIHNlcSAxLCBhY2sgNzE2
ODEsIHdpbiA4OTYwLCBvcHRpb25zIFtub3Asbm9wLFRTIHZhbCAzMTI2MTA3MDU4IGVjciAzMDk2
MzldLCBsZW5ndGggMAowMDowMDowMC4wMDAwNDQgSVAgMTI3LjAuMC4xLjUyMjMyID4gMTI3LjAu
MC4xLjIzNDgxOiBGbGFncyBbLl0sIGFjayAyLCB3aW4gODk2MCwgb3B0aW9ucyBbbm9wLG5vcCxU
UyB2YWwgMzA5NzQwIGVjciAzMTI2MTA3MDU4XSwgbGVuZ3RoIDE0MzM2CjAwOjAwOjAwLjAwMDAx
NCBJUCAxMjcuMC4wLjEuNTIyMzIgPiAxMjcuMC4wLjEuMjM0ODE6IEZsYWdzIFsuXSwgYWNrIDIs
IHdpbiA4OTYwLCBvcHRpb25zIFtub3Asbm9wLFRTIHZhbCAzMDk3NDAgZWNyIDMxMjYxMDcwNThd
LCBsZW5ndGggMTQzMzYKMDA6MDA6MDAuMDAwMDM1IElQIDEyNy4wLjAuMS4yMzQ4MSA+IDEyNy4w
LjAuMS41MjIzMjogRmxhZ3MgW1JdLCBzZXEgMTI2MTYxNDcwOSwgd2luIDAsIGxlbmd0aCAwCjAw
OjAwOjAwLjAwMDAxOSBJUCAxMjcuMC4wLjEuMjM0ODEgPiAxMjcuMC4wLjEuNTIyMzI6IEZsYWdz
IFtSXSwgc2VxIDEyNjE2MTQ3MDksIHdpbiAwLCBsZW5ndGggMAoKU0xFRVAxID0gMDsgU0xFRVAy
ID0gMTogbm8gZXJyb3IKMDA6MDA6MDAuMDAwMDAwIElQIDEyNy4wLjAuMS4yNTg2NSA+IDEyNy4w
LjAuMS4yMzQ4MTogRmxhZ3MgW1NdLCBzZXEgMzg2MzE4NzEwLCB3aW4gNjU1MzUsIG9wdGlvbnMg
W21zcyAxNjM0NCxub3Asd3NjYWxlIDMsc2Fja09LLFRTIHZhbCAzMTM4MjggZWNyIDBdLCBsZW5n
dGggMAowMDowMDowMC4wMDAwNDggSVAgMTI3LjAuMC4xLjIzNDgxID4gMTI3LjAuMC4xLjI1ODY1
OiBGbGFncyBbUy5dLCBzZXEgMzAxMjQ5NTk5OSwgYWNrIDM4NjMxODcxMSwgd2luIDY1NTM1LCBv
cHRpb25zIFttc3MgMTYzNDQsbm9wLHdzY2FsZSAzLHNhY2tPSyxUUyB2YWwgNjI5MTQ1NDkwIGVj
ciAzMTM4MjhdLCBsZW5ndGggMAowMDowMDowMC4wMDAwMzQgSVAgMTI3LjAuMC4xLjI1ODY1ID4g
MTI3LjAuMC4xLjIzNDgxOiBGbGFncyBbLl0sIGFjayAxLCB3aW4gODk2MCwgb3B0aW9ucyBbbm9w
LG5vcCxUUyB2YWwgMzEzODI4IGVjciA2MjkxNDU0OTBdLCBsZW5ndGggMAowMDowMDowMC4wMDAy
MTkgSVAgMTI3LjAuMC4xLjI1ODY1ID4gMTI3LjAuMC4xLjIzNDgxOiBGbGFncyBbLl0sIGFjayAx
LCB3aW4gODk2MCwgb3B0aW9ucyBbbm9wLG5vcCxUUyB2YWwgMzEzODI4IGVjciA2MjkxNDU0OTBd
LCBsZW5ndGggMTQzMzYKMDA6MDA6MDAuMDAwMDE3IElQIDEyNy4wLjAuMS4yNTg2NSA+IDEyNy4w
LjAuMS4yMzQ4MTogRmxhZ3MgWy5dLCBhY2sgMSwgd2luIDg5NjAsIG9wdGlvbnMgW25vcCxub3As
VFMgdmFsIDMxMzgyOCBlY3IgNjI5MTQ1NDkwXSwgbGVuZ3RoIDE0MzM2CjAwOjAwOjAwLjAwMDAx
NSBJUCAxMjcuMC4wLjEuMjU4NjUgPiAxMjcuMC4wLjEuMjM0ODE6IEZsYWdzIFtQLl0sIGFjayAx
LCB3aW4gODk2MCwgb3B0aW9ucyBbbm9wLG5vcCxUUyB2YWwgMzEzODI4IGVjciA2MjkxNDU0OTBd
LCBsZW5ndGggMTQzMzYKMDA6MDA6MDAuMDAwMDA1IElQIDEyNy4wLjAuMS4yMzQ4MSA+IDEyNy4w
LjAuMS4yNTg2NTogRmxhZ3MgWy5dLCBhY2sgMjg2NzMsIHdpbiA1Mzc2LCBvcHRpb25zIFtub3As
bm9wLFRTIHZhbCA2MjkxNDU0OTAgZWNyIDMxMzgyOF0sIGxlbmd0aCAwCjAwOjAwOjAwLjAwMDE3
NSBJUCAxMjcuMC4wLjEuMjU4NjUgPiAxMjcuMC4wLjEuMjM0ODE6IEZsYWdzIFsuXSwgYWNrIDEs
IHdpbiA4OTYwLCBvcHRpb25zIFtub3Asbm9wLFRTIHZhbCAzMTM4MjggZWNyIDYyOTE0NTQ5MF0s
IGxlbmd0aCAxNDMzNgowMDowMDowMC4wMDAwMTYgSVAgMTI3LjAuMC4xLjI1ODY1ID4gMTI3LjAu
MC4xLjIzNDgxOiBGbGFncyBbLl0sIGFjayAxLCB3aW4gODk2MCwgb3B0aW9ucyBbbm9wLG5vcCxU
UyB2YWwgMzEzODI4IGVjciA2MjkxNDU0OTBdLCBsZW5ndGggMTQzMzYKMDA6MDA6MDAuMDAwMDA3
IElQIDEyNy4wLjAuMS4yMzQ4MSA+IDEyNy4wLjAuMS4yNTg2NTogRmxhZ3MgWy5dLCBhY2sgNTcz
NDUsIHdpbiAxNzkyLCBvcHRpb25zIFtub3Asbm9wLFRTIHZhbCA2MjkxNDU0OTAgZWNyIDMxMzgy
OF0sIGxlbmd0aCAwCjAwOjAwOjAwLjA5OTM5NCBJUCAxMjcuMC4wLjEuMjM0ODEgPiAxMjcuMC4w
LjEuMjU4NjU6IEZsYWdzIFsuXSwgYWNrIDcxNjgxLCB3aW4gMCwgb3B0aW9ucyBbbm9wLG5vcCxU
UyB2YWwgNjI5MTQ1NTAwIGVjciAzMTM4MjhdLCBsZW5ndGggMAowMDowMDowMC45MTAxMzUgSVAg
MTI3LjAuMC4xLjIzNDgxID4gMTI3LjAuMC4xLjI1ODY1OiBGbGFncyBbRi5dLCBzZXEgMSwgYWNr
IDcxNjgxLCB3aW4gODk2MCwgb3B0aW9ucyBbbm9wLG5vcCxUUyB2YWwgNjI5MTQ1NTkxIGVjciAz
MTM4MjhdLCBsZW5ndGggMAowMDowMDowMC4wMDAwNjkgSVAgMTI3LjAuMC4xLjI1ODY1ID4gMTI3
LjAuMC4xLjIzNDgxOiBGbGFncyBbLl0sIGFjayAyLCB3aW4gODk2MCwgb3B0aW9ucyBbbm9wLG5v
cCxUUyB2YWwgMzEzOTI5IGVjciA2MjkxNDU1OTFdLCBsZW5ndGggMTQzMzYKMDA6MDA6MDAuMDAw
MDE0IElQIDEyNy4wLjAuMS4yNTg2NSA+IDEyNy4wLjAuMS4yMzQ4MTogRmxhZ3MgWy5dLCBhY2sg
Miwgd2luIDg5NjAsIG9wdGlvbnMgW25vcCxub3AsVFMgdmFsIDMxMzkyOSBlY3IgNjI5MTQ1NTkx
XSwgbGVuZ3RoIDE0MzM2CjAwOjAwOjAwLjAwMDAzNSBJUCAxMjcuMC4wLjEuMjM0ODEgPiAxMjcu
MC4wLjEuMjU4NjU6IEZsYWdzIFtSXSwgc2VxIDMwMTI0OTYwMDEsIHdpbiAwLCBsZW5ndGggMAow
MDowMDowMC4wMDAwMTkgSVAgMTI3LjAuMC4xLjIzNDgxID4gMTI3LjAuMC4xLjI1ODY1OiBGbGFn
cyBbUl0sIHNlcSAzMDEyNDk2MDAxLCB3aW4gMCwgbGVuZ3RoIDAKCQkgICAgCiNlbmRpZiAvKiAw
ICovCg==
--=-=-=--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?86eigt4xwm.fsf>