Fixed missing error code handling for winsock
Martin Gerhardy <[email protected]> Mon, 28 Nov 2016 11:34:24 +0000
| Newsgroups | gmane.comp.java.ikvm.devel |
|---|---|
| Message-ID | <0598D786697B0A42AAEE93449381605340654D5B@srv024038.bigpoint.local> |
--_004_0598D786697B0A42AAEE93449381605340654D5Bsrv024038bigpoi_
Content-Type: multipart/alternative;
boundary="_000_0598D786697B0A42AAEE93449381605340654D5Bsrv024038bigpoi_"
--_000_0598D786697B0A42AAEE93449381605340654D5Bsrv024038bigpoi_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Compared to the SocketChannelImpl::read this should fix issues with two win=
sock error codes. One is the interrupt signal and one is wouldblock signal
compare also against the openjdk code for bsd sockets: (NET_Read in linux_c=
lose.c)
/*
* Macro to perform a blocking IO operation. Restarts
* automatically if interrupted by signal (other than
* our wakeup signal)
*/
#define BLOCKING_IO_RETURN_INT(FD, FUNC) { \
int ret; \
threadEntry_t self; \
fdEntry_t *fdEntry =3D getFdEntry(FD); \
if (fdEntry =3D=3D NULL) { \
errno =3D EBADF; \
return -1; \
} \
do { \
startOp(fdEntry, &self); \
ret =3D FUNC; \
endOp(fdEntry, &self); \
} while (ret =3D=3D -1 && errno =3D=3D EINTR); \
return ret; \
}
the Winsock code is now doing the same.
Regards
Martin
--_000_0598D786697B0A42AAEE93449381605340654D5Bsrv024038bigpoi_
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<html dir=3D"ltr">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-=
1">
<style id=3D"owaParaStyle" type=3D"text/css">P {margin-top:0;margin-bottom:=
0;}</style>
</head>
<body ocsi=3D"0" fpstyle=3D"1">
<div style=3D"direction: ltr;font-family: Tahoma;color: #000000;font-size: =
10pt;">Compared to the SocketChannelImpl::read this should fix issues with =
two winsock error codes. One is the interrupt signal and one is wouldblock =
signal<br>
<br>
compare also against the openjdk code for bsd sockets: (NET_Read in linux_c=
lose.c)<br>
<br>
/*<br>
* Macro to perform a blocking IO operation. Restarts<br>
* automatically if interrupted by signal (other than<br>
* our wakeup signal)<br>
*/<br>
#define BLOCKING_IO_RETURN_INT(FD, FUNC) { \<=
br>
int ret; =
&nb=
sp; =
\<br>
threadEntry_t self; &=
nbsp; &nbs=
p; \<br>
fdEntry_t *fdEntry =3D getFdEntry(FD); =
\<br>
if (fdEntry =3D=3D NULL) { =
&nb=
sp; \<br>
errno =3D EBADF; &nbs=
p; &=
nbsp; \<br>
return -1; &nbs=
p; &=
nbsp; &nbs=
p; \<br>
} &=
nbsp; &nbs=
p; &=
nbsp; \<br>
do { &nbs=
p; &=
nbsp; &nbs=
p; \<br>
startOp(fdEntry, &self);&nbs=
p; &=
nbsp; \<br>
ret =3D FUNC; &=
nbsp; &nbs=
p; =
\<br>
endOp(fdEntry, &self); =
&nb=
sp; \<br>
} while (ret =3D=3D -1 && errno =3D=3D EINTR);&n=
bsp; \<br>
return ret; &nb=
sp; =
\<=
br>
}<br>
<br>
the Winsock code is now doing the same.<br>
<br>
Regards<br>
Martin<br>
</div>
</body>
</html>
--_000_0598D786697B0A42AAEE93449381605340654D5Bsrv024038bigpoi_--
--_004_0598D786697B0A42AAEE93449381605340654D5Bsrv024038bigpoi_
Content-Type: text/x-patch; name="0001-handle-Winsock.WSAEWOULDBLOCK.patch"
Content-Description: 0001-handle-Winsock.WSAEWOULDBLOCK.patch
Content-Disposition: attachment;
filename="0001-handle-Winsock.WSAEWOULDBLOCK.patch"; size=1753;
creation-date="Mon, 28 Nov 2016 11:31:29 GMT";
modification-date="Mon, 28 Nov 2016 11:31:29 GMT"
Content-Transfer-Encoding: base64
RnJvbSAyNWU1NWQxYmJlN2JmMDJjODVkZGFiZjc2ZjhjZWMwMzQ5MThmYjA5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gR2VyaGFyZHkgPG1hcnRpbi5nZXJoYXJkeUBnbWFp
bC5jb20+CkRhdGU6IEZyaSwgMjUgTm92IDIwMTYgMTc6NTY6NDcgKzAxMDAKU3ViamVjdDogW1BB
VENIXSBoYW5kbGUgV2luc29jay5XU0FFV09VTERCTE9DSwoKLS0tCiBydW50aW1lL29wZW5qZGsv
amF2YS5uZXQuU29ja2V0SW5wdXRTdHJlYW0uY3MgfCAxNyArKysrKysrKysrKysrKysrLQogMSBm
aWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg
YS9ydW50aW1lL29wZW5qZGsvamF2YS5uZXQuU29ja2V0SW5wdXRTdHJlYW0uY3MgYi9ydW50aW1l
L29wZW5qZGsvamF2YS5uZXQuU29ja2V0SW5wdXRTdHJlYW0uY3MKaW5kZXggODAwZWI0Zi4uOGMz
N2ZjOCAxMDA2NDQKLS0tIGEvcnVudGltZS9vcGVuamRrL2phdmEubmV0LlNvY2tldElucHV0U3Ry
ZWFtLmNzCisrKyBiL3J1bnRpbWUvb3Blbmpkay9qYXZhLm5ldC5Tb2NrZXRJbnB1dFN0cmVhbS5j
cwpAQCAtNzUsNyArNzUsMTEgQEAgc3RhdGljIGNsYXNzIEphdmFfamF2YV9uZXRfU29ja2V0SW5w
dXRTdHJlYW0KIAkJCX0KIAkJfQogCi0JCW5yZWFkID0gV2luc29jay5yZWN2KHNvY2tldCwgYiwg
b2ZmLCBsZW4sIDApOworCQkvLyB0cnkgYWdhaW4gaWYgd2UgZ290IGFuIGludGVycnVwdCB3aGls
ZSByZWFkaW5nCisJCWRvIHsKKwkJCW5yZWFkID0gV2luc29jay5yZWN2KHNvY2tldCwgYiwgb2Zm
LCBsZW4sIDApOworCQl9IHdoaWxlIChucmVhZCA9PSAtMSAmJiBXaW5zb2NrLldTQUdldExhc3RF
cnJvcigpID09IFdpbnNvY2suV1NBRUlOVFIpOworCiAJCWlmIChucmVhZCA+IDApCiAJCXsKIAkJ
CS8vIG9rCkBAIC0xMDMsNiArMTA3LDE3IEBAIHN0YXRpYyBjbGFzcyBKYXZhX2phdmFfbmV0X1Nv
Y2tldElucHV0U3RyZWFtCiAJCQkJCWNhc2UgV2luc29jay5XU0FFVElNRURPVVQ6CiAJCQkJCQl0
aHJvdyBuZXcgU29ja2V0VGltZW91dEV4Y2VwdGlvbigiUmVhZCB0aW1lZCBvdXQiKTsKIAorCQkJ
CQkvKioKKwkJCQkJICogUmVzb3VyY2UgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUuCisJCQkJCSAq
IFRoaXMgZXJyb3IgaXMgcmV0dXJuZWQgZnJvbSBvcGVyYXRpb25zIG9uIG5vbmJsb2NraW5nIHNv
Y2tldHMgdGhhdCBjYW5ub3QgYmUgY29tcGxldGVkIGltbWVkaWF0ZWx5LAorCQkJCQkgKiBmb3Ig
ZXhhbXBsZSByZWN2IHdoZW4gbm8gZGF0YSBpcyBxdWV1ZWQgdG8gYmUgcmVhZCBmcm9tIHRoZSBz
b2NrZXQuIEl0IGlzIGEgbm9uZmF0YWwgZXJyb3IsIGFuZCB0aGUKKwkJCQkJICogb3BlcmF0aW9u
IHNob3VsZCBiZSByZXRyaWVkIGxhdGVyLiBJdCBpcyBub3JtYWwgZm9yIFdTQUVXT1VMREJMT0NL
IHRvIGJlIHJlcG9ydGVkIGFzIHRoZSByZXN1bHQgZnJvbQorCQkJCQkgKiBjYWxsaW5nIGNvbm5l
Y3Qgb24gYSBub25ibG9ja2luZyBTT0NLX1NUUkVBTSBzb2NrZXQsIHNpbmNlIHNvbWUgdGltZSBt
dXN0IGVsYXBzZSBmb3IgdGhlIGNvbm5lY3Rpb24KKwkJCQkJICogdG8gYmUgZXN0YWJsaXNoZWQu
CisJCQkJCSAqLworCQkJCQljYXNlIFdpbnNvY2suV1NBRVdPVUxEQkxPQ0s6CisJCQkJCQlyZXR1
cm4gMDsKKwogCQkJCQlkZWZhdWx0OgogCQkJCQkJdGhyb3cgbmV0X3V0aWxfbWQuTkVUX1Rocm93
Q3VycmVudCgicmVjdiBmYWlsZWQiKTsKIAkJCQl9Ci0tIAoyLjEwLjIKCg==
--_004_0598D786697B0A42AAEE93449381605340654D5Bsrv024038bigpoi_
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
------------------------------------------------------------------------------
--_004_0598D786697B0A42AAEE93449381605340654D5Bsrv024038bigpoi_
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
Ikvm-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ikvm-developers
--_004_0598D786697B0A42AAEE93449381605340654D5Bsrv024038bigpoi_--