Revision: mange@freemail.hu--2005/emacs-jabber--cvs-head--0--patch-295
Creator: Magnus Henoch <mange@freemail.hu> Fix file transfer bugs
This commit is contained in:
parent
316e9440f3
commit
df93b39b44
|
@ -70,7 +70,7 @@ Each entry is a list, containing:
|
||||||
(let* ((profile-accept-function (nth 1 profile-data))
|
(let* ((profile-accept-function (nth 1 profile-data))
|
||||||
;; accept-function might throw a "forbidden" error
|
;; accept-function might throw a "forbidden" error
|
||||||
;; on user cancel
|
;; on user cancel
|
||||||
(profile-response (funcall profile-accept-function xml-data))
|
(profile-response (funcall profile-accept-function jc xml-data))
|
||||||
(profile-connected-function (nth 2 profile-data))
|
(profile-connected-function (nth 2 profile-data))
|
||||||
(stream-method-id (nth 1 (assoc "stream-method" stream-method)))
|
(stream-method-id (nth 1 (assoc "stream-method" stream-method)))
|
||||||
(stream-data (assoc stream-method-id jabber-si-stream-methods))
|
(stream-data (assoc stream-method-id jabber-si-stream-methods))
|
||||||
|
|
|
@ -137,11 +137,11 @@ set; the target waits for one."
|
||||||
'initiate))))
|
'initiate))))
|
||||||
(list new-state new-state-data nil))))
|
(list new-state new-state-data nil))))
|
||||||
|
|
||||||
(defun jabber-socks5-accept (jid sid profile-function)
|
(defun jabber-socks5-accept (jc jid sid profile-function)
|
||||||
"Remember that we are waiting for connection from JID, with stream id SID"
|
"Remember that we are waiting for connection from JID, with stream id SID"
|
||||||
;; asking the user for permission is done in the profile
|
;; asking the user for permission is done in the profile
|
||||||
(add-to-list 'jabber-socks5-pending-sessions
|
(add-to-list 'jabber-socks5-pending-sessions
|
||||||
(list sid jid (start-jabber-socks5 jid sid profile-function :target))))
|
(list sid jid (start-jabber-socks5 jc jid sid profile-function :target))))
|
||||||
|
|
||||||
(define-enter-state jabber-socks5 seek-proxies (fsm state-data)
|
(define-enter-state jabber-socks5 seek-proxies (fsm state-data)
|
||||||
;; Look for items at the server.
|
;; Look for items at the server.
|
||||||
|
@ -344,7 +344,7 @@ set; the target waits for one."
|
||||||
;; This is where we would attempt to support zeroconf
|
;; This is where we would attempt to support zeroconf
|
||||||
(when (and jid host port)
|
(when (and jid host port)
|
||||||
(start-jabber-socks5-connection
|
(start-jabber-socks5-connection
|
||||||
initiator-jid target-jid jid
|
jc initiator-jid target-jid jid
|
||||||
(plist-get state-data :sid) host port fsm))))
|
(plist-get state-data :sid) host port fsm))))
|
||||||
|
|
||||||
(list 'wait-for-connection (plist-put state-data :iq-id (jabber-xml-get-attribute xml-data 'id)) 30))
|
(list 'wait-for-connection (plist-put state-data :iq-id (jabber-xml-get-attribute xml-data 'id)) 30))
|
||||||
|
@ -361,14 +361,14 @@ set; the target waits for one."
|
||||||
(jid host port) streamhost
|
(jid host port) streamhost
|
||||||
(when (and jid host port)
|
(when (and jid host port)
|
||||||
(start-jabber-socks5-connection
|
(start-jabber-socks5-connection
|
||||||
initiator-jid target-jid jid
|
jc initiator-jid target-jid jid
|
||||||
(plist-get state-data :sid) host port fsm)))))
|
(plist-get state-data :sid) host port fsm)))))
|
||||||
|
|
||||||
(list 'wait-for-connection state-data 30))))))))
|
(list 'wait-for-connection state-data 30))))))))
|
||||||
|
|
||||||
(define-state-machine jabber-socks5-connection
|
(define-state-machine jabber-socks5-connection
|
||||||
:start
|
:start
|
||||||
((initiator-jid target-jid streamhost-jid sid host port socks5-fsm)
|
((jc initiator-jid target-jid streamhost-jid sid host port socks5-fsm)
|
||||||
"Connect to a single JEP-0065 streamhost."
|
"Connect to a single JEP-0065 streamhost."
|
||||||
(let ((coding-system-for-read 'binary)
|
(let ((coding-system-for-read 'binary)
|
||||||
(coding-system-for-write 'binary))
|
(coding-system-for-write 'binary))
|
||||||
|
@ -385,7 +385,8 @@ set; the target waits for one."
|
||||||
:filter (fsm-make-filter fsm)
|
:filter (fsm-make-filter fsm)
|
||||||
:sentinel (fsm-make-sentinel fsm))))
|
:sentinel (fsm-make-sentinel fsm))))
|
||||||
(list 'wait-for-connection
|
(list 'wait-for-connection
|
||||||
(list :connection connection
|
(list :jc jc
|
||||||
|
:connection connection
|
||||||
:initiator-jid initiator-jid
|
:initiator-jid initiator-jid
|
||||||
:target-jid target-jid
|
:target-jid target-jid
|
||||||
:streamhost-jid streamhost-jid
|
:streamhost-jid streamhost-jid
|
||||||
|
@ -400,7 +401,8 @@ set; the target waits for one."
|
||||||
(set-process-filter connection (fsm-make-filter fsm))
|
(set-process-filter connection (fsm-make-filter fsm))
|
||||||
(set-process-sentinel connection (fsm-make-sentinel fsm))
|
(set-process-sentinel connection (fsm-make-sentinel fsm))
|
||||||
(list 'authenticate
|
(list 'authenticate
|
||||||
(list :connection connection
|
(list :jc jc
|
||||||
|
:connection connection
|
||||||
:initiator-jid initiator-jid
|
:initiator-jid initiator-jid
|
||||||
:target-jid target-jid
|
:target-jid target-jid
|
||||||
:streamhost-jid streamhost-jid
|
:streamhost-jid streamhost-jid
|
||||||
|
@ -576,7 +578,8 @@ set; the target waits for one."
|
||||||
|
|
||||||
(define-state jabber-socks5 stream-activated
|
(define-state jabber-socks5 stream-activated
|
||||||
(fsm state-data event callback)
|
(fsm state-data event callback)
|
||||||
(let ((connection (plist-get state-data :connection))
|
(let ((jc (plist-get state-data :jc))
|
||||||
|
(connection (plist-get state-data :connection))
|
||||||
(profile-data-function (plist-get state-data :profile-data-function))
|
(profile-data-function (plist-get state-data :profile-data-function))
|
||||||
(sid (plist-get state-data :sid))
|
(sid (plist-get state-data :sid))
|
||||||
(jid (plist-get state-data :jid)))
|
(jid (plist-get state-data :jid)))
|
||||||
|
@ -588,7 +591,7 @@ set; the target waits for one."
|
||||||
((eq (car-safe event) :filter)
|
((eq (car-safe event) :filter)
|
||||||
;; Pass data from connection to profile data function
|
;; Pass data from connection to profile data function
|
||||||
;; If the data function requests it, tear down the connection.
|
;; If the data function requests it, tear down the connection.
|
||||||
(unless (funcall profile-data-function jid sid (third event))
|
(unless (funcall profile-data-function jc jid sid (third event))
|
||||||
(fsm-send fsm (list :sentinel (second event) "shutdown")))
|
(fsm-send fsm (list :sentinel (second event) "shutdown")))
|
||||||
|
|
||||||
(list 'stream-activated state-data nil))
|
(list 'stream-activated state-data nil))
|
||||||
|
@ -597,7 +600,7 @@ set; the target waits for one."
|
||||||
;; Connection terminated. Shuffle together the remaining data,
|
;; Connection terminated. Shuffle together the remaining data,
|
||||||
;; and kill the buffer.
|
;; and kill the buffer.
|
||||||
(delete-process (second event))
|
(delete-process (second event))
|
||||||
(funcall profile-data-function jid sid nil)
|
(funcall profile-data-function jc jid sid nil)
|
||||||
(list 'closed nil nil))
|
(list 'closed nil nil))
|
||||||
|
|
||||||
;; Stray events from earlier state
|
;; Stray events from earlier state
|
||||||
|
|
Loading…
Reference in New Issue
Block a user