#include "client.h"
#include "hash.h"
#include "ircd.h"
+#include "ircd_log.h"
#include "ircd_reply.h"
#include "ircd_string.h"
#include "msg.h"
#include "s_user.h"
#include "send.h"
-#include <assert.h>
+/* #include <assert.h> -- Now using assert in ircd_log.h */
#include <stdlib.h>
#include <string.h>
"SETTIME to correct this",
cli_user(sptr)->server,
chanTS - TStime());
- /* If this server is >5 minutes fast, squit it */
- if (TStime() - chanTS<-5*60*60)
- return exit_client(sptr, sptr, &me, "Timestamp Drift/Bogus TS");
/* Now issue a SETTIME to resync. If we're in the wrong, our
* (RELIABLE_CLOCK) hub will bounce a SETTIME back to us.
*/
joinbuf_init(&join, sptr, cptr, JOINBUF_TYPE_JOIN, 0, 0);
joinbuf_init(&create, sptr, cptr, JOINBUF_TYPE_CREATE, 0, chanTS);
-
- /* For each channel in the comma seperated list: */
+ /* For each channel in the comma separated list: */
for (name = ircd_strtok(&p, parv[1], ","); name;
name = ircd_strtok(&p, 0, ",")) {
badop = 0;
if ((chptr = FindChannel(name)))
{
- name = chptr->chname;
+ /* Is the remote server confused? */
+ if (find_member_link(chptr, sptr)) {
+ protocol_violation(sptr, "%s tried to CREATE a channel already joined", cli_name(sptr));
+ continue;
+ }
/* Check if we need to bounce a mode */
if (TStime() - chanTS > TS_LAG_TIME ||
chptr->creationtime = chanTS;
joinbuf_join(badop ? &join : &create, chptr,
- (badop || CHFL_CHANOP));
+ (badop ? 0 : CHFL_CHANOP));
}
joinbuf_flush(&join); /* flush out the joins and creates */