Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann Leboulanger <asterix@lagaule.org>2010-08-11 20:43:41 +0400
committerYann Leboulanger <asterix@lagaule.org>2010-08-11 20:43:41 +0400
commitca43e5441c89b5b7fe45c54c56d17ff74e028ffa (patch)
tree7887440a90210c0fc7f998ea28a9396258d245db /src/session.py
parent2d9e622f656a85c5e86f852ab098ae1400ae06b0 (diff)
parentaf804641b6df77487f3863db5a474e2349100405 (diff)
merge message archiving branch. Fixes #3593
Diffstat (limited to 'src/session.py')
-rw-r--r--src/session.py78
1 files changed, 52 insertions, 26 deletions
diff --git a/src/session.py b/src/session.py
index 2396f9883..30693ed1d 100644
--- a/src/session.py
+++ b/src/session.py
@@ -413,31 +413,40 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
# encrypted session states. these are described in stanza_session.py
try:
- # bob responds
if form.getType() == 'form' and 'security' in form.asDict():
- # we don't support 3-message negotiation as the responder
- if 'dhkeys' in form.asDict():
- self.fail_bad_negotiation('3 message negotiation not supported '
- 'when responding', ('dhkeys',))
- return
-
- negotiated, not_acceptable, ask_user = self.verify_options_bob(form)
-
- if ask_user:
- def accept_nondefault_options(is_checked):
- self.dialog.destroy()
- negotiated.update(ask_user)
- self.respond_e2e_bob(form, negotiated, not_acceptable)
-
- def reject_nondefault_options():
- self.dialog.destroy()
- for key in ask_user.keys():
- not_acceptable.append(key)
- self.respond_e2e_bob(form, negotiated, not_acceptable)
-
- self.dialog = dialogs.YesNoDialog(_('Confirm these session '
- 'options'),
- _('''The remote client wants to negotiate a session with these features:
+ security_options = [x[1] for x in form.getField('security').\
+ getOptions()]
+ if security_options == ['none']:
+ self.respond_archiving(form)
+ else:
+ # bob responds
+
+ # we don't support 3-message negotiation as the responder
+ if 'dhkeys' in form.asDict():
+ self.fail_bad_negotiation('3 message negotiation not '
+ 'supported when responding', ('dhkeys',))
+ return
+
+ negotiated, not_acceptable, ask_user = \
+ self.verify_options_bob(form)
+
+ if ask_user:
+ def accept_nondefault_options(is_checked):
+ self.dialog.destroy()
+ negotiated.update(ask_user)
+ self.respond_e2e_bob(form, negotiated,
+ not_acceptable)
+
+ def reject_nondefault_options():
+ self.dialog.destroy()
+ for key in ask_user.keys():
+ not_acceptable.append(key)
+ self.respond_e2e_bob(form, negotiated,
+ not_acceptable)
+
+ self.dialog = dialogs.YesNoDialog(_('Confirm these '
+ 'session options'), _('''The remote client wants '
+ 'to negotiate an session with these features:
%s
@@ -445,8 +454,17 @@ Are these options acceptable?''') % (negotiation.describe_features(
ask_user)),
on_response_yes=accept_nondefault_options,
on_response_no=reject_nondefault_options)
- else:
- self.respond_e2e_bob(form, negotiated, not_acceptable)
+ else:
+ self.respond_e2e_bob(form, negotiated, not_acceptable)
+
+ return
+
+ elif self.status == 'requested-archiving' and form.getType() == \
+ 'submit':
+ try:
+ self.archiving_accepted(form)
+ except exceptions.NegotiationError, details:
+ self.fail_bad_negotiation(details)
return
@@ -483,6 +501,14 @@ Are these options acceptable?''') % (negotiation.describe_features(
self.fail_bad_negotiation(details)
return
+ elif self.status == 'responded-archiving' and form.getType() == \
+ 'result':
+ try:
+ self.we_accept_archiving(form)
+ except exceptions.NegotiationError, details:
+ self.fail_bad_negotiation(details)
+
+ return
elif self.status == 'responded-e2e' and form.getType() == 'result':
try:
self.accept_e2e_bob(form)