diff --git a/ChangeLog b/ChangeLog index 9903cc00c..860de326f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +jilles 2007/03/28 15:04:06 UTC (20070328-3301) + Log: + Merge old trunk r2835: + resolver: if sendto(2) fails, try sending to the next nameserver + + + Changes: Modified: + +1 -1 trunk/src/res.c (File Modified) + + jilles 2007/03/28 14:54:10 UTC (20070328-3299) Log: Merge old trunk r2817: diff --git a/doc/sgml/oper-guide/commands.sgml b/doc/sgml/oper-guide/commands.sgml index 52e05174d..b2e72d877 100644 --- a/doc/sgml/oper-guide/commands.sgml +++ b/doc/sgml/oper-guide/commands.sgml @@ -532,6 +532,10 @@ in use. As of charybdis 2.1.1, no_tilde and username truncation will be taken into account like in the normal client access check. + + As of charybdis 2.2.0, a channel name can be specified and the + RESV will be returned, if there is one. + TESTMASK diff --git a/help/opers/testline b/help/opers/testline index 5efbd8dc7..c083843b7 100644 --- a/help/opers/testline +++ b/help/opers/testline @@ -6,3 +6,7 @@ If nickname is specified it will also search for RESVs. This command will not perform dns lookups on a host, for best results you must testline a host and its IP form. + +TESTLINE <#channel> + +Shows whether the channel is reserved or not. diff --git a/include/serno.h b/include/serno.h index 6db3815b9..415152b6b 100644 --- a/include/serno.h +++ b/include/serno.h @@ -1 +1 @@ -#define SERNO "20070328-3299" +#define SERNO "20070328-3301" diff --git a/modules/m_testline.c b/modules/m_testline.c index c57bd0956..ca5930b36 100644 --- a/modules/m_testline.c +++ b/modules/m_testline.c @@ -27,7 +27,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: m_testline.c 2757 2006-11-10 22:58:15Z jilles $ + * $Id: m_testline.c 3303 2007-03-28 15:22:49Z jilles $ */ #include "stdinc.h" #include "tools.h" @@ -35,6 +35,7 @@ #include "client.h" #include "modules.h" #include "msg.h" +#include "hash.h" #include "hostmask.h" #include "numeric.h" #include "s_conf.h" @@ -54,7 +55,7 @@ struct Message testgecos_msgtab = { }; mapi_clist_av1 testline_clist[] = { &testline_msgtab, &testgecos_msgtab, NULL }; -DECLARE_MODULE_AV1(testline, NULL, NULL, testline_clist, NULL, NULL, "$Revision: 2757 $"); +DECLARE_MODULE_AV1(testline, NULL, NULL, testline_clist, NULL, NULL, "$Revision: 3303 $"); static int mo_testline(struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) @@ -73,6 +74,27 @@ mo_testline(struct Client *client_p, struct Client *source_p, int parc, const ch mask = LOCAL_COPY(parv[1]); + if (IsChannelName(mask)) + { + resv_p = hash_find_resv(mask); + if (resv_p != NULL) + { + sendto_one(source_p, form_str(RPL_TESTLINE), + me.name, source_p->name, + resv_p->hold ? 'q' : 'Q', + resv_p->hold ? (long) ((resv_p->hold - CurrentTime) / 60) : 0L, + resv_p->name, resv_p->passwd); + /* this is a false positive, so make sure it isn't counted in stats q + * --nenolod + */ + resv_p->port--; + } + else + sendto_one(source_p, form_str(RPL_NOTESTLINE), + me.name, source_p->name, parv[1]); + return 0; + } + if((p = strchr(mask, '!'))) { *p++ = '\0';