]> code.delx.au - gnu-emacs/blobdiff - lisp/net/tramp-gw.el
Merge changes made in Gnus trunk.
[gnu-emacs] / lisp / net / tramp-gw.el
index 2f630e8f1f2cc6a41916113347feb972f21d3f28..a550d46b9b51c11c3bdc83b5d8ea285f58d24f4a 100644 (file)
@@ -1,9 +1,10 @@
 ;;; tramp-gw.el --- Tramp utility functions for HTTP tunnels and SOCKS gateways
 
-;; Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 
 ;; Author: Michael Albinus <michael.albinus@gmx.de>
 ;; Keywords: comm, processes
+;; Package: tramp
 
 ;; This file is part of GNU Emacs.
 
   (require 'cl)
   (require 'custom))
 
-;; Autoload the socks library.  It is used only when we access a SOCKS server.
-(autoload 'socks-open-network-stream "socks")
-(defvar socks-username (user-login-name))
-(defvar socks-server (list "Default server" "socks" 1080 5))
-
 ;; Avoid byte-compiler warnings if the byte-compiler supports this.
 ;; Currently, XEmacs supports this.
 (eval-when-compile
       (byte-compiler-options (warnings (- unused-vars)))))
 
 ;; Define HTTP tunnel method ...
-(defvar tramp-gw-tunnel-method "tunnel"
+;;;###tramp-autoload
+(defconst tramp-gw-tunnel-method "tunnel"
   "*Method to connect HTTP gateways.")
 
 ;; ... and port.
-(defvar tramp-gw-default-tunnel-port 8080
+(defconst tramp-gw-default-tunnel-port 8080
   "*Default port for HTTP gateways.")
 
 ;; Define SOCKS method ...
-(defvar tramp-gw-socks-method "socks"
+;;;###tramp-autoload
+(defconst tramp-gw-socks-method "socks"
   "*Method to connect SOCKS servers.")
 
 ;; ... and port.
-(defvar tramp-gw-default-socks-port 1080
+(defconst tramp-gw-default-socks-port 1080
   "*Default port for SOCKS servers.")
 
+;; Autoload the socks library.  It is used only when we access a SOCKS server.
+(autoload 'socks-open-network-stream "socks")
+(defvar socks-username (user-login-name))
+(defvar socks-server
+  (list "Default server" "socks" tramp-gw-default-socks-port 5))
+
 ;; Add a default for `tramp-default-user-alist'.  Default is the local user.
 (add-to-list 'tramp-default-user-alist
             `(,tramp-gw-tunnel-method nil ,(user-login-name)))
     (process-send-string
      (tramp-get-connection-property proc "process" nil) string)))
 
+;;;###tramp-autoload
 (defun tramp-gw-open-connection (vec gw-vec target-vec)
   "Open a remote connection to VEC (see `tramp-file-name' structure).
 Take GW-VEC as SOCKS or HTTP gateway, i.e. its method must be a
@@ -238,10 +243,9 @@ authentication is requested from proxy server, provide it."
        ;; Trap errors to be traced in the right trace buffer.  Often,
        ;; proxies have a timeout of 60".  We wait 65" in order to
        ;; receive an answer this case.
-       (condition-case nil
-           (let (tramp-verbose)
-             (tramp-wait-for-regexp proc 65 "\r?\n\r?\n"))
-         (error nil))
+       (ignore-errors
+         (let (tramp-verbose)
+           (tramp-wait-for-regexp proc 65 "\r?\n\r?\n")))
        ;; Check return code.
        (goto-char (point-min))
        (narrow-to-region
@@ -309,6 +313,9 @@ password in password cache.  This is done for the first try only."
        (format
         "Password for %s@[%s]: " socks-username (read (current-buffer)))))))))
 
+(add-hook 'tramp-unload-hook
+         (lambda ()
+           (unload-feature 'tramp-gw 'force)))
 
 (provide 'tramp-gw)