--- axel-2.16.1/src/axel.c 2017-12-05 10:46:05.000000000 +0530 +++ axel.c 2018-03-14 19:29:42.000000000 +0530 @@ -617,7 +617,7 @@ } else { if (gettime() > (axel->conn[i].last_transfer + axel->conf->reconnect_delay)) { - pthread_cancel(*axel->conn[i].setup_thread); + pthread_kill(*axel->conn[i].setup_thread, 0); axel->conn[i].state = false; pthread_join(*axel->conn[i]. setup_thread, NULL); @@ -687,7 +687,7 @@ for (int i = 0; i < axel->conf->num_connections; i++) { /* don't try to kill non existing thread */ if (*axel->conn[i].setup_thread != 0) { - pthread_cancel(*axel->conn[i].setup_thread); + pthread_kill(*axel->conn[i].setup_thread, 0); pthread_join(*axel->conn[i].setup_thread, NULL); } conn_disconnect(&axel->conn[i]); @@ -770,9 +770,11 @@ int oldstate; /* Allow this thread to be killed at any time. */ +#ifndef __ANDROID__ pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &oldstate); pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &oldstate); +#endif pthread_mutex_lock(&conn->lock); if (conn_setup(conn)) { conn->last_transfer = gettime();