aboutsummaryrefslogtreecommitdiffstats
path: root/otr.c
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2010-10-06 23:32:06 -0700
committerWilmer van der Gaast <wilmer@gaast.net>2010-10-06 23:32:06 -0700
commit508588afbdf18f72b8154c3500eedd19cd15c6cc (patch)
treead43f678e58d07f7c0e2f1d8dbc1bd6b9a0d6a17 /otr.c
parent25b5a4a30f8a767bfd4577aa284bd435f7e5fb97 (diff)
parent3ad80364e4d8aac620120b630df8a164d58dd114 (diff)
Merging smpq fix from pesco.
Diffstat (limited to 'otr.c')
-rw-r--r--otr.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/otr.c b/otr.c
index 76bb8acd..c1a11d72 100644
--- a/otr.c
+++ b/otr.c
@@ -1128,21 +1128,23 @@ void otr_handle_smp(struct im_connection *ic, const char *handle, OtrlTLV *tlvs)
otrl_message_abort_smp(us, ops, u->bu->ic, context);
otrl_sm_state_free(context->smstate);
} else {
- /* SMP3 received, otrl_message_receiving will have sent SMP4 and set fp trust */
- /* as noted above, fp trust SHOULD have been set by libotr.
- * however at least version 3.2.0 seems to forget it when
- * responding to an smp session that was initiated with SMP1Q
- * (question and answer); other cases appear to work fine.
- * as a workaround, we explicitly set it below.
- */
+ /* SMP3 received, otrl_message_receiving will have sent SMP4 */
if(context->smstate->sm_prog_state == OTRL_SMP_PROG_SUCCEEDED) {
- otrl_context_set_trust(context->active_fingerprint, "smp");
- irc_usermsg(irc, "smp %s: secrets proved equal, fingerprint trusted",
- u->nick);
+ if(context->smstate->received_question) {
+ irc_usermsg(irc, "smp %s: correct answer, you are trusted",
+ u->nick);
+ } else {
+ irc_usermsg(irc, "smp %s: secrets proved equal, fingerprint trusted",
+ u->nick);
+ }
} else {
- otrl_context_set_trust(context->active_fingerprint, "");
- irc_usermsg(irc, "smp %s: secrets did not match, fingerprint not trusted",
- u->nick);
+ if(context->smstate->received_question) {
+ irc_usermsg(irc, "smp %s: wrong answer, you are not trusted",
+ u->nick);
+ } else {
+ irc_usermsg(irc, "smp %s: secrets did not match, fingerprint not trusted",
+ u->nick);
+ }
}
otrl_sm_state_free(context->smstate);
/* smp is in back in EXPECT1 */