X-Recipient: archive-cygwin AT delorie DOT com X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,T_FRT_STOCK2,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org MIME-Version: 1.0 Date: Sun, 30 Jan 2011 15:31:44 +0100 Message-ID: Subject: Issue with socket SO_REUSEADDR when a client is connected. From: jdzstz - gmail dot com To: cygwin AT cygwin DOT com Content-Type: multipart/mixed; boundary=00163630fc05942714049b1128c5 X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com --00163630fc05942714049b1128c5 Content-Type: text/plain; charset=ISO-8859-1 I have detected an issue in windows xp with socket SO_REUSEADDR when a tcp client keeps connected forever. I don't know if it is a cygwin bug or a problem with microsoft winsock implementation. I don't know if windows vista or windows 7 has the same behaviour. I have a server process that open a socket and binds to a port. After a while, it closes the socket, re-open and re-bind to it. In Unix (linux, solaris) the server process can always re-bind after closing the previous socket, but in cygwin, there are some strange issues. I have prepared a simplified tcp_server test program, in order to be able to reproduce error in an easy way. A) If I bind to wildcard address 0.0.0.0 port 5555, it works successfully, like Unix: 1) tcp_server binds to 0.0.0.0:5555 and create a thread to accept connections 2) tcp_server sleep for 10 seconds 3) a client process connect to 127.0.0.1:5555 and keeps connected forever 4) tcp_server awakes, closes all connections to port 5555 (but client process keeps port connected, in ESTABLISHED state) 5) tcp_server successfully reopens and rebind to 0.0.0.0:5555 B) If I bind to address 127.0.0.1 port 5555, it fails: 1) tcp_server binds to 127.0.0.1:5555 and create a thread to accept connections 2) tcp_server sleep for 10 seconds 3) a client process connect to 127.0.0.1:5555 and keeps connected forever 4) tcp_server awakes, closes all connections to port 5555 (but client process keeps port connected, in ESTABLISHED state) 5) an error "bind(): Address already in use" occurs. C) If there is no client connection, rebind is always successful. TEST LOG: ========= A) bind to 0.0.0.0 5555 $ ./tcp_server 0.0.0.0 5555 10 Start main Opening socket on 0.0.0.0 5555 Main: Creating thread Start sleep Starting server thread, executing "accept" accepted fd 4 End sleep pthread_cancel Waiting for server Server returned "0xffffffff" End main Start main Opening socket on 0.0.0.0 5555 Main: Creating thread Start sleep Starting server thread, executing "accept" End sleep pthread_cancel Waiting for server Server returned "0xffffffff" End main Start main Opening socket on 0.0.0.0 5555 B) bind to 127.0.0.1 5555 $ ./tcp_server 127.0.0.1 5555 10 Start main Opening socket on 127.0.0.1 5555 Main: Creating thread Starting server thread, executing "accept" Start sleep accepted fd 4 End sleep pthread_cancel Waiting for server Server returned "0xffffffff" End main Start main bind(): Address already in use Main: Creating thread Start sleep Starting server thread, executing "accept" Accepted failed: Bad file descriptor Ending thread End sleep pthread_cancel Waiting for server close = 9 Bad file descriptor End main Start main bind(): Address already in use I attach to email a tcp_server and tcp_client examples. Execute "./tcp_server 127.0.0.1 5555 10" in one terminal and "./tcp_client 127.0.0.1 5555" in other. A telnet connection to tcp_server is also OK to see the problems. This problem occurs sometimes in "varnishtest" tool from varnish cache software. --00163630fc05942714049b1128c5 Content-Type: text/x-csrc; charset=US-ASCII; name="tcp_server.c" Content-Disposition: attachment; filename="tcp_server.c" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gjk1mien0 CiNpbmNsdWRlIDxlcnJuby5oPgojaW5jbHVkZSA8cHRocmVhZC5oPgojaW5j bHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8 dW5pc3RkLmg+CiNpbmNsdWRlIDxhc3NlcnQuaD4KI2luY2x1ZGUgPHN0cmlu Zy5oPiAKCiNpbmNsdWRlIDxuZXRkYi5oPgojaW5jbHVkZSA8cG9sbC5oPgoK Y2hhciogaG9zdDsKaW50IHBvcnQ7CmludCBzZWNvbmRzOwppbnQgc29jazsK Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIExpc3RlbiB0byBwb3J0 CiAqLwoKaW50Cmxpc3Rlbl9wb3J0KCkKewoJaW50IGksIHJldDsKCglpbnQg c2QsIHZhbDsKCglzZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwg MCk7CglpZiAoc2QgPCAwKSB7CgkJcGVycm9yKCJzb2NrZXQoKSIpOwoJCXJl dHVybiAoLTEpOwoJfQoJdmFsID0gMTsKCQoJaWYgKHNldHNvY2tvcHQoc2Qs IFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgJnZhbCwgc2l6ZW9mIHZhbCkg IT0gMCkgewoJCXBlcnJvcigic2V0c29ja29wdChTT19SRVVTRUFERFIsIDEp Iik7CgkJKHZvaWQpY2xvc2Uoc2QpOwoJCXJldHVybiAoLTEpOwoJfQoKCXN0 cnVjdCAgaG9zdGVudCAgKnB0cmg7CglzdHJ1Y3Qgc29ja2FkZHJfaW4gc2Fk ZHI7CgoJcHRyaCA9IGdldGhvc3RieW5hbWUoaG9zdCk7CglpZiAoICgoY2hh ciAqKXB0cmgpID09IE5VTEwgKSB7CgkJcGVycm9yKCJJbnZhbGlkIGhvc3Qi KTsKCQlyZXR1cm4gKC0xKTsKCX0KCgliemVybygoY2hhciAqKSAmc2FkZHIs IHNpemVvZihzYWRkcikpOwoJc2FkZHIuc2luX2ZhbWlseSAgICAgID0gQUZf SU5FVDsKCXNhZGRyLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKElOQUREUl9B TlkpOwoJc2FkZHIuc2luX3BvcnQgPSBodG9ucygodV9zaG9ydClwb3J0KTsK CW1lbWNweSgmc2FkZHIuc2luX2FkZHIsIHB0cmgtPmhfYWRkciwgcHRyaC0+ aF9sZW5ndGgpOwoJCglpZiAoYmluZChzZCwgKHN0cnVjdCBzb2NrYWRkciAq KSAmc2FkZHIsIHNpemVvZihzYWRkcikpIDwgMCkgCgl7CgkJcGVycm9yKCJi aW5kKCkiKTsKCQkodm9pZCljbG9zZShzZCk7CgkJcmV0dXJuICgtMSk7Cgl9 CglyZXR1cm4gKHNkKTsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK ICogU2VydmVyIFRocmVhZAogKi8KCnN0YXRpYyB2b2lkICoKc2VydmVyX3Ro cmVhZCh2b2lkICpwcml2KQp7CglzdHJ1Y3QgdnRjbG9nICp2bDsKCWludCBp LCBqLCBmZDsKCXN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGFkZHJfczsKCXN0 cnVjdCBzb2NrYWRkciAqYWRkcjsKCXNvY2tsZW5fdCBsOwoJY2hhciAgICBi dWZbMTAwMF07ICAgICAgIC8qIGJ1ZmZlciBmb3Igc3RyaW5nIHRoZSBzZXJ2 ZXIgc2VuZHMgICovCgoJcHJpbnRmKCJTdGFydGluZyBzZXJ2ZXIgdGhyZWFk LCBleGVjdXRpbmcgXCJhY2NlcHRcIlxuIik7CgoJYWRkciA9ICh2b2lkKikm YWRkcl9zOwoJbCA9IHNpemVvZiBhZGRyX3M7CglmZCA9IGFjY2VwdChzb2Nr LCBhZGRyLCAmbCk7CglpZiAoZmQgPCAwKQoJewoJCXByaW50ZiggIkFjY2Vw dGVkIGZhaWxlZDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7Cgl9CgllbHNl Cgl7CgkJcHJpbnRmKCAiYWNjZXB0ZWQgZmQgJWRcbiIsIGZkKTsKCQlpbnQg bjsKCSAgICBuID0gcmVjdihmZCwgYnVmLCBzaXplb2YoYnVmKSwgMCk7Cgkg ICAgd2hpbGUgKG4gPiAwKQoJICAgIHsKCSAgICAgICAgc2VuZChmZCwgYnVm LCBuLCAwKTsKCSAgICAgICAgbiA9IHJlY3YoZmQsIGJ1Ziwgc2l6ZW9mKGJ1 ZiksIDApOwoJICAgIH0KCQlwcmludGYoICJzaHV0dGluZyBmZCAlZFxuIiwg ZmQpOwoJCWogPSBzaHV0ZG93bihmZCwgU0hVVF9XUik7CgkJaWYgKCEoKGop ID09IDAgfHwgZXJybm8gPT0gRUNPTk5SRVNFVCB8fCBlcnJubyA9PSBFTk9U Q09OTikpCgkJCXByaW50ZiggIlNodXRkb3duIGZhaWxlZDogJXNcbiIsIHN0 cmVycm9yKGVycm5vKSk7CgkJCgkJaSA9IGNsb3NlKGZkKTsKCQlwcmludGYo ICJjbG9zZWQgZmQgJWRcbiIsIGZkKTsKCQlhc3NlcnQgKCgoaSkgPT0gMCB8 fCBlcnJubyA9PSBFQ09OTlJFU0VUIHx8IGVycm5vID09IEVOT1RDT05OKSk7 Cgl9CgkKCXByaW50ZigiRW5kaW5nIHRocmVhZFxuIik7CglyZXR1cm4gKE5V TEwpOwp9CgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogTWFpbgog Ki8KCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCnsKCWlmKGFy Z2MhPTQpCgl7CgkJcHJpbnRmKCIlcyA8YWRkcmVzcz4gPHBvcnQ+IDxzZWNv bmRzPlxuIixhcmd2WzBdKTsKCQlyZXR1cm47Cgl9CgllbHNlCgl7CgkJaG9z dCA9IGFyZ3ZbMV07CgkJcG9ydD1hdG9pKGFyZ3ZbMl0pOwoJCXNlY29uZHM9 YXRvaShhcmd2WzNdKTsKCX0KCgl3aGlsZSgxKQoJewoJCXByaW50ZiggIlN0 YXJ0IG1haW5cbiIpOwoJCXNvY2sgPSBsaXN0ZW5fcG9ydCgpOwoJCWlmIChz b2NrID49IDApICAKCQl7CgkJCWlmIChsaXN0ZW4oc29jaywgMSkgIT0gMCkg ewoJCQkJcGVycm9yKCJsaXN0ZW4oKSIpOwoJCQkJKHZvaWQpY2xvc2Uoc29j ayk7CgkJCQlyZXR1cm4gKC0xKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXN0 cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGFkZHJfczsKCQkJCXNvY2tsZW5fdCBs OwoJCQkKCQkJCWwgPSBzaXplb2YgYWRkcl9zOwoJCQkJZ2V0c29ja25hbWUo c29jaywgKHZvaWQgKikmYWRkcl9zLCAmbCk7CgkJCQkKCQkJCWludCBpOwoJ CQkJY2hhciBhYWRkclszMl07CgkJCQljaGFyIGFwb3J0WzMyXTsKCQkJCgkJ CQlpID0gZ2V0bmFtZWluZm8oKGNvbnN0IHZvaWQgKikmYWRkcl9zLCBsLCBh YWRkciwgc2l6ZW9mIGFhZGRyLCBhcG9ydCwgc2l6ZW9mIGFwb3J0LE5JX05V TUVSSUNIT1NUIHwgTklfTlVNRVJJQ1NFUlYpOwoJCQkJaWYgKGkpIHsKCQkJ CQlwcmludGYoImdldG5hbWVpbmZvID0gJWQgJXNcbiIsIGksIGdhaV9zdHJl cnJvcihpKSk7CgkJCQkJcmV0dXJuOwoJCQkJfQoJCQkJCgkJCQlwcmludGYo ICJPcGVuaW5nIHNvY2tldCBvbiAlcyAlc1xuIiwgYWFkZHIsIGFwb3J0KTsK CQkKCQkJfQoJCX0KCQkKCQlwdGhyZWFkX3QgdGhyOwoJCWludCByYzsKCQls b25nIHQ7CgkKCQlwcmludGYoIk1haW46IENyZWF0aW5nIHRocmVhZFxuIiwg dCk7CgkJcmMgPSBwdGhyZWFkX2NyZWF0ZSgmdGhyLCBOVUxMLCBzZXJ2ZXJf dGhyZWFkLCAodm9pZCAqKXQpOwoJCWlmIChyYykKCQl7CgkJCXByaW50Zigi RVJST1I7IHJldHVybiBjb2RlIGZyb20gcHRocmVhZF9jcmVhdGUoKSBpcyAl ZFxuIiwgcmMpOwoJCQlleGl0KC0xKTsKCQl9CgkJCgkJcHJpbnRmKCJTdGFy dCBzbGVlcFxuIik7CgkJc2xlZXAoc2Vjb25kcyk7CgkJcHJpbnRmKCJFbmQg c2xlZXBcbiIpOwoJCQoJCXByaW50ZigicHRocmVhZF9jYW5jZWxcbiIpOwoJ CSh2b2lkKXB0aHJlYWRfY2FuY2VsKHRocik7CgkKCQl2b2lkICpyZXM7CgkK CQlwcmludGYoIldhaXRpbmcgZm9yIHNlcnZlclxuIik7CgkJcmM9cHRocmVh ZF9qb2luKHRociwgJnJlcyk7CgkJaWYgKHJjKQoJCXsKCQkJcHJpbnRmKCJF UlJPUjsgcmV0dXJuIGNvZGUgZnJvbSBwdGhyZWFkX2pvaW4oKSBpcyAlZFxu IiwgcmMpOwoJCX0KCQlpZiAocmVzICE9IE5VTEwpCgkJCXByaW50ZiggIlNl cnZlciByZXR1cm5lZCBcIiVwXCJcbiIsKGNoYXIgKilyZXMpOwoJCQkgICAg CgkJaW50IGo7CQoJCWogPSBjbG9zZShzb2NrKTsKCQlpZiAoaikgewoJCQlw cmludGYoImNsb3NlID0gJWQgJXNcbiIsIGVycm5vLCBzdHJlcnJvcihlcnJu bykpOwoJCX0KCQoJCXByaW50ZigiRW5kIG1haW5cbiIpOwoJfQoJcmV0dXJu Owp9Cg== --00163630fc05942714049b1128c5 Content-Type: text/x-csrc; charset=US-ASCII; name="tcp_client.c" Content-Disposition: attachment; filename="tcp_client.c" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gjk1mien1 CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHN5cy9zb2NrZXQu aD4KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KI2luY2x1ZGUgPGFycGEvaW5l dC5oPgojaW5jbHVkZSA8bmV0ZGIuaD4KCiNpbmNsdWRlIDxzdGRpby5oPgoj aW5jbHVkZSA8c3RyaW5nLmg+CgoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg KiBhcmd2W10pCnsKICAgICAgICBzdHJ1Y3QgIGhvc3RlbnQgICpwdHJoOyAg LyogcG9pbnRlciB0byBhIGhvc3QgdGFibGUgZW50cnkgICAgICAgKi8KICAg ICAgICBzdHJ1Y3QgIHByb3RvZW50ICpwdHJwOyAgLyogcG9pbnRlciB0byBh IHByb3RvY29sIHRhYmxlIGVudHJ5ICAgKi8KICAgICAgICBzdHJ1Y3QgIHNv Y2thZGRyX2luIHNhZDsgLyogc3RydWN0dXJlIHRvIGhvbGQgYW4gSVAgYWRk cmVzcyAgICAgKi8KICAgICAgICBpbnQgICAgIHNkOyAgICAgICAgICAgICAg Lyogc29ja2V0IGRlc2NyaXB0b3IgICAgICAgICAgICAgICAgICAgKi8KICAg ICAgICBpbnQgICAgIHBvcnQ7ICAgICAgICAgICAgLyogcHJvdG9jb2wgcG9y dCBudW1iZXIgICAgICAgICAgICAgICAgKi8KICAgICAgICBjaGFyICAgICpo b3N0OyAgICAgICAgICAgLyogcG9pbnRlciB0byBob3N0IG5hbWUgICAgICAg ICAgICAgICAgKi8KICAgICAgICBpbnQgICAgIG47ICAgICAgICAgICAgICAg LyogbnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVhZCAgICAgICAgICAgKi8KICAg ICAgICBjaGFyICAgIGJ1ZlsxMDAwXTsgICAgICAgLyogYnVmZmVyIGZvciBk YXRhIGZyb20gdGhlIHNlcnZlciAgICAgKi8KICAgICAgICBjaGFyICAgICp0 ZXh0OyAgICAgICAgICAgLyogcG9pbnRlciB0byB1c2VyJ3MgbGluZSBvZiB0 ZXh0ICAgICAgKi8KICAgICAgICBtZW1zZXQoKGNoYXIgKikmc2FkLDAsc2l6 ZW9mKHNhZCkpOyAvKiBjbGVhciBzb2NrYWRkciBzdHJ1Y3R1cmUgKi8KICAg ICAgICBzYWQuc2luX2ZhbWlseSA9IEFGX0lORVQ7ICAgICAgICAgLyogc2V0 IGZhbWlseSB0byBJbnRlcm5ldCAgICAgKi8KCgkJaWYoYXJnYyE9MykKCQl7 CgkJCXByaW50ZigiJXMgPGFkZHJlc3M+IDxwb3J0PlxuIixhcmd2WzBdKTsK CQkJcmV0dXJuOwoJCX0KCQllbHNlCgkJewoJCQlob3N0ID0gYXJndlsxXTsK CQkJcG9ydCA9IGF0b2koYXJndlsyXSk7CgkJfQoKICAgICAgICBpZiAocG9y dCA+IDApICAgICAgICAgICAgICAgICAgIC8qIHRlc3QgZm9yIGxlZ2FsIHZh bHVlICAgICAgICAgKi8KICAgICAgICAgICAgICAgIHNhZC5zaW5fcG9ydCA9 IGh0b25zKCh1X3Nob3J0KXBvcnQpOwogICAgICAgIGVsc2UgeyAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogcHJpbnQgZXJyb3IgbWVzc2FnZSBhbmQg ZXhpdCAqLwogICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsIkJhZCBw b3J0IG51bWJlciAlc1xuIixhcmd2WzJdKTsKICAgICAgICAgICAgICAgIGV4 aXQoMSk7CiAgICAgICAgfQoKICAgICAgICAvKiBDb252ZXJ0IGhvc3QgbmFt ZSB0byBlcXVpdmFsZW50IElQIGFkZHJlc3MgYW5kIGNvcHkgdG8gc2FkLiAq LwoKICAgICAgICBwdHJoID0gZ2V0aG9zdGJ5bmFtZShob3N0KTsKICAgICAg ICBpZiAoICgoY2hhciAqKXB0cmgpID09IE5VTEwgKSB7CiAgICAgICAgICAg ICAgICBmcHJpbnRmKHN0ZGVyciwiSW52YWxpZCBob3N0OiAlc1xuIiwgaG9z dCk7CiAgICAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgIH0KICAgICAg ICBtZW1jcHkoJnNhZC5zaW5fYWRkciwgcHRyaC0+aF9hZGRyLCBwdHJoLT5o X2xlbmd0aCk7CgogICAgICAgIC8qIE1hcCBUQ1AgdHJhbnNwb3J0IHByb3Rv Y29sIG5hbWUgdG8gcHJvdG9jb2wgbnVtYmVyLiAqLwoKICAgICAgICBpZiAo ICgoaW50KShwdHJwID0gZ2V0cHJvdG9ieW5hbWUoInRjcCIpKSkgPT0gMCkg ewogICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDYW5ub3QgbWFw IFwidGNwXCIgdG8gcHJvdG9jb2wgbnVtYmVyIik7CiAgICAgICAgICAgICAg ICBleGl0KDEpOwogICAgICAgIH0KCiAgICAgICAgLyogQ3JlYXRlIGEgc29j a2V0LiAqLwoKICAgICAgICBzZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NU UkVBTSwgcHRycC0+cF9wcm90byk7CiAgICAgICAgaWYgKHNkIDwgMCkgewog ICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJTb2NrZXQgY3JlYXRp b24gZmFpbGVkXG4iKTsKICAgICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAg ICAgfQoKICAgICAgICAvKiBDb25uZWN0IHRoZSBzb2NrZXQgdG8gdGhlIHNw ZWNpZmllZCBzZXJ2ZXIuICovCgogICAgICAgIGlmIChjb25uZWN0KHNkLCAo c3RydWN0IHNvY2thZGRyICopJnNhZCwgc2l6ZW9mKHNhZCkpIDwgMCkgewog ICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsIkNvbm5lY3QgZmFpbGVk XG4iKTsKICAgICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgfQoKICAg ICAgICAvKiBSZXBlYXRlZGx5IHJlYWQgZGF0YSBmcm9tIHVzZXIgYW5kIHNl bmQgaXQgdG8gc2VydmVyLiAqLwoKICAgICAgICB0ZXh0ID0gZmdldHMoYnVm LCBzaXplb2YoYnVmKSwgc3RkaW4pOwogICAgICAgIHdoaWxlICh0ZXh0ICE9 IE5VTEwpIHsKICAgICAgICAgICAgICAgIHNlbmQoc2QsIGJ1Ziwgc3RybGVu KGJ1ZiksIDApOwogICAgICAgICAgICAgICAgbiA9IHJlY3Yoc2QsIGJ1Ziwg c2l6ZW9mKGJ1ZiksIDApOwogICAgICAgICAgICAgICAgd3JpdGUoMSwgYnVm LCBuKTsKICAgICAgICAgICAgICAgIHRleHQgPSBmZ2V0cyhidWYsIHNpemVv ZihidWYpLCBzdGRpbik7CiAgICAgICAgfQoKICAgICAgICAvKiBDbG9zZSB0 aGUgc29ja2V0LiAqLwoKICAgICAgICBjbG9zZShzZCk7CgogICAgICAgIC8q IFRlcm1pbmF0ZSB0aGUgY2xpZW50IHByb2dyYW0gZ3JhY2VmdWxseS4gKi8K CiAgICAgICAgZXhpdCgwKTsKfQoKCg== --00163630fc05942714049b1128c5 Content-Type: text/plain; charset=us-ascii -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple --00163630fc05942714049b1128c5--