X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=site.c;h=37968896ccb50f1d07370a7ff582d1697a158327;hb=c43eabefac47d5cc1f2031e2bf677a25a88b6d48;hp=a91d6c91cd86aa6681b932df5a1d5ed7339a5374;hpb=5c18093b44392ce2370990e08367f6db53ad4035;p=secnet.git diff --git a/site.c b/site.c index a91d6c9..3796889 100644 --- a/site.c +++ b/site.c @@ -1828,9 +1828,24 @@ static bool_t named_for_us(struct site *st, const struct buffer_if *buf_in, { struct buffer_if buf[1]; buffer_readonly_clone(buf,buf_in); - return unpick_msg(st,type,buf,m) - && name_matches(&m->remote,st->remotename) - && name_matches(&m->local,st->localname); + + if (!unpick_msg(st,type,buf,m)) { + priomsg_update_fixed(whynot, comm_notify_whynot_unpick, "malformed"); + return False; + } +#define NAME_MATCHES(lr) \ + if (!name_matches(&m->lr, st->lr##name)) { \ + if (priomsg_update_fixed(whynot, comm_notify_whynot_name_##lr, \ + "unknown " #lr " name: ")) { \ + truncmsg_add_packet_string(&whynot->m, m->lr.len, m->lr.name); \ + } \ + return False; \ + } + NAME_MATCHES(remote); + NAME_MATCHES(local ); +#undef NAME_MATCHES + + return True; } static bool_t we_have_priority(struct site *st, const struct msg *m) { @@ -2074,6 +2089,8 @@ static bool_t site_incoming(void *sst, struct buffer_if *buf, return True; } + priomsg_update_fixed(whynot, comm_notify_whynot_general, + "not MSG1 or PROD; unknown dest index"); return False; }