Author: mturk
Date: Fri Sep 17 13:26:58 2010
New Revision: 998120
URL: http://svn.apache.org/viewvc?rev=998120&view=rev
Log:
Make sure errno survives JK_TRACE_EXIT call
Modified:
tomcat/jk/trunk/native/common/jk_connect.c
Modified: tomcat/jk/trunk/native/common/jk_connect.c
URL:
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_connect.c?rev=998120&r1=998119&r2=998120&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_connect.c (original)
+++ tomcat/jk/trunk/native/common/jk_connect.c Fri Sep 17 13:26:58 2010
@@ -730,8 +730,8 @@ int jk_shutdown_socket(jk_sock_t sd, jk_
rc = jk_close_socket(sd, l);
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG, "Failed sending SHUT_WR for socket %d",
sd);
- errno = save_errno;
JK_TRACE_EXIT(l);
+ errno = save_errno;
return rc;
}
@@ -801,8 +801,8 @@ int jk_shutdown_socket(jk_sock_t sd, jk_
jk_log(l, JK_LOG_DEBUG,
"Shutdown socket %d and read %d lingering bytes in %d sec.",
sd, rd, (int)difftime(time(NULL), start));
- errno = save_errno;
JK_TRACE_EXIT(l);
+ errno = save_errno;
return rc;
}
@@ -842,8 +842,9 @@ int jk_tcp_socket_sendfull(jk_sock_t sd,
if (JK_IS_SOCKET_ERROR(wr)) {
jk_shutdown_socket(sd, l);
+ int err = (errno > 0) ? -errno : errno;
JK_TRACE_EXIT(l);
- return (errno > 0) ? -errno : errno;
+ return err;
}
else if (wr == 0) {
jk_shutdown_socket(sd, l);
@@ -890,10 +891,10 @@ int jk_tcp_socket_recvfull(jk_sock_t sd,
} while (JK_IS_SOCKET_ERROR(rd) && errno == EINTR);
if (JK_IS_SOCKET_ERROR(rd)) {
- rd = (errno > 0) ? -errno : errno;
+ int err = (errno > 0) ? -errno : errno;
jk_shutdown_socket(sd, l);
JK_TRACE_EXIT(l);
- return (rd == 0) ? JK_SOCKET_EOF : rd;
+ return (err == 0) ? JK_SOCKET_EOF : err;
}
else if (rd == 0) {
jk_shutdown_socket(sd, l);
@@ -985,8 +986,8 @@ int jk_is_input_event(jk_sock_t sd, int
sd, timeout);
}
/* Timeout. Set the errno to timeout */
- errno = ETIMEDOUT;
JK_TRACE_EXIT(l);
+ errno = ETIMEDOUT;
return JK_FALSE;
}
else if (rc < 0) {
@@ -995,8 +996,8 @@ int jk_is_input_event(jk_sock_t sd, int
jk_log(l, JK_LOG_DEBUG,
"error during poll on socket %d (errno=%d)", sd, errno);
}
- errno = save_errno;
JK_TRACE_EXIT(l);
+ errno = save_errno;
return JK_FALSE;
}
if ((fds.revents & (POLLERR | POLLHUP))) {
@@ -1006,12 +1007,12 @@ int jk_is_input_event(jk_sock_t sd, int
"error event during poll on socket %d (event=%d)",
sd, save_errno);
}
- errno = save_errno;
JK_TRACE_EXIT(l);
+ errno = save_errno;
return JK_FALSE;
}
- errno = 0;
JK_TRACE_EXIT(l);
+ errno = 0;
return JK_TRUE;
}
#else
@@ -1040,13 +1041,13 @@ int jk_is_input_event(jk_sock_t sd, int
"timeout during select on socket %d (timeout=%d)",
sd, timeout);
}
+ JK_TRACE_EXIT(l);
/* Timeout. Set the errno to timeout */
#if defined(WIN32) || (defined(NETWARE) && defined(__NOVELL_LIBC__))
errno = WSAETIMEDOUT - WSABASEERR;
#else
errno = ETIMEDOUT;
#endif
- JK_TRACE_EXIT(l);
return JK_FALSE;
}
else if (rc < 0) {
@@ -1056,12 +1057,12 @@ int jk_is_input_event(jk_sock_t sd, int
"error during select on socket %d (errno=%d)",
sd, errno);
}
- errno = save_errno;
JK_TRACE_EXIT(l);
+ errno = save_errno;
return JK_FALSE;
}
- errno = 0;
JK_TRACE_EXIT(l);
+ errno = 0;
return JK_TRUE;
}
#endif
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]