summaryrefslogtreecommitdiff
path: root/src/map/intif.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/intif.c')
-rw-r--r--src/map/intif.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/map/intif.c b/src/map/intif.c
index 6ad29368e..7130f2820 100644
--- a/src/map/intif.c
+++ b/src/map/intif.c
@@ -1438,6 +1438,7 @@ int intif_parse_Mail_inboxreceived(int fd)
//FIXME: this operation is not safe [ultramage]
memcpy(&sd->mail.inbox, RFIFOP(fd,9), sizeof(struct mail_data));
+ sd->mail.changed = false; // cache is now in sync
if (flag)
clif_Mail_refreshinbox(sd);
@@ -1634,7 +1635,9 @@ static void intif_parse_Mail_send(int fd)
memcpy(&msg, RFIFOP(fd,4), sizeof(struct mail_message));
fail = (msg.id == 0);
- if( (sd = map_charid2sd(msg.send_id)) )
+ // notify sender
+ sd = map_charid2sd(msg.send_id);
+ if( sd != NULL )
{
if( fail )
mail_deliveryfail(sd, &msg);
@@ -1649,9 +1652,11 @@ static void intif_parse_Mail_send(int fd)
if( fail )
return;
- if( (sd = map_charid2sd(msg.dest_id)) )
+ // notify recipient (if online)
+ sd = map_charid2sd(msg.dest_id);
+ if( sd != NULL )
{
- sd->mail.inbox.changed = true;
+ sd->mail.changed = true;
clif_Mail_new(sd->fd, msg.id, msg.send_name, msg.title);
}
}
@@ -1666,7 +1671,7 @@ static void intif_parse_Mail_new(int fd)
if( sd == NULL )
return;
- sd->mail.inbox.changed = true;
+ sd->mail.changed = true;
clif_Mail_new(sd->fd, mail_id, sender_name, title);
}