aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/http_ntlm.c7
-rw-r--r--lib/select.c6
-rw-r--r--lib/select.h2
3 files changed, 11 insertions, 4 deletions
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);