aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorunknown <pesco@khjk.org>2013-08-02 22:55:16 +0200
committerunknown <pesco@khjk.org>2013-08-02 22:55:16 +0200
commitc347a1225f8a114ff540a38fed31c5543b4d9fcc (patch)
tree89578d0ad20f3761ffcac5ea0cba7b6a117059cd
parentf93e01c92315427c2b8f8c7d03e0ce337e2e80b4 (diff)
timer cleanup and "other instance" error message
-rw-r--r--otr.c10
-rw-r--r--otr.h3
2 files changed, 11 insertions, 2 deletions
diff --git a/otr.c b/otr.c
index 29bb6421..6fdaa43b 100644
--- a/otr.c
+++ b/otr.c
@@ -270,7 +270,7 @@ gboolean otr_irc_new(irc_t *irc)
/* regularly call otrl_message_poll */
gint definterval = otrl_message_poll_get_default_interval(irc->otr->us);
- b_timeout_add(definterval, ev_message_poll, irc->otr);
+ irc->otr->timer = b_timeout_add(definterval, ev_message_poll, irc->otr);
return TRUE;
}
@@ -278,6 +278,7 @@ gboolean otr_irc_new(irc_t *irc)
void otr_irc_free(irc_t *irc)
{
otr_t *otr = irc->otr;
+ b_event_remove(otr->timer);
otrl_userstate_free(otr->us);
if(otr->keygen) {
kill(otr->keygen, SIGTERM);
@@ -845,6 +846,10 @@ void op_handle_msg_event(void *opdata, OtrlMessageEvent ev, ConnContext *ctx,
display_otr_message(opdata, ctx,
"unreadable encrypted message received");
break;
+ case OTRL_MSGEVENT_RCVDMSG_FOR_OTHER_INSTANCE:
+ display_otr_message(opdata, ctx,
+ "OTR message for a different instance received");
+ break;
case OTRL_MSGEVENT_RCVDMSG_MALFORMED:
display_otr_message(opdata, ctx,
"malformed OTR message received");
@@ -1354,7 +1359,8 @@ gboolean ev_message_poll(gpointer data, gint fd, b_input_condition cond)
{
otr_t *otr = data;
- otrl_message_poll(otr->us, &otr_ops, NULL);
+ if(otr && otr->us)
+ otrl_message_poll(otr->us, &otr_ops, NULL);
return TRUE; /* cycle timer */
}
diff --git a/otr.h b/otr.h
index ace2c956..3962097e 100644
--- a/otr.h
+++ b/otr.h
@@ -65,6 +65,9 @@ typedef struct otr {
/* keygen jobs waiting to be sent to slave */
kg_t *todo;
+
+ /* event timer for otrl_message_poll */
+ gint timer;
} otr_t;
/* called from main() */