On Tue, Aug 06, 2024 at 04:01:42PM +0800, Ning wrote: > In the function of gss_read() if print the value of errno and SOCK_ERRNO > separately, I found the values are different: > *ret = pqsecure_raw_read(conn, recv_buffer, length); > if (*ret < 0) > { > printf("errno: %d\n", errno); > printf("result_errno: %d\n", SOCK_ERRNO); > ...
*ret = pqsecure_raw_read(conn, recv_buffer, length); if (*ret < 0) { - if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR) + if (SOCK_ERRNO == EAGAIN || SOCK_ERRNO == EWOULDBLOCK || SOCK_ERRNO == EINTR) This is going to require some platform-specific check that I don't have with me, though I am ready to accept that what you are telling here is true and that we should apply this macro. Could somebody check that a bit more in depth? Andrew D. perhaps? One thing that I don't understand is why does this only apply after the first call of pqsecure_raw_read() in gss_read()? There is a second call of pqsecure_raw_read() you are not covering but it would surely need the same treatment, no? Also, what about pqsecure_raw_write() in pqsecure_open_gss()? Shouldn't the same check apply? -- Michael
signature.asc
Description: PGP signature