Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
gajim
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
eta
gajim
Commits
d0eb029f
Commit
d0eb029f
authored
19 years ago
by
Yann Leboulanger
Browse files
Options
Downloads
Patches
Plain Diff
connection.pt doesn't send events to ui: it just put it in gajim.events_for_ui[account]
gui read this queue (mutex will come)
parent
016d70d7
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
src/common/connection.py
+10
-40
10 additions, 40 deletions
src/common/connection.py
src/common/gajim.py
+2
-0
2 additions, 0 deletions
src/common/gajim.py
src/config.py
+4
-0
4 additions, 0 deletions
src/config.py
src/gajim.py
+43
-41
43 additions, 41 deletions
src/gajim.py
with
59 additions
and
81 deletions
src/common/connection.py
+
10
−
40
View file @
d0eb029f
...
...
@@ -117,19 +117,6 @@ def get_os_info():
class
Connection
:
"""
Connection class
"""
def
__init__
(
self
,
name
):
# dict of function to be called for each event
self
.
handlers
=
{
'
ROSTER
'
:
[],
'
WARNING
'
:
[],
'
ERROR
'
:
[],
'
INFORMATION
'
:
[],
'
STATUS
'
:
[],
'
NOTIFY
'
:
[],
'
MSG
'
:
[],
'
MSGERROR
'
:
[],
'
MSGSENT
'
:
[]
,
'
SUBSCRIBED
'
:
[],
'
UNSUBSCRIBED
'
:
[],
'
SUBSCRIBE
'
:
[],
'
AGENT_INFO
'
:
[],
'
REGISTER_AGENT_INFO
'
:
[],
'
AGENT_INFO_ITEMS
'
:
[],
'
AGENT_INFO_INFO
'
:
[],
'
QUIT
'
:
[],
'
ACC_OK
'
:
[],
'
MYVCARD
'
:
[],
'
OS_INFO
'
:
[],
'
VCARD
'
:
[],
'
GC_MSG
'
:
[],
'
GC_SUBJECT
'
:
[],
'
GC_CONFIG
'
:
[],
'
BAD_PASSPHRASE
'
:
[],
'
ROSTER_INFO
'
:
[],
'
ERROR_ANSWER
'
:
[],
'
BOOKMARKS
'
:
[],
'
CON_TYPE
'
:
[],
'
FILE_REQUEST
'
:
[],
'
FILE_RCV_COMPLETED
'
:
[],
'
FILE_PROGRESS
'
:
[],
'
FILE_REQUEST_ERROR
'
:
[],
'
FILE_SEND_ERROR
'
:
[],
'
STANZA_ARRIVED
'
:
[],
'
STANZA_SENT
'
:
[],
'
HTTP_AUTH
'
:
[]
}
self
.
name
=
name
self
.
connected
=
0
# offline
self
.
connection
=
None
# xmpppy instance
...
...
@@ -142,7 +129,6 @@ class Connection:
self
.
last_incoming
=
time
.
time
()
self
.
keep_alive_sent
=
False
self
.
to_be_sent
=
[]
self
.
for_gui
=
[]
self
.
last_sent
=
[]
self
.
files_props
=
{}
self
.
password
=
gajim
.
config
.
get_per
(
'
accounts
'
,
name
,
'
password
'
)
...
...
@@ -156,11 +142,7 @@ class Connection:
def
dispatch
(
self
,
event
,
data
):
'''
always passes account name as first param
'''
if
not
event
in
self
.
handlers
:
print
event
,
'
is not in:
'
,
self
.
handlers
return
for
handler
in
self
.
handlers
[
event
]:
handler
(
self
.
name
,
data
)
gajim
.
events_for_ui
[
self
.
name
].
append
([
event
,
data
])
def
add_sha
(
self
,
p
):
c
=
p
.
setTag
(
'
x
'
,
namespace
=
common
.
xmpp
.
NS_VCARD_UPDATE
)
...
...
@@ -1204,7 +1186,8 @@ class Connection:
gajim
.
log
.
debug
(
_
(
'
Connected to server with %s
'
),
con_type
)
self
.
for_gui
.
append
([
'
CON_TYPE
'
,
con_type
])
# notify the gui about con_type
# notify the gui about con_type
self
.
dispatch
(
'
CON_TYPE
'
,
con_type
)
con
.
RegisterHandler
(
'
message
'
,
self
.
_messageCB
)
con
.
RegisterHandler
(
'
presence
'
,
self
.
_presenceCB
)
...
...
@@ -1273,15 +1256,6 @@ class Connection:
return
None
# END connect
def
register_handler
(
self
,
event
,
function
):
if
event
in
self
.
handlers
:
self
.
handlers
[
event
].
append
(
function
)
def
unregister_handler
(
self
,
event
,
function
):
if
event
in
self
.
handlers
:
if
function
in
self
.
handlers
[
event
]:
self
.
handlers
[
event
].
remove
(
function
)
def
quit
(
self
,
kill_core
):
if
kill_core
:
if
self
.
connected
>
1
:
...
...
@@ -1335,7 +1309,7 @@ class Connection:
if
signed
:
p
.
setTag
(
common
.
xmpp
.
NS_SIGNED
+
'
x
'
).
setData
(
signed
)
self
.
connection
.
send
(
p
)
self
.
for_gui
.
append
([
'
STATUS
'
,
'
invisible
'
]
)
self
.
dispatch
(
'
STATUS
'
,
'
invisible
'
)
if
initial
:
#ask our VCard
self
.
request_vcard
(
None
)
...
...
@@ -1364,14 +1338,14 @@ class Connection:
if
keyID
and
USE_GPG
:
if
self
.
connected
<
2
and
self
.
gpg
.
passphrase
is
None
:
# We didn't set a passphrase
self
.
for_gui
.
append
([
'
ERROR
'
,
(
_
(
'
OpenPGP Key was not given
'
),
_
(
'
You will be connected to %s without OpenPGP.
'
)
%
self
.
name
)
]
)
self
.
dispatch
(
'
ERROR
'
,
(
_
(
'
OpenPGP Key was not given
'
),
_
(
'
You will be connected to %s without OpenPGP.
'
)
%
self
.
name
))
else
:
signed
=
self
.
gpg
.
sign
(
msg
,
keyID
)
if
signed
==
'
BAD_PASSPHRASE
'
:
signed
=
''
if
self
.
connected
<
2
:
self
.
for_gui
.
append
([
'
BAD_PASSPHRASE
'
,
()
]
)
self
.
dispatch
(
'
BAD_PASSPHRASE
'
,
())
self
.
status
=
msg
if
show
!=
'
offline
'
and
not
self
.
connected
:
self
.
connection
=
self
.
connect
()
...
...
@@ -1391,7 +1365,7 @@ class Connection:
if
self
.
connection
:
self
.
connection
.
send
(
p
)
self
.
for_gui
.
append
([
'
STATUS
'
,
show
]
)
self
.
dispatch
(
'
STATUS
'
,
show
)
#ask our VCard
self
.
request_vcard
(
None
)
...
...
@@ -1412,7 +1386,7 @@ class Connection:
self
.
connection
.
disconnect
()
except
:
pass
self
.
for_gui
.
append
([
'
STATUS
'
,
'
offline
'
]
)
self
.
dispatch
(
'
STATUS
'
,
'
offline
'
)
self
.
connection
=
None
elif
show
!=
'
offline
'
and
self
.
connected
:
was_invisible
=
self
.
connected
==
STATUS_LIST
.
index
(
'
invisible
'
)
...
...
@@ -1433,7 +1407,7 @@ class Connection:
p
.
setTag
(
common
.
xmpp
.
NS_SIGNED
+
'
x
'
).
setData
(
signed
)
if
self
.
connection
:
self
.
connection
.
send
(
p
)
self
.
for_gui
.
append
([
'
STATUS
'
,
show
]
)
self
.
dispatch
(
'
STATUS
'
,
show
)
def
send_motd
(
self
,
jid
,
subject
=
''
,
msg
=
''
):
if
not
self
.
connection
:
...
...
@@ -1861,10 +1835,6 @@ class Connection:
self
.
connection
.
send
(
tosend
)
self
.
last_sent
.
append
(
time
.
time
())
while
time
.
time
()
<
t_limit
and
len
(
self
.
for_gui
):
print
len
(
self
.
for_gui
)
tosend
=
self
.
for_gui
.
pop
(
0
)
self
.
dispatch
(
tosend
[
0
],
tosend
[
1
])
try
:
if
gajim
.
config
.
get_per
(
'
accounts
'
,
self
.
name
,
'
keep_alives_enabled
'
):
# do we want keepalives?
...
...
This diff is collapsed.
Click to expand it.
src/common/gajim.py
+
2
−
0
View file @
d0eb029f
...
...
@@ -63,6 +63,8 @@ sleeper_state = {} # whether we pass auto away / xa or not
#'autoaway': autoaway and use sleeper
#'autoxa': autoxa and use sleeper
status_before_autoaway
=
{}
#queues of events from connections
events_for_ui
=
{}
socks5quue
=
None
...
...
This diff is collapsed.
Click to expand it.
src/config.py
+
4
−
0
View file @
d0eb029f
...
...
@@ -1286,6 +1286,7 @@ _('To change the account name, you must be disconnected.')).get_response()
gajim
.
last_message_time
[
self
.
account
]
gajim
.
status_before_autoaway
[
name
]
=
\
gajim
.
status_before_autoaway
[
self
.
account
]
gajim
.
events_for_ui
[
name
]
=
gajim
.
events_for_ui
[
self
.
account
]
#upgrade account variable in opened windows
for
kind
in
[
'
infos
'
,
'
chats
'
,
'
gc
'
,
'
gc_config
'
]:
...
...
@@ -1312,6 +1313,7 @@ _('To change the account name, you must be disconnected.')).get_response()
del
gajim
.
encrypted_chats
[
self
.
account
]
del
gajim
.
last_message_time
[
self
.
account
]
del
gajim
.
status_before_autoaway
[
self
.
account
]
del
gajim
.
events_for_ui
[
self
.
account
]
gajim
.
connections
[
self
.
account
].
name
=
name
gajim
.
connections
[
name
]
=
gajim
.
connections
[
self
.
account
]
del
gajim
.
connections
[
self
.
account
]
...
...
@@ -1366,6 +1368,7 @@ _('To change the account name, you must be disconnected.')).get_response()
gajim
.
encrypted_chats
[
name
]
=
[]
gajim
.
last_message_time
[
name
]
=
{}
gajim
.
status_before_autoaway
[
name
]
=
''
gajim
.
events_for_ui
[
name
]
=
[]
#refresh accounts window
if
self
.
plugin
.
windows
.
has_key
(
'
accounts
'
):
self
.
plugin
.
windows
[
'
accounts
'
].
init_accounts
()
...
...
@@ -2465,6 +2468,7 @@ class RemoveAccountWindow:
del
gajim
.
encrypted_chats
[
self
.
account
]
del
gajim
.
last_message_time
[
self
.
account
]
del
gajim
.
status_before_autoaway
[
self
.
account
]
del
gajim
.
events_for_ui
[
self
.
account
]
self
.
plugin
.
roster
.
draw_roster
()
if
self
.
plugin
.
windows
.
has_key
(
'
accounts
'
):
self
.
plugin
.
windows
[
'
accounts
'
].
init_accounts
()
...
...
This diff is collapsed.
Click to expand it.
src/gajim.py
+
43
−
41
View file @
d0eb029f
...
...
@@ -610,7 +610,8 @@ class Interface:
gajim
.
sleeper_state
[
name
]
=
'
off
'
gajim
.
encrypted_chats
[
name
]
=
[]
gajim
.
last_message_time
[
name
]
=
{}
gajim
.
status_before_autoaway
[
name
]
=
{}
gajim
.
status_before_autoaway
[
name
]
=
''
gajim
.
events_for_ui
[
name
]
=
[]
gajim
.
connections
[
name
].
change_status
(
'
offline
'
,
None
,
True
)
gajim
.
connections
[
name
].
connected
=
0
if
self
.
windows
.
has_key
(
'
accounts
'
):
...
...
@@ -960,46 +961,43 @@ class Interface:
self
.
make_regexps
()
def
register_handlers
(
self
,
con
):
con
.
register_handler
(
'
ROSTER
'
,
self
.
handle_event_roster
)
con
.
register_handler
(
'
WARNING
'
,
self
.
handle_event_warning
)
con
.
register_handler
(
'
ERROR
'
,
self
.
handle_event_error
)
con
.
register_handler
(
'
INFORMATION
'
,
self
.
handle_event_information
)
con
.
register_handler
(
'
ERROR_ANSWER
'
,
self
.
handle_event_error_answer
)
con
.
register_handler
(
'
STATUS
'
,
self
.
handle_event_status
)
con
.
register_handler
(
'
NOTIFY
'
,
self
.
handle_event_notify
)
con
.
register_handler
(
'
MSG
'
,
self
.
handle_event_msg
)
con
.
register_handler
(
'
MSGERROR
'
,
self
.
handle_event_msgerror
)
con
.
register_handler
(
'
MSGSENT
'
,
self
.
handle_event_msgsent
)
con
.
register_handler
(
'
SUBSCRIBED
'
,
self
.
handle_event_subscribed
)
con
.
register_handler
(
'
UNSUBSCRIBED
'
,
self
.
handle_event_unsubscribed
)
con
.
register_handler
(
'
SUBSCRIBE
'
,
self
.
handle_event_subscribe
)
con
.
register_handler
(
'
AGENT_INFO
'
,
self
.
handle_event_agent_info
)
con
.
register_handler
(
'
REGISTER_AGENT_INFO
'
,
self
.
handle_event_register_agent_info
)
con
.
register_handler
(
'
AGENT_INFO_ITEMS
'
,
self
.
handle_event_agent_info_items
)
con
.
register_handler
(
'
AGENT_INFO_INFO
'
,
self
.
handle_event_agent_info_info
)
con
.
register_handler
(
'
QUIT
'
,
self
.
handle_event_quit
)
con
.
register_handler
(
'
ACC_OK
'
,
self
.
handle_event_acc_ok
)
con
.
register_handler
(
'
MYVCARD
'
,
self
.
handle_event_myvcard
)
con
.
register_handler
(
'
VCARD
'
,
self
.
handle_event_vcard
)
con
.
register_handler
(
'
OS_INFO
'
,
self
.
handle_event_os_info
)
con
.
register_handler
(
'
GC_MSG
'
,
self
.
handle_event_gc_msg
)
con
.
register_handler
(
'
GC_SUBJECT
'
,
self
.
handle_event_gc_subject
)
con
.
register_handler
(
'
GC_CONFIG
'
,
self
.
handle_event_gc_config
)
con
.
register_handler
(
'
BAD_PASSPHRASE
'
,
self
.
handle_event_bad_passphrase
)
con
.
register_handler
(
'
ROSTER_INFO
'
,
self
.
handle_event_roster_info
)
con
.
register_handler
(
'
BOOKMARKS
'
,
self
.
handle_event_bookmarks
)
con
.
register_handler
(
'
CON_TYPE
'
,
self
.
handle_event_con_type
)
con
.
register_handler
(
'
FILE_REQUEST
'
,
self
.
handle_event_file_request
)
con
.
register_handler
(
'
FILE_REQUEST_ERROR
'
,
self
.
handle_event_file_request_error
)
con
.
register_handler
(
'
FILE_SEND_ERROR
'
,
self
.
handle_event_file_send_error
)
con
.
register_handler
(
'
STANZA_ARRIVED
'
,
self
.
handle_event_stanza_arrived
)
con
.
register_handler
(
'
STANZA_SENT
'
,
self
.
handle_event_stanza_sent
)
con
.
register_handler
(
'
HTTP_AUTH
'
,
self
.
handle_event_http_auth
)
self
.
handlers
=
{
'
ROSTER
'
:
self
.
handle_event_roster
,
'
WARNING
'
:
self
.
handle_event_warning
,
'
ERROR
'
:
self
.
handle_event_error
,
'
INFORMATION
'
:
self
.
handle_event_information
,
'
ERROR_ANSWER
'
:
self
.
handle_event_error_answer
,
'
STATUS
'
:
self
.
handle_event_status
,
'
NOTIFY
'
:
self
.
handle_event_notify
,
'
MSG
'
:
self
.
handle_event_msg
,
'
MSGERROR
'
:
self
.
handle_event_msgerror
,
'
MSGSENT
'
:
self
.
handle_event_msgsent
,
'
SUBSCRIBED
'
:
self
.
handle_event_subscribed
,
'
UNSUBSCRIBED
'
:
self
.
handle_event_unsubscribed
,
'
SUBSCRIBE
'
:
self
.
handle_event_subscribe
,
'
AGENT_INFO
'
:
self
.
handle_event_agent_info
,
'
REGISTER_AGENT_INFO
'
:
self
.
handle_event_register_agent_info
,
'
AGENT_INFO_ITEMS
'
:
self
.
handle_event_agent_info_items
,
'
AGENT_INFO_INFO
'
:
self
.
handle_event_agent_info_info
,
'
QUIT
'
:
self
.
handle_event_quit
,
'
ACC_OK
'
:
self
.
handle_event_acc_ok
,
'
MYVCARD
'
:
self
.
handle_event_myvcard
,
'
VCARD
'
:
self
.
handle_event_vcard
,
'
OS_INFO
'
:
self
.
handle_event_os_info
,
'
GC_MSG
'
:
self
.
handle_event_gc_msg
,
'
GC_SUBJECT
'
:
self
.
handle_event_gc_subject
,
'
GC_CONFIG
'
:
self
.
handle_event_gc_config
,
'
BAD_PASSPHRASE
'
:
self
.
handle_event_bad_passphrase
,
'
ROSTER_INFO
'
:
self
.
handle_event_roster_info
,
'
BOOKMARKS
'
:
self
.
handle_event_bookmarks
,
'
CON_TYPE
'
:
self
.
handle_event_con_type
,
'
FILE_REQUEST
'
:
self
.
handle_event_file_request
,
'
FILE_REQUEST_ERROR
'
:
self
.
handle_event_file_request_error
,
'
FILE_SEND_ERROR
'
:
self
.
handle_event_file_send_error
,
'
STANZA_ARRIVED
'
:
self
.
handle_event_stanza_arrived
,
'
STANZA_SENT
'
:
self
.
handle_event_stanza_sent
,
'
HTTP_AUTH
'
:
self
.
handle_event_http_auth
,
}
def
process_connections
(
self
):
try
:
...
...
@@ -1013,6 +1011,9 @@ class Interface:
gajim
.
connections
[
account
].
process
(
0.01
)
if
gajim
.
socks5queue
.
connected
:
gajim
.
socks5queue
.
process
(
0.01
)
while
len
(
gajim
.
events_for_ui
[
account
]):
ev
=
gajim
.
events_for_ui
[
account
].
pop
(
0
)
self
.
handlers
[
ev
[
0
]](
account
,
ev
[
1
])
time
.
sleep
(
0.01
)
# so threads in connection.py have time to run
return
True
# renew timeout (loop for ever)
except
KeyboardInterrupt
:
...
...
@@ -1117,6 +1118,7 @@ class Interface:
gajim
.
encrypted_chats
[
a
]
=
[]
gajim
.
last_message_time
[
a
]
=
{}
gajim
.
status_before_autoaway
[
a
]
=
''
gajim
.
events_for_ui
[
a
]
=
[]
self
.
roster
=
roster_window
.
RosterWindow
(
self
)
if
gajim
.
config
.
get
(
'
use_dbus
'
):
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment