Simplify how typed_wu() counts telegrams
typed_wu() counts telegrams to update nat_tgms and, since Empire 2, send C_INFORM messages. Adjacent telegrams are squashed together if type and sender are the same, and the timestamp is within TEL_SECONDS. typed_wu() increments nat_tgms when it sends a telegram that read doesn't squash into the previous one. Since Empire 2, it also sends a C_INFORM message then. Inexplicably, it fails to use the same condition: it tests just new_tele, not new_tele || np->nat_tgms == 0. C_INFORM messages got missed, until 4.0.18 made rea() call clear_telegram_is_new(). Convoluted. Send C_INFORM exactly when incrementing nat_tgms, and back out 4.0.18's fix.
This commit is contained in:
parent
a5bcb63b85
commit
a0b82b8d46
2 changed files with 11 additions and 12 deletions
|
@ -99,7 +99,6 @@ rea(void)
|
|||
may_delete = 0;
|
||||
}
|
||||
mbox = mailbox(mbox_buf, num);
|
||||
clear_telegram_is_new(player->cnum);
|
||||
}
|
||||
|
||||
if (!(telfp = fopen(mbox, "rb+"))) {
|
||||
|
|
|
@ -120,7 +120,6 @@ typed_wu(natid from, natid to, char *message, int type)
|
|||
struct iovec iov[2];
|
||||
int fd;
|
||||
char box[1024];
|
||||
int new_tele = 0;
|
||||
struct player *other;
|
||||
|
||||
if (type == TEL_ANNOUNCE)
|
||||
|
@ -170,12 +169,12 @@ typed_wu(natid from, natid to, char *message, int type)
|
|||
putnat(np);
|
||||
}
|
||||
} else {
|
||||
new_tele = telegram_is_new(to, &tel);
|
||||
np->nat_tgms += new_tele || np->nat_tgms == 0;
|
||||
if (!np->nat_tgms || telegram_is_new(to, &tel)) {
|
||||
np->nat_tgms++;
|
||||
putnat(np);
|
||||
|
||||
if (new_tele && np->nat_flags & NF_INFORM) {
|
||||
if (NULL != (other = getplayer(to))) {
|
||||
if (np->nat_flags & NF_INFORM) {
|
||||
other = getplayer(to);
|
||||
if (other) {
|
||||
if (np->nat_tgms == 1)
|
||||
pr_inform(other, "[new tele]\n");
|
||||
else
|
||||
|
@ -183,6 +182,7 @@ typed_wu(natid from, natid to, char *message, int type)
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue