X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=ircd%2Fm_join.c;h=50ddfc761f39a59faf296639a2e9efdf5147a780;hb=1b8501f2dc84cd83ae9ad7464c57fe012ab4eada;hp=e8f9bebe7172bdc1aecaa038752e28b0a2969f9e;hpb=506ac42b503539ee8262fb5507d0648f4ce12015;p=ircu2.10.12-pk.git diff --git a/ircd/m_join.c b/ircd/m_join.c index e8f9beb..50ddfc7 100644 --- a/ircd/m_join.c +++ b/ircd/m_join.c @@ -332,6 +332,7 @@ int ms_join(struct Client *cptr, struct Client *sptr, int parc, char *parv[]) } else { /* We have a valid channel? */ if ((member = find_member_link(chptr, sptr))) { + /* It is impossible to get here --Run */ if (!IsZombie(member)) /* already on channel */ continue; @@ -340,6 +341,10 @@ int ms_join(struct Client *cptr, struct Client *sptr, int parc, char *parv[]) chptr = FindChannel(name); } else flags = CHFL_DEOPPED | ((cli_flags(sptr) & FLAGS_TS8) ? CHFL_SERVOPOK : 0); + /* Always copy the timestamp when it is older, that is the only way to + ensure network-wide synchronization of creation times. */ + if (creation && creation < chptr->creationtime) + chptr->creationtime = creation; } joinbuf_join(&join, chptr, flags);