Function: socks--open-network-stream

socks--open-network-stream is a byte-compiled function defined in socks.el.gz.

Signature

(socks--open-network-stream ORIG-FUN NAME BUFFER HOST SERVICE &rest PARAMS)

Source Code

;; Defined in /usr/src/emacs/lisp/net/socks.el.gz
(defun socks--open-network-stream (orig-fun name buffer host service &rest params)
  (let ((route (and socks-override-functions
                    (socks-find-route host service))))
    (if (not route)
	(apply orig-fun name buffer host service params)
      ;; FIXME: Obey `params'!
      (let* ((proc (socks-open-connection route))
	     (version (process-get proc 'socks-server-protocol))
             (atype
              (cond
               ((equal version 4)
                (setq host (socks-nslookup-host host))
                (if (not (listp host))
                    (error "Could not get IP address for: %s" host))
		(setq host (apply #'unibyte-string host))
                socks-address-type-v4)
               (t
                socks-address-type-name))))
        (socks-send-command proc
			    socks-connect-command
			    atype
			    host
			    (if (stringp service)
                                (or
                                 (socks-find-services-entry service)
                                 (error "Unknown service: %s" service))
			      service))
        (process-put proc 'socks-buffer buffer)
        (process-put proc 'socks-host host)
        (process-put proc 'socks-service service)
        (set-process-filter proc nil)
        (set-process-buffer proc (if buffer (get-buffer-create buffer)))
        proc))))