]>
Commit | Line | Data |
---|---|---|
53e6db90 DC |
1 | ;ELC\1c\0\0\0 |
2 | ;;; Compiled | |
3 | ;;; in Emacs version 28.2 | |
4 | ;;; with all optimizations. | |
5 | ||
6 | ||
7 | ||
8 | (byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\210\300\306!\210\300\307!\207" [require cl-lib jabber-util jabber-logon jabber-conn fsm jabber-sasl jabber-console] 2) | |
9 | #@33 List of jabber-connection FSMs.\1f | |
10 | (defvar jabber-connections nil (#$ . 277)) | |
11 | #@18 The roster list.\1f | |
12 | (defvar *jabber-roster* nil (#$ . 358)) | |
13 | #@27 Obarray for keeping JIDs.\1f | |
14 | (defvar jabber-jid-obarray (make-vector 127 0) (#$ . 421)) | |
15 | #@62 Non-nil if are we in the process of voluntary disconnection.\1f | |
16 | (defvar *jabber-disconnecting* nil (#$ . 512)) | |
17 | #@58 Incoming messages are sent to these functions, in order.\1f | |
18 | (defvar jabber-message-chain nil (#$ . 626)) | |
19 | #@61 Incoming infoqueries are sent to these functions, in order.\1f | |
20 | (defvar jabber-iq-chain nil (#$ . 734)) | |
21 | #@72 Incoming presence notifications are sent to these functions, in order.\1f | |
22 | (defvar jabber-presence-chain nil (#$ . 840)) | |
23 | #@57 XML namespace prefixes used for the current connection.\1f | |
24 | (defvar jabber-namespace-prefixes nil (#$ . 963)) | |
25 | (byte-code "\300\301!\210\302\303\304\305\306\307%\210\310\311\312\313\314\315\316\317\306\303& \210\310\320\304\321\314\315\306\303&\a\210\310\322\304\323\314\315\306\303&\a\210\310\324\304\325\314\315\306\303&\a\210\310\326\304\327\314\330\306\303&\a\210\310\331\332\333\314\334\306\303&\a\210\310\335\336\337\314\340\306\303&\a\210\310\341\342\343\314\330\306\303&\a\207" [make-variable-buffer-local jabber-namespace-prefixes custom-declare-group jabber-core nil "customize core functionality." :group jabber custom-declare-variable jabber-post-connect-hooks '(jabber-send-current-presence jabber-muc-autojoin jabber-whitespace-ping-start jabber-vcard-avatars-find-current jabber-enable-carbons) "*Hooks run after successful connection and authentication.\nThe functions should accept one argument, the connection object." :type hook :options (jabber-send-current-presence jabber-muc-autojoin jabber-whitespace-ping-start jabber-keepalive-start jabber-vcard-avatars-find-current jabber-autoaway-start) jabber-pre-disconnect-hook "*Hooks run just before voluntary disconnection.\nThis might be due to failed authentication." jabber-lost-connection-hooks "*Hooks run after involuntary disconnection.\nThe functions are called with one argument: the connection object." jabber-post-disconnect-hook "*Hooks run after disconnection." jabber-auto-reconnect "Reconnect automatically after losing connection?\nThis will be of limited use unless you have the password library\ninstalled, and have configured it to cache your password\nindefinitely. See `password-cache' and `password-cache-expiry'." boolean jabber-reconnect-delay 5 "Seconds to wait before reconnecting." integer jabber-roster-buffer "*-jabber-roster-*" "The name of the roster buffer." string jabber-use-sasl t "If non-nil, use SASL if possible.\nSASL will still not be used if the library for it is missing or\nif the server doesn't support it.\n\nDisabling this shouldn't be necessary, but it may solve certain\nproblems."] 10) | |
26 | #@49 Return non-nil if SASL functions are available.\1f | |
27 | (defalias 'jabber-have-sasl-p #[nil "\300\301!\207" [featurep sasl] 2 (#$ . 3061)]) | |
28 | (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put jabber-have-sasl-p speed -1 put byte-optimizer byte-compile-inline-expand] 5) | |
29 | #@49 Keeps track of previously used jabber accounts.\1f | |
30 | (defvar jabber-account-history nil (#$ . 3343)) | |
31 | #@50 Keeps track of previously used connection types.\1f | |
32 | (defvar jabber-connection-type-history nil (#$ . 3445)) | |
33 | #@233 Connect to all configured Jabber accounts. | |
34 | See `jabber-account-list'. | |
35 | If no accounts are configured (or with prefix argument), call `jabber-connect' | |
36 | interactively. | |
37 | With many prefix arguments, one less is passed to `jabber-connect'.\1f | |
38 | (defalias 'jabber-connect-all #[(&optional arg) "\306\307\b\"\211\19\203\r\0\n\203*\0\n:\203!\0\n@\310V\205\"\0\n@\310\245C\202\"\0\n\e\311\312!)\202\242\0\313\314\f\"\315\1d\1e\19 \315\1e\1a\211\1e\e\203\230\0\ e\e@\16\1a\316\ e\1a@!\ e\19\235\204\217\0\ e\1a@\1e\1c\ e\1aA\1e\1d\317\ e\1d\236A\1e\1e\320\ e\1d\236A\1e\1f\321\ e\1d\236A\1e \322\ e\1d\236A\1e!\312\323\ e\1c!\324\ e\1c!\325\ e\1c!\315\ e\1e\ e\1f\ e \ e!&\b\210\326\15.\ 6\ e\eA\211\16\e\204<\0*\r?\205\241\0\327\330!*)\207" [jabber-account-list accounts arg current-prefix-arg jabber-connections connected-one cl-remove-if #[(account) "\301\bA\236A\207" [account :disabled] 2] 4 call-interactively jabber-connect mapcar jabber-connection-original-jid nil jabber-jid-user :password :network-server :port :connection-type jabber-jid-username jabber-jid-server jabber-jid-resource t message "All configured Jabber accounts are already connected" already-connected account --dolist-tail-- jid alist password network-server port connection-type] 10 (#$ . 3557) "P"]) | |
39 | #@169 Connect to the Jabber server and start a Jabber XML stream. | |
40 | With prefix argument, register a new account. | |
41 | With double prefix argument, specify more connection details.\1f | |
42 | (defalias 'jabber-connect #[(username server resource &optional registerp password network-server port connection-type) "\306\307!\210\b D\310\311\n\"\235\203\15\0\312\313\b #\207\314\b \v\f\r\ e\r\ e\ e\ e\ f&\b\nB\211\12\207" [username server jabber-connections resource registerp password require jabber mapcar #[(c) "\302\b!\19\303 \304\"\303 \305\")D\207" [c data fsm-get-state-data plist-get :username :server] 4] message "Already connected to %s@%s" start-jabber-connection network-server port connection-type] 9 (#$ . 4702) (let* ((jid (completing-read "Enter your JID: " jabber-account-list nil nil nil 'jabber-account-history)) (entry (assoc jid jabber-account-list)) (alist (cdr entry)) password network-server port connection-type registerp) (if (= 0 (length jid)) (progn (error "No JID specified"))) (if (jabber-jid-username jid) nil (error "Missing username part in JID")) (if entry (progn (setq password (cdr (assq :password alist))) (setq network-server (cdr (assq :network-server alist))) (setq port (cdr (assq :port alist))) (setq connection-type (cdr (assq :connection-type alist))))) (if (equal current-prefix-arg '(16)) (progn (setq password nil) (setq network-server (read-string (format "Network server: (default `%s') " network-server) nil nil network-server)) (if (= 0 (length network-server)) (progn (setq network-server nil))) (setq port (car (read-from-string (read-string (format "Port: (default `%s') " port) nil nil (if port (number-to-string port) "nil"))))) (setq connection-type (car (read-from-string (let ((default (symbol-name (or connection-type jabber-default-connection-type)))) (completing-read (format "Connection type: (default `%s') " default) (mapcar #'(lambda (type) (cons (symbol-name (car type)) nil)) jabber-connect-methods) nil t nil 'jabber-connection-type-history default))))) (setq registerp (or jabber-silent-mode (yes-or-no-p "Register new account? "))))) (if (equal current-prefix-arg '(4)) (progn (setq registerp t))) (list (jabber-jid-username jid) (jabber-jid-server jid) (jabber-jid-resource jid) registerp password network-server port connection-type))]) | |
43 | (byte-code "\300\301\302\303\304\305\306\307$#\210\300\301\310\303\304\305\306\307$#\207" [put jabber-connection :fsm-enter make-hash-table :size 11 :test eq :fsm-event] 8) | |
44 | #@28 Start a Jabber connection.\1f | |
45 | (defalias 'start-jabber-connection #[(username server resource registerp password network-server port connection-type) "\306\307\310\"\210\311\312!\18 \206\ e\0\n\19\313 !\e\314\315\v\316\f\317\rQ\320\f\321\r\322\ e'\323\ e(\324\ e)\325 \326 \327=\330\ e*\331\ e+\257\16*D\211\1e,A\203I\0\ e,\211A\16,\242\202Q\0\332\333\334\ e,GD\"\1e-\ e,\211A\16,\242\1e.\ e,\211A\16,\242\1e/\ e,\203u\0\332\333\334\335\ e,G\\D\"\210\336\b\337\310#\210\336\b\340\341#\210\336\b\342\341#\210\336\b\343\344#\210\336\b\345\341#\210\346\b\ e-\ e.\ e/$\210\b-\207" [fsm connection-type jabber-default-connection-type send-function username server fsm-debug-output "Starting %s" jabber-connection cl-gensym "fsm-jabber-connection-" jabber-get-send-function :connecting :send-function :original-jid "@" :username :server :resource :password :registerp :connection-type :encrypted ssl :network-server :port signal wrong-number-of-arguments (state state-data &optional timeout) 3 put :name :state nil :state-data :sleep #[(secs) "\301\302\b\"\207" [secs accept-process-output nil] 3] :deferred fsm-update resource password registerp network-server port #1=#:--cl-rest-- state state-data timeout] 24 (#$ . 7140)]) | |
46 | (byte-code "\304\305N\18\306\307\310\b#\210)\304\311N\19\306\307\312 #\210)\304\305N\1a\306\313\314\n#\210)\304\311N\e\306\313\315\v#\210)\307\207" [#:v #:v #:v #:v jabber-connection :fsm-enter puthash nil #[(fsm state-data) "\306\b\307\"\19\310 !\203\"\0\302 !\1a\311 !\210\312\n!\203!\0\v\204!\0\313\n!\210))\314\b\307\315#\10\316\317\f!!\210\320 \210\306\b\321\"\306\b\322\"\306\b\323\"\1d\1e\1f\211\1e \204k\0\324\325\f\"\210\326\327\306\b\330\"\306\b\331\"\306\b\332\"\203f\0\333\306\b\332\"P\202g\0\334\ e\1f%\210\ e!\203\200\0\ e \204\200\0\r\203\200\0\b\ e\"D\202\225\0\335\f\ e#\"\16#\ e$\203\217\0\336 \210\320 \210\b\315D+\207" [state-data connection process-buffer jabber-debug-keep-process-buffers fsm ever-session-established plist-get :connection processp delete-process bufferp kill-buffer plist-put nil jabber-muc-connection-closed jabber-connection-bare-jid jabber-display-roster :disconnection-expected :disconnection-reason :ever-session-established run-hook-with-args jabber-lost-connection-hooks message "%s@%s%s: connection lost: `%s'" :username :server :resource "/" "" delq jabber-mode-line-presence-update reason expected jabber-auto-reconnect jabber-reconnect-delay jabber-connections jabber-mode-line-mode] 9] :fsm-event #[(fsm state-data event callback) "\b\304\267\202\14\0\305 D\207\306\n\v\"\13\307 \307E\207\307\207" [event state-data fsm jabber-connections #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:timeout 6 :do-disconnect 10)) :connecting delq nil] 3] :connecting #[(fsm state-data) "\306\b\307\"\19\310 !\1a\306\b\311\"\e\306\b\312\"\1c\306\b\313\"\1d\n\ e\r\v\f\r$\210-\b\314D\207" [state-data connection-type connect-function server network-server port plist-get :connection-type jabber-get-connect-function :server :network-server :port nil fsm] 5] #[(fsm state-data event callback) "\b\242\206\ 6\0\b\211\19\306\267\202[\0\bA@\307\n\310\"\e\1c\311\n\312\f#\12\313\f!\203:\0r\314\f!q\210\315 \210)\316\f\317\r!\"\210\320\f\321\r!\"\210\322\n*D\202\\\0\323\324!\210\311\n\325\326\327\bA@\330##\210\331\nD\202\\\0\332\202\\\0\331)\207" [event #:temp state-data registerp connection fsm #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:connected 13 :connection-failed 65 :do-disconnect 87)) plist-get :registerp plist-put :connection processp process-buffer erase-buffer set-process-filter fsm-make-filter set-process-sentinel fsm-make-sentinel :connected message "Jabber connection failed" :disconnection-reason mapconcat identity "; " nil :defer] 8]] 4) | |
47 | #@39 Handle sentinel event for jabber fsm.\1f | |
48 | (defalias 'jabber-fsm-handle-sentinel #[(state-data event) "\bAA@\211\19\211GSH\305=\203\16\0 \306\307O\202\17\0 \1a\310\v\311\"\203#\0\v\202(\0\312\v\311\n#\1c\313\f+D\207" [event string trimmed-string state-data new-state-data 10 0 -1 plist-get :disconnection-reason plist-put nil] 5 (#$ . 10763)]) | |
49 | (byte-code "\306\307\310\311#\312\307\313\314#\210\315\316N\18\317\320\321\b#\210)\315\322N\19\317\320\323 #\210)\315\316N\1a\317\324\325\n#\210)\315\322N\e\317\324\326\v#\210)\315\316N\1c\317\327\330\f#\210)\315\322N\1d\317\327\331\r#\210)\315\316N\1e#\317\332\333\ e##\210)\315\322N\1e$\317\332\334\ e$#\210)\315\316N\1e%\317\335\336\ e%#\210)\315\322N\1e&\317\335\337\ e&#\210)\315\316N\1e'\317\340\341\ e'#\210)\315\322N\1e(\317\340\342\ e(#\210)\306\207" [#:v #:v #:v #:v #:v #:v function-put jabber-fsm-handle-sentinel speed -1 put byte-optimizer byte-compile-inline-expand jabber-connection :fsm-enter puthash :connected #[(fsm state-data) "\302\b!\210 \303D\207" [fsm state-data jabber-send-stream-header nil] 2] :fsm-event #[(fsm state-data event callback) "\b\242\206\ 6\0\b\211\19\306\267\202\ 1\ 1\bA@\bAA@\1a\e\307\v\n\f#\210\310\r*D\202\ 2\ 1\r\b\18\1d\bAA@\211\1a\211GSH\311=\203=\0\n\312\313O\202>\0\n\1e%\314\r\315\"\203K\0\r\202Q\0\316\r\315\ e%#\1e&\317\ e&-D\202\ 2\ 1\bA@\bAA@\1e'\1e(\316\r\320\ e(#\15\ e'\203\214\0\321\ e'!\322Y\203\214\0\ e)\203\214\0\323\324!\203\214\0\310\rD\202\234\0\314\r\325\"\203\231\0\326\rD\202\234\0\327\rD*\202\ 2\ 1\bA@\211\1e*\211<\205\255\0\211@\262\ 1\330=\204\302\0\317\316\r\315\331\332\ e*\"#D\202\356\0\333\ e*\334\"\203\331\0\314\r\335\"\334=\203\331\0\336\rD\202\356\0\314\r\325\"\203\346\0\326\rD\202\356\0\337\316\r\340\ e*#D)\202\ 2\ 1\341\f\342\"\210\317\316\r\343\344#D\202\ 2\ 1\317)\207" [event #:temp string process fsm state-data #s(hash-table size 5 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:filter 13 :sentinel 35 :stream-start 91 :stanza 160 :do-disconnect 242)) jabber-pre-filter :connected 10 0 -1 plist-get :disconnection-reason plist-put nil :session-id string-to-number 1.0 featurep sasl :registerp :register-account :legacy-auth features format "Unexpected stanza %s" jabber-xml-get-children starttls :connection-type :starttls :sasl-auth :stream-features jabber-send-string "</stream:stream>" :disconnection-expected t trimmed-string new-state-data stream-version session-id jabber-use-sasl stanza] 8] :starttls #[(fsm state-data) "\302\b!\210 \303D\207" [fsm state-data jabber-starttls-initiate nil] 2] #[(fsm state-data event callback) "\b\242\206\ 6\0\b\211\19\306\267\202\232\0\bA@\bAA@\1a\e\307\v\n\f#\210\310\r*D\202\233\0\r\b\18\1d\bAA@\211\1a\211GSH\311=\203=\0\n\312\313O\202>\0\n\1e\1a\314\r\315\"\203K\0\r\202Q\0\316\r\315\ e\1a#\1e\e\317\ e\e-D\202\233\0\3201q\0\321\f\bA@\"\210\322\316\r\323\324#D0\202\233\0\1e\1c\325\326\ e\1c!P\1e\1d\316\r\315\ e\1d#\1e\e\317\ e\e+D\202\233\0\327\f\330\"\210\317\316\r\331\324#D\202\233\0\317)\207" [event #:temp string process fsm state-data #s(hash-table size 4 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:filter 13 :sentinel 35 :stanza 91 :do-disconnect 139)) jabber-pre-filter :starttls 10 0 -1 plist-get :disconnection-reason plist-put nil (error) jabber-starttls-process-input :connected :encrypted t "STARTTLS negotiation failed: " error-message-string jabber-send-string "</stream:stream>" :disconnection-expected trimmed-string new-state-data e msg] 6] :register-account #[(fsm state-data) "\302\b\303\"\210 \303D\207" [fsm state-data jabber-get-register nil] 3] #[(fsm state-data event callback) "\b\242\206\ 6\0\b\211\19\306\267\202\200\0\bA@\bAA@\1a\e\307\v\n\f#\210\310\r*D\202\201\0\r\b\18\1d\bAA@\211\1a\211GSH\311=\203=\0\n\312\313O\202>\0\n\1e\16\314\r\315\"\203K\0\r\202Q\0\316\r\315\ e\16#\1e\17\317\ e\17-D\202\201\0\320\bA@\r\"\206\201\0\321\f\bA@\"\210\310\rD\202\201\0\322\f\323\"\210\317\316\r\324\325#D\202\201\0\317)\207" [event #:temp string process fsm state-data #s(hash-table size 4 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:filter 13 :sentinel 35 :stanza 91 :do-disconnect 113)) jabber-pre-filter :register-account 10 0 -1 plist-get :disconnection-reason plist-put nil jabber-process-stream-error jabber-process-input jabber-send-string "</stream:stream>" :disconnection-expected t trimmed-string new-state-data] 6] :legacy-auth #[(fsm state-data) "\302\b\303 \304\"\303 \305\"#\210 \306D\207" [fsm state-data jabber-get-auth plist-get :server :session-id nil] 6] #[(fsm state-data event callback) "\b\242\206\ 6\0\b\211\19\306\267\202\236\0\bA@\bAA@\1a\e\307\v\n\f#\210\310\r*D\202\237\0\r\b\18\1d\bAA@\211\1a\211GSH\311=\203=\0\n\312\313O\202>\0\n\1e\1a\314\r\315\"\203K\0\r\202Q\0\316\r\315\ e\1a#\1e\e\317\ e\e-D\202\237\0\320\bA@\r\"\206\237\0\321\f\bA@\"\210\310\rD\202\237\0\322\323\f!\bA\"\210\324\rD\202\237\0\325\323\f!!\210\317\316\r\326\327#D\202\237\0\330\f\331\"\210\317\316\r\326\327#D\202\237\0\317)\207" [event #:temp string process fsm state-data #s(hash-table size 6 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:filter 13 :sentinel 35 :stanza 91 :authentication-success 113 :authentication-failure 127 :do-disconnect 143)) jabber-pre-filter :legacy-auth 10 0 -1 plist-get :disconnection-reason plist-put nil jabber-process-stream-error jabber-process-input jabber-cache-password jabber-connection-bare-jid :session-established jabber-uncache-password :disconnection-expected t jabber-send-string "</stream:stream>" trimmed-string new-state-data] 6] :sasl-auth #[(fsm state-data) "\302\b\303\304 \305\b\306\"\"#\307D\207" [state-data fsm plist-put :sasl-data jabber-sasl-start-auth plist-get :stream-features nil] 9] #[(fsm state-data event callback) "\b\242\206\ 6\0\b\211\19\306\267\202\256\0\bA@\bAA@\1a\e\307\v\n\f#\210\310\r*D\202\257\0\r\b\18\1d\bAA@\211\1a\211GSH\311=\203=\0\n\312\313O\202>\0\n\1e\e\314\r\315\"\203K\0\r\202Q\0\316\r\315\ e\e#\1e\1c\317\ e\1c-D\202\257\0\320\f\bA@\314\r\321\"#\1e\1d\310\316\r\321\ e\1d#)D\202\257\0\322\316\r\321\317#D\202\257\0\323\324\f!\bA\"\210\325\316\r\321\317#D\202\257\0\326\324\f!!\210\317\316\r\327\330#D\202\257\0\331\f\332\"\210\317\316\r\327\330#D\202\257\0\317)\207" [event #:temp string process fsm state-data #s(hash-table size 7 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:filter 13 :sentinel 35 :stanza 91 :use-legacy-auth-instead 115 :authentication-success 125 :authentication-failure 143 :do-disconnect 159)) jabber-pre-filter :sasl-auth 10 0 -1 plist-get :disconnection-reason plist-put nil jabber-sasl-process-input :sasl-data :legacy-auth jabber-cache-password jabber-connection-bare-jid :bind jabber-uncache-password :disconnection-expected t jabber-send-string "</stream:stream>" trimmed-string new-state-data new-sasl-data] 7] :bind #[(fsm state-data) "\302\b!\210 \303D\207" [fsm state-data jabber-send-stream-header nil] 2] #[(fsm state-data event callback) "\b\242\206\ 6\0\b\211\19\306\267\202T\ 1\bA@\bAA@\1a\e\307\v\n\f#\210\310\r*D\202U\ 1\r\b\18\1d\bAA@\211\1a\211GSH\311=\203=\0\n\312\313O\202>\0\n\1e1\314\r\315\"\203K\0\r\202Q\0\316\r\315\ e1#\1e2\317\ e2-D\202U\ 1\310\rD\202U\ 1\bA@\211\1e3\211<\205n\0\211@\262\ 1\320=\203\272\0\316\r\321\ e3#\15\322\ e3\323\"\203\260\0\324\314\r\325\"\1e\19\1e4\326\f\317\327\323\330\ e\19\205\236\0\331\317\ e\19ECBB\ e4\332\ e4\317&\b\210\310\r*D\202\315\0\333\334!\210\317\rD\202\315\0\335\bA@\r\"\206\315\0\336\f\bA@\"\210\310\rD)\202U\ 1\337\bA@\340\"\1e5\316\r\341\342\ e5!#\210\316\r\343\344\ e5!#\210\316\r\325\345\ e5!#\210)\322\314\r\321\"\346\"\203\17\ 1\347\1e6\326\f\317\327\350\ e6\332\ e6\317&\b\210\310\r)D\202U\ 1\351\rD\202U\ 1\351\rD\202U\ 1\333\352\353\354\bA@!!\"\210\317\rD\202U\ 1\333\355\353\354\bA@!!\"\210\317\rD\202U\ 1\356\f\357\"\210\317\316\r\360\332#D\202U\ 1\317)\207" [event #:temp string process fsm state-data #s(hash-table size 9 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:filter 13 :sentinel 35 :stream-start 91 :stanza 97 :bind-success 209 :session-success 285 :bind-failure 291 :session-failure 308 :do-disconnect 325)) jabber-pre-filter :bind 10 0 -1 plist-get :disconnection-reason plist-put nil features :stream-features jabber-xml-get-children bind #[(jc xml-data success) "\303\b \203\n\0\304\202\v\0\305\nD\"\207" [jc success xml-data fsm-send :bind-success :bind-failure] 4] :resource jabber-send-iq "set" ((xmlns . "urn:ietf:params:xml:ns:xmpp-bind")) resource t message "Server doesn't permit resource binding" jabber-process-stream-error jabber-process-input jabber-xml-path (bind jid "") :username jabber-jid-username :server jabber-jid-server jabber-jid-resource session #[(jc xml-data success) "\303\b \203\n\0\304\202\v\0\305\nD\"\207" [jc success xml-data fsm-send :session-success :session-failure] 4] (session ((xmlns . "urn:ietf:params:xml:ns:xmpp-session"))) :session-established "Resource binding failed: %s" jabber-parse-error jabber-iq-error "Session establishing failed: %s" jabber-send-string "</stream:stream>" :disconnection-expected trimmed-string new-state-data stanza handle-bind jid handle-session] 10] #:v #:v #:v #:v #:v #:v] 5) | |
50 | #@63 Wait this long before doing presence packet batch processing.\1f | |
51 | (defvar jabber-pending-presence-timeout 0.5 (#$ . 19356)) | |
52 | (byte-code "\302\303N\18\304\305\306\b#\210)\302\307N\19\304\305\310 #\210)\302\207" [#:v #:v jabber-connection :fsm-enter puthash :session-established #[(fsm state-data) "\302\b\303\304\305\306\307\310\303&\b\210\311 \312\313#\303D\207" [fsm state-data jabber-send-iq nil "get" (query ((xmlns . "jabber:iq:roster"))) jabber-process-roster initial jabber-initial-roster-failure plist-put :ever-session-established t] 9] :fsm-event #[(fsm state-data event callback) "\b\242\206\ 6\0\b\211\19\306\267\202\337\0\bA@\bAA@\1a\e\307\v\n\f#\210\310\r\311E*\202\340\0\r\b\18\1d\bAA@\211\1a\211GSH\312=\203>\0\n\313\314O\202?\0\n\1e\1a\315\r\316\"\203L\0\r\202R\0\317\r\316\ e\1a#\1e\e\320\ e\e-D\202\340\0\321\bA@\r\"\206\340\0\322\f\bA@\"\210\310\r\311E\202\340\0\bA\1e\1c\315\r\323\"\211\1e\1d\203\227\0\ e\1c\ e\1d>\204\220\0\ e\1d\ e\1cC\244\210\310\r\311E\202\244\0\317\r\323\ e\1cC#\15\310\r\ e\1eE*\202\340\0\315\r\323\"\1e\1d\317\r\323\320#\15\324\f\320\ e\1d\320$\210\310\r)D\202\340\0\325\f\bA\"\210\310\r\311E\202\340\0\326\f\327\"\210\320\317\r\330\331#D\202\340\0\320)\207" [event #:temp string process fsm state-data #s(hash-table size 7 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:filter 13 :sentinel 36 :stanza 92 :roster-update 115 :timeout 168 :send-if-connected 195 :do-disconnect 208)) jabber-pre-filter :session-established :keep 10 0 -1 plist-get :disconnection-reason plist-put nil jabber-process-stream-error jabber-process-input :roster-pending-updates jabber-roster-update jabber-send-sexp jabber-send-string "</stream:stream>" :disconnection-expected t trimmed-string new-state-data jid-symbol-to-update pending-updates jabber-pending-presence-timeout] 6]] 4) | |
53 | #@79 Disconnect from all Jabber servers. If ARG supplied, disconnect one account.\1f | |
54 | (defalias 'jabber-disconnect #[(&optional arg) "\b\203 \0\305\306 !\207 ?\205E\0\307\19\n\204\1a\0\310\311!\202D\0\312\313!\210\n\314\e\211\1c\2035\0\f@\13\305\v\307\"\210\fA\211\14\204&\0*\314\12\315 \210\316\317!\205D\0\310\320!)\207" [arg *jabber-disconnecting* jabber-connections c --dolist-tail-- jabber-disconnect-one jabber-read-account t message "Already disconnected" run-hooks jabber-pre-disconnect-hook nil jabber-disconnected called-interactively-p interactive "Disconnected from Jabber server(s)"] 4 (#$ . 21061) "P"]) | |
55 | #@123 Disconnect from one Jabber server. | |
56 | If DONT-REDISPLAY is non-nil, don't update roster buffer. | |
57 | JC is the Jabber connection.\1f | |
58 | (defalias 'jabber-disconnect-one #[(jc &optional dont-redisplay) "\302\b\303\"\210\304\305!\203\12\0\306\307\310\b!\"\210 ?\205\19\0\311 \207" [jc dont-redisplay fsm-send-sync :do-disconnect called-interactively-p interactive message "Disconnected from %s" jabber-connection-jid jabber-display-roster] 4 (#$ . 21656) (list (jabber-read-account))]) | |
59 | #@81 Re-initialise jabber package variables. | |
60 | Call this function after disconnection.\1f | |
61 | (defalias 'jabber-disconnected #[nil "\302\b!\203\12\0r\302\b!q\210\303\19\304 \210*\305 \210\306\307!\207" [jabber-roster-buffer inhibit-read-only get-buffer t erase-buffer jabber-clear-roster run-hooks jabber-post-disconnect-hook] 2 (#$ . 22124)]) | |
62 | #@222 Print DATA to XML console (and, optionally, in file). | |
63 | If `jabber-debug-log-xml' is nil, do nothing. | |
64 | FSM is the connection that is sending/receiving. | |
65 | DIRECTION is a string, either "sending" or "receive". | |
66 | DATA is any sexp.\1f | |
67 | (defalias 'jabber-log-xml #[(fsm direction data) "\b\205 \0\304 \n\v#\207" [jabber-debug-log-xml fsm direction data jabber-process-console] 4 (#$ . 22454)]) | |
68 | (defalias 'jabber-pre-filter #[(process string fsm) "r\304\b!q\210db\210 c\210\305\302!?\205\1a\0\306\1a\307\b\v\"))\207" [process string jabber-filtering fsm process-buffer boundp nil jabber-filter] 3]) | |
69 | #@45 The filter function for the Jabber process.\1f | |
70 | (defalias 'jabber-filter #[(process fsm) "r\306\b!q\210eb\210\307\19\3102\333\0\311\307w\312U\204\e\0e`|\210\313\314!\203'\0\312\224\312\225|\210\313\315!\2035\0\316\310\317\n\320\"\"\210\313\321!\203\214\0\322\323\324\211\307\325%\210`\e\326e\v\"@\211\1c\327\ 1:\205V\0\330\ 2\ 2\"\266\202\1d\f\331\ 1:\205d\0\330\ 2\ 2\"\266\202\1e+\332\f\211<\205r\0\211A@\262\ 1\307\"\16,\333\n\334\f#\210\317\n\335\r\ e+E\"\210e\v|\210,\212\336\337\307\324#\203\234\0\322\340!\210\202\215\0)\341 \211\11\203\331\0\3421\263\0\333\n\334 @#0\210\202\305\0\1e-\343 \210\344\345\346\ e-!\"\210\347\350!)\210e`|\210\317\n\351\352 @\307\ e,#D\"\210\202\ f\0\3070*\207" [process xml-data fsm ending-at stream-header session-id process-buffer nil --cl-block-nil-- " \r\n" 0 looking-at "<\\?xml[^?]*\\?>" "</stream:stream>" throw fsm-send :stream-end "<stream:stream[^>]*\\(>\\)" replace-match "/>" t 1 xml-parse-region id xml-get-attribute-or-nil version jabber-xml-merge-namespace-declarations jabber-log-xml "receive" :stream-start search-forward-regexp " \\w+=''" "" jabber-xml-parse-next-stanza (error) ding message "Couldn't write XML log: %s" error-message-string sit-for 2 :stanza jabber-xml-resolve-namespace-prefixes stream-version jabber-namespace-prefixes e] 8 (#$ . 23031)]) | |
71 | #@156 Process an incoming parsed tag. | |
72 | ||
73 | JC is the Jabber connection. | |
74 | XML-DATA is the parsed tree data from the stream (stanzas) | |
75 | obtained from `xml-parse-region'.\1f | |
76 | (defalias 'jabber-process-input #[(jc xml-data) "\b\211<\205\b\0\211@\262\ 1\19\306 \307\236A!\211\1a\310\e\211\1c\205=\0\f@\13\3111*\0\v\r\b\"0\210\2025\0\1e\f\312\313\ e\f\b\v$)\210\fA\211\14\204\1a\0\310,\207" [xml-data tag functions f --dolist-tail-- jc eval ((iq . jabber-iq-chain) (presence . jabber-presence-chain) (message . jabber-message-chain)) nil (debug error) fsm-debug-output "Error %S while processing %S with function %s" e] 6 (#$ . 24292)]) | |
77 | #@124 Process an incoming stream error. | |
78 | Return nil if XML-DATA is not a stream:error stanza. | |
79 | Return an fsm result list if it is.\1f | |
80 | (defalias 'jabber-process-stream-error #[(xml-data state-data) "\b\211<\205\b\0\211@\262\ 1\304=\205C\0\b\211\305\ 1:\205\e\0\306\ 2\ 2\"\266\203\307\232\205C\0\310\b!\311\b!\19\1a\312\v\313\314\315 \"#\13\n\316=\203?\0\312\v\317\320#\13\321\v*D\207" [xml-data text condition state-data error xmlns xml-get-attribute-or-nil "http://etherx.jabber.org/streams" jabber-stream-error-condition jabber-parse-stream-error plist-put :disconnection-reason format "Stream error: %s" conflict :disconnection-expected t nil] 6 (#$ . 24882)]) | |
81 | #@22 Clean up the roster.\1f | |
82 | (defalias 'jabber-clear-roster #[nil "\302\303\b\"\210\304\211\11\207" [jabber-jid-obarray *jabber-roster* mapatoms #[(x) "\302\b \"\207" [x jabber-jid-obarray unintern] 3] nil] 3 (#$ . 25511)]) | |
83 | #@54 Send the xml corresponding to SEXP to connection JC.\1f | |
84 | (defalias 'jabber-send-sexp #[(jc sexp) "\3031\ e\0\304\b\305 #0\210\202\1e\0\1a\306 \210\307\310\311\n!\"\210\312\313!)\210\314\b\315 !\"\207" [jc sexp e (error) jabber-log-xml "sending" ding message "Couldn't write XML log: %s" error-message-string sit-for 2 jabber-send-string jabber-sexp2xml] 4 (#$ . 25729)]) | |
85 | #@60 Send the stanza SEXP only if JC has established a session.\1f | |
86 | (defalias 'jabber-send-sexp-if-connected #[(jc sexp) "\302\b\303 B\"\207" [jc sexp fsm-send-sync :send-if-connected] 4 (#$ . 26092)]) | |
87 | #@38 Send stream header to connection JC.\1f | |
88 | (defalias 'jabber-send-stream-header #[(jc) "\303\304\305\b!\306\"\307\310\311!\203\16\0 \203\16\0\312\202\17\0\313\314\260\ 5\1a\315\b\316\n#\210\317\b\n\")\207" [jc jabber-use-sasl stream-header "<?xml version='1.0'?><stream:stream to='" plist-get fsm-get-state-data :server "' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'" featurep sasl " version='1.0'" "" ">\n" jabber-log-xml "sending" jabber-send-string] 5 (#$ . 26290)]) | |
89 | #@40 Send STRING through the connection JC.\1f | |
90 | (defalias 'jabber-send-string #[(jc string) "\305\b!\19\306 \307\"\1a\306 \310\"\e\n\204\19\0\311\312\313\b!\"\210\v\n\f\"+\207" [jc state-data connection send-function string fsm-get-state-data plist-get :connection :send-function error "%s has no connection" jabber-connection-jid] 4 (#$ . 26770)]) | |
91 | (provide 'jabber-core) |