/* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include #include "ares.h" #include "ares_private.h" /* * ares_cancel() cancels a ongoing request/resolve that might be going on on * the given channel. It does NOT kill the channel, use ares_destroy() for * that. */ void ares_cancel(ares_channel channel) { struct query *query, *next; int i; for (query = channel->queries; query; query = next) { next = query->next; query->callback(query->arg, ARES_ETIMEOUT, NULL, 0); free(query->tcpbuf); free(query->skip_server); free(query); } channel->queries = NULL; if (!(channel->flags & ARES_FLAG_STAYOPEN)) { for (i = 0; i < channel->nservers; i++) ares__close_sockets(&channel->servers[i]); } }