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>