Author: Kev <klmitch@mit.edu>
Log message:
Fix G-line bugs reguarding U-lined servers that Maniac- pointed out; fix a
bug in /list
1) If a new server signed on and a U-lined server re-issued a G-line,
intermediate servers would not pass on that message. Logic has been
added to detect that it's a re-issued G-line, and the existing G-line is
repropagated. Note that the expire time used is the time we think the
G-line has left, not what the U-lined server tells us.
2) If a U-lined server attempted to revoke a G-line, and we didn't have
that G-line, not only would we ignore the message, we would fail to
propagate it and return a "not enough parameters" reply. Corrected by
manually repropagating the G-line removal.
3) If a U-lined server attempted to add (or update, or re-issue) a G-line
we knew about, that G-line's lastmod time would be updated, causing us
to no longer consider the G-line as having been issued by a U-lined
server. This causes promotions we don't want occuring. Corrected by
prohibiting lastmod updates when the existing lastmod is 0.
4) The /list command would not deal properly with "LIST #channel", but
would do the right thing if we did "LIST #channel <anything else>".
This was just a logic inversion problem--I said "parc != 2" when I meant
"parc == 2".
Testing:
The /list command now works correctly. G-lines issued by U-lined servers
are doing the right thing. I have not checked that G-lines issued by opers
are still working correctly, so this needs to be checked. Also, all forms
of local G-line need to be double-checked.
git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/trunk@384
c9e4aea6-c8fd-4c43-8297-
357d70d61c8c