summaryrefslogtreecommitdiff
path: root/src/map/clif.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/clif.c')
-rw-r--r--src/map/clif.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/map/clif.c b/src/map/clif.c
index 2c6b3e742..007df2928 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -4534,6 +4534,10 @@ void clif_skillinfoblock(struct map_session_data *sd)
{
if( (id = sd->status.skill[i].id) != 0 )
{
+ // workaround for bugreport:5348
+ if (len + 37 > socket_max_client_packet)
+ break;
+
WFIFOW(fd,len) = id;
WFIFOL(fd,len+2) = skill_get_inf(id);
WFIFOW(fd,len+6) = sd->status.skill[i].lv;
@@ -4549,6 +4553,16 @@ void clif_skillinfoblock(struct map_session_data *sd)
}
WFIFOW(fd,2)=len;
WFIFOSET(fd,len);
+
+ // workaround for bugreport:5348; send the remaining skills one by one to bypass packet size limit
+ for ( ; i < MAX_SKILL; i++)
+ {
+ if( (id = sd->status.skill[i].id) != 0 )
+ {
+ clif_addskill(sd, id);
+ clif_skillinfo(sd, id, 0);
+ }
+ }
}
/**
* Server tells client 'sd' to add skill of id 'id' to it's skill tree (e.g. with Ice Falcion item)