XEP-0478: Be more verbose in error if max stanza size is exceeded.

This commit is contained in:
Martin Dosch 2024-03-28 18:07:23 +01:00
parent aef1257ed1
commit 416bb6e7b7

15
xmpp.go
View File

@ -1214,7 +1214,8 @@ func (c *Client) Send(chat Chat) (n int, err error) {
stanza := fmt.Sprintf("<message to='%s' type='%s' id='%s' xml:lang='en'>"+subtext+"<body>%s</body>"+oobtext+thdtext+"</message>\n",
xmlEscape(chat.Remote), xmlEscape(chat.Type), cnonce(), xmlEscape(chat.Text))
if c.LimitMaxBytes != 0 && len(stanza) > c.LimitMaxBytes {
return 0, errors.New("max. stanza size exceeded")
return 0, fmt.Errorf("stanza size (%v bytes) exceeds limit (%v bytes)",
len(stanza), c.LimitMaxBytes)
}
return fmt.Fprint(c.stanzaWriter, stanza)
@ -1236,7 +1237,8 @@ func (c *Client) SendOOB(chat Chat) (n int, err error) {
stanza := fmt.Sprintf("<message to='%s' type='%s' id='%s' xml:lang='en'>"+oobtext+thdtext+"</message>\n",
xmlEscape(chat.Remote), xmlEscape(chat.Type), cnonce())
if c.LimitMaxBytes != 0 && len(stanza) > c.LimitMaxBytes {
return 0, errors.New("max. stanza size exceeded")
return 0, fmt.Errorf("stanza size (%v bytes) exceeds limit (%v bytes)",
len(stanza), c.LimitMaxBytes)
}
return fmt.Fprint(c.stanzaWriter, stanza)
}
@ -1245,7 +1247,8 @@ func (c *Client) SendOOB(chat Chat) (n int, err error) {
func (c *Client) SendOrg(org string) (n int, err error) {
stanza := fmt.Sprint(org + "\n")
if c.LimitMaxBytes != 0 && len(stanza) > c.LimitMaxBytes {
return 0, errors.New("max. stanza size exceeded")
return 0, fmt.Errorf("stanza size (%v bytes) exceeds limit (%v bytes)",
len(stanza), c.LimitMaxBytes)
}
return fmt.Fprint(c.stanzaWriter, stanza)
}
@ -1293,7 +1296,8 @@ func (c *Client) SendPresence(presence Presence) (n int, err error) {
stanza := fmt.Sprintf(buf + "</presence>")
if c.LimitMaxBytes != 0 && len(stanza) > c.LimitMaxBytes {
return 0, errors.New("max. stanza size exceeded")
return 0, fmt.Errorf("stanza size (%v bytes) exceeds limit (%v bytes)",
len(stanza), c.LimitMaxBytes)
}
return fmt.Fprint(c.stanzaWriter, stanza)
}
@ -1309,7 +1313,8 @@ func (c *Client) SendHtml(chat Chat) (n int, err error) {
"<html xmlns='http://jabber.org/protocol/xhtml-im'><body xmlns='http://www.w3.org/1999/xhtml'>%s</body></html></message>\n",
xmlEscape(chat.Remote), xmlEscape(chat.Type), xmlEscape(chat.Text), chat.Text)
if c.LimitMaxBytes != 0 && len(stanza) > c.LimitMaxBytes {
return 0, errors.New("max. stanza size exceeded")
return 0, fmt.Errorf("stanza size (%v bytes) exceeds limit (%v bytes)",
len(stanza), c.LimitMaxBytes)
}
return fmt.Fprint(c.stanzaWriter, stanza)
}