Function: erc-dcc-server

erc-dcc-server is a byte-compiled function defined in erc-dcc.el.gz.

Signature

(erc-dcc-server NAME FILTER SENTINEL)

Documentation

Start listening on a port for an incoming DCC connection.

Returns the newly created subprocess, or nil.

Source Code

;; Defined in /usr/src/emacs/lisp/erc/erc-dcc.el.gz
(defun erc-dcc-server (name filter sentinel)
  "Start listening on a port for an incoming DCC connection.
Returns the newly created subprocess, or nil."
  (let ((port (or (and erc-dcc-port-range (car erc-dcc-port-range)) t))
        (upper (and erc-dcc-port-range (cdr erc-dcc-port-range)))
        process)
    (while (not process)
      (condition-case err
          (progn
            (setq process
                  (make-network-process :name name
                                        :buffer nil
                                        :host (erc-dcc-host)
                                        :service port
                                        :noquery nil
                                        :filter filter
                                        :sentinel sentinel
                                        :log #'erc-dcc-server-accept
                                        :server t))
            (when (processp process)
              (when (fboundp 'set-process-coding-system)
                (set-process-coding-system process 'binary 'binary))))
        (file-error
         (unless (and (string= "Cannot bind server socket" (nth 1 err))
                      (string= "address already in use" (downcase (nth 2 err))))
           (signal (car err) (cdr err)))
         (setq port (1+ port))
         (unless (< port upper)
           (error "No available ports in erc-dcc-port-range")))))
    process))