From 97795532214d4ce09159e7cda42c1a55dd13c5f7 Mon Sep 17 00:00:00 2001 From: Dan Fandrich Date: Thu, 28 Jul 2011 12:27:55 -0700 Subject: Give the NTLM SSO helper a moment to cleanly shut down if needed --- lib/http_ntlm.c | 7 ++++++- lib/select.c | 6 +++--- lib/select.h | 2 ++ 3 files changed, 11 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/http_ntlm.c b/lib/http_ntlm.c index 79481a46d..4163b8245 100644 --- a/lib/http_ntlm.c +++ b/lib/http_ntlm.c @@ -51,6 +51,7 @@ #include "urldata.h" #include "non-ascii.h" /* for Curl_convert_... prototypes */ #include "sendf.h" +#include "select.h" #include "rawstr.h" #include "curl_base64.h" #include "http_ntlm.h" @@ -694,10 +695,14 @@ static void sso_ntlm_close(struct connectdata *conn) case 0: kill(conn->pid, SIGTERM); break; + case 1: + /* Give the process another moment to shut down cleanly before + bringing down the axe */ + Curl_wait_ms(1); + break; case 2: kill(conn->pid, SIGKILL); break; - case 1: case 3: break; } diff --git a/lib/select.c b/lib/select.c index c566c6070..56dbc44f4 100644 --- a/lib/select.c +++ b/lib/select.c @@ -90,7 +90,7 @@ * -1 = system call error, invalid timeout value, or interrupted * 0 = specified timeout has elapsed */ -static int wait_ms(int timeout_ms) +int Curl_wait_ms(int timeout_ms) { #if !defined(MSDOS) && !defined(USE_WINSOCK) #ifndef HAVE_POLL_FINE @@ -177,7 +177,7 @@ int Curl_socket_ready(curl_socket_t readfd, curl_socket_t writefd, int ret; if((readfd == CURL_SOCKET_BAD) && (writefd == CURL_SOCKET_BAD)) { - r = wait_ms((int)timeout_ms); + r = Curl_wait_ms((int)timeout_ms); return r; } @@ -361,7 +361,7 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms) } } if(fds_none) { - r = wait_ms((int)timeout_ms); + r = Curl_wait_ms(timeout_ms); return r; } diff --git a/lib/select.h b/lib/select.h index e012c63f3..d785fb393 100644 --- a/lib/select.h +++ b/lib/select.h @@ -89,6 +89,8 @@ int Curl_socket_ready(curl_socket_t readfd, curl_socket_t writefd, int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms); +int Curl_wait_ms(int timeout_ms); + #ifdef TPF int tpf_select_libcurl(int maxfds, fd_set* reads, fd_set* writes, fd_set* excepts, struct timeval* tv); -- cgit v1.2.3