curl_multi_cleanup: ignore SIGPIPE better

When looping and closing each individual connection left open, the
SIGPIPE ignoring was not done and could thus lead to death by signal 13.

Bug: http://thread.gmane.org/gmane.comp.version-control.git/238242
This commit is contained in:
Jeff King 2014-05-05 12:47:46 +02:00 коммит произвёл Daniel Stenberg
Родитель 1f93471bda
Коммит 37f484276d
1 изменённых файлов: 3 добавлений и 0 удалений

Просмотреть файл

@ -1806,10 +1806,13 @@ static void close_all_connections(struct Curl_multi *multi)
conn = Curl_conncache_find_first_connection(multi->conn_cache);
while(conn) {
SIGPIPE_VARIABLE(pipe_st);
conn->data = multi->closure_handle;
sigpipe_ignore(conn->data, &pipe_st);
/* This will remove the connection from the cache */
(void)Curl_disconnect(conn, FALSE);
sigpipe_restore(&pipe_st);
conn = Curl_conncache_find_first_connection(multi->conn_cache);
}