While writing the patch, I noted that the current ircd
doesn't copy the timestamp of a JOIN when it is older.
It has to do this (and I added that to the patch)
because otherwise it is possible to create a desync
in the following way:
|A:00/00<3623>|B:00/00<3623>|C:00/00<3623>| State OK
DESTRUCT
|A:00/00<3623>|B: <none>|C:00/00<3623>| A<B:{DESTRUCT<3623>}; B>C:{DESTRUCT<3623>}
JOIN
|A:01/01<3623>|B: <none>|C:00/00<3623>| A>B:{8689 JOIN<3623>};
|A<B:{DESTRUCT<3623>}; B>C:{DESTRUCT<3623>}
B>C:{DESTRUCT<3623>}
|A:01/01<3623>|B: <none>|C: <none>| A>B:{8689 JOIN<3623>};
|A<B:{DESTRUCT<3623>}; B<C:{DESTRUCT<3623>}
PART
|A:00/00<3623>|B: <none>|C: <none>| A>B:{8689 PART} {8689 JOIN<3623>};
|A<B:{DESTRUCT<3623>}; B<C:{DESTRUCT<3623>}
A<B:{DESTRUCT<3623>}
|A: <none>|B: <none>|C: <none>| A>B:{DESTRUCT<3623>} {8689 PART} {8689
|JOIN<3623>}; B<C:{DESTRUCT<3623>}
CREATE<3624>
|A: <none>|B: <none>|C:01/01<3624>| A>B:{DESTRUCT<3623>} {8689 PART} {8689
|JOIN<3623>}; B<C:{8690 CREATE<3624>} {DESTRUCT<3623>}
|A: <none>|B: <none>|C:01/01<3624>| A>B:{DESTRUCT<3623>} {8689 PART} {8689
|JOIN<3623>}; B<C:{8690 CREATE<3624>}
A>B:{8689 JOIN<3623>}
|A: <none>|B:01/00<3623>|C:01/01<3624>| A>B:{DESTRUCT<3623>} {8689 PART};
|B>C:{8689 JOIN<3623>}; B<C:{8690 CREATE<3624>}
B>C:{8689 JOIN<3623>}
*** Here the JOIN should have set the TS to 3623 instead of leaving it at 3624 ***
|A: <none>|B:01/00<3623>|C:02/01<3624>| A>B:{DESTRUCT<3623>} {8689 PART};
|B<C:{8690 CREATE<3624>}
A>B:{8689 PART}
|A: <none>|B:00/00<3623>|C:02/01<3624>| A>B:{DESTRUCT<3623>}; B>C:{8689 PART};
|B<C:{8690 CREATE<3624>}
B<C:{8690 CREATE<3624>}
|A: <none>|B:01/00<3623>|C:02/01<3624>| A>B:{DESTRUCT<3623>}; A<B:{8690
|JOIN<3623>}; B>C:{8689 PART}
B>C:{8689 PART}
|A: <none>|B:01/00<3623>|C:01/01<3624>| A>B:{DESTRUCT<3623>}; A<B:{8690 JOIN<3623>}
A<B:{8690 JOIN<3623>}
|A:01/00<3623>|B:01/00<3623>|C:01/01<3624>| A>B:{DESTRUCT<3623>}
A>B:{DESTRUCT<3623>}
|A:01/00<3623>|B:01/00<3623>|C:01/01<3624>| A<B:{BURST<3623>8690}
A<B:{BURST<3623>8690}
|A:01/00<3623>|B:01/00<3623>|C:01/01<3624>| State of C differs from state of A!
--
Carlo Wood <[EMAIL PROTECTED]>