Mail Archives: cygwin/2011/01/30/09:32:00
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: | <AANLkTi=HunjC3MPZo37xZ8Yd1Mh1329yD5sQDfaNJWG9@mail.gmail.com>
|
Subject: | Issue with socket SO_REUSEADDR when a client is connected.
|
From: | jdzstz - gmail dot com <jdzstz AT gmail DOT com>
|
To: | cygwin AT cygwin DOT com
|
X-IsSubscribed: | yes
|
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm
|
List-Id: | <cygwin.cygwin.com>
|
List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com>
|
List-Archive: | <http://sourceware.org/ml/cygwin/>
|
List-Post: | <mailto:cygwin AT cygwin DOT com>
|
List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
|
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--
- Raw text -