--- /dev/null
+--- 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();