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]>