diff options
author | Yann Leboulanger <asterix@lagaule.org> | 2010-08-11 20:43:41 +0400 |
---|---|---|
committer | Yann Leboulanger <asterix@lagaule.org> | 2010-08-11 20:43:41 +0400 |
commit | ca43e5441c89b5b7fe45c54c56d17ff74e028ffa (patch) | |
tree | 7887440a90210c0fc7f998ea28a9396258d245db /src/session.py | |
parent | 2d9e622f656a85c5e86f852ab098ae1400ae06b0 (diff) | |
parent | af804641b6df77487f3863db5a474e2349100405 (diff) |
merge message archiving branch. Fixes #3593
Diffstat (limited to 'src/session.py')
-rw-r--r-- | src/session.py | 78 |
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) |