mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-04-28 01:00:52 -07:00
Allow exemption from flood penalty in erc-backend
* lisp/erc/erc-backend (erc-server-send, erc-server-PING): Change name of param `forcep' in `erc-server-send' to `force' and change its type to the union of the symbol `no-penalty' and the set of all other non-nil values. In `erc-server-PING', use this exemption when calling `erc-server-send'. This fix was fast tracked and summarily incorporated into bug#48598 because users of the soju bouncer are all affected. See update #5 in the bug's email thread under the section entitled "Riders" for an explanation.
This commit is contained in:
parent
c5b78a3379
commit
873499ce06
1 changed files with 10 additions and 9 deletions
|
|
@ -815,11 +815,12 @@ Use DISPLAY-FN to show the results."
|
|||
(erc-split-line text)))
|
||||
|
||||
;; From Circe, with modifications
|
||||
(defun erc-server-send (string &optional forcep target)
|
||||
(defun erc-server-send (string &optional force target)
|
||||
"Send STRING to the current server.
|
||||
If FORCEP is non-nil, no flood protection is done - the string is
|
||||
sent directly. This might cause the messages to arrive in a wrong
|
||||
order.
|
||||
When FORCE is non-nil, bypass flood protection so that STRING is
|
||||
sent directly without modifying the queue. When FORCE is the
|
||||
symbol `no-penalty', exempt this round from accumulating a
|
||||
timeout penalty.
|
||||
|
||||
If TARGET is specified, look up encoding information for that
|
||||
channel in `erc-encoding-coding-alist' or
|
||||
|
|
@ -835,11 +836,11 @@ protection algorithm."
|
|||
(if (erc-server-process-alive)
|
||||
(erc-with-server-buffer
|
||||
(let ((str (concat string "\r\n")))
|
||||
(if forcep
|
||||
(if force
|
||||
(progn
|
||||
(setq erc-server-flood-last-message
|
||||
(+ erc-server-flood-penalty
|
||||
erc-server-flood-last-message))
|
||||
(unless (eq force 'no-penalty)
|
||||
(cl-incf erc-server-flood-last-message
|
||||
erc-server-flood-penalty))
|
||||
(erc-log-irc-protocol str 'outbound)
|
||||
(condition-case nil
|
||||
(progn
|
||||
|
|
@ -1469,7 +1470,7 @@ add things to `%s' instead."
|
|||
(let ((pinger (car (erc-response.command-args parsed))))
|
||||
(erc-log (format "PING: %s" pinger))
|
||||
;; ping response to the server MUST be forced, or you can lose big
|
||||
(erc-server-send (format "PONG :%s" pinger) t)
|
||||
(erc-server-send (format "PONG :%s" pinger) 'no-penalty)
|
||||
(when erc-verbose-server-ping
|
||||
(erc-display-message
|
||||
parsed 'error proc
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue