From 0cd8a9d3469c1087a80706625b97a5654271bae7 Mon Sep 17 00:00:00 2001 From: Volker Birk Date: Mon, 15 Aug 2016 20:11:20 +0200 Subject: [PATCH] restructuring --- src/identity.cc | 9 ++++----- src/message.cc | 30 ++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/src/identity.cc b/src/identity.cc index afb18c3..790b53d 100644 --- a/src/identity.cc +++ b/src/identity.cc @@ -118,11 +118,10 @@ namespace pEp { Identity identity_attr(pEp_identity *&ident) { - pEp_identity *_dup = NULL; if (!ident) - _dup = new_identity(NULL, NULL, NULL, NULL); - else - _dup = identity_dup(ident); + throw out_of_range("no identity assigned"); + + pEp_identity *_dup = identity_dup(ident); if (!_dup) throw bad_alloc(); @@ -133,12 +132,12 @@ namespace pEp { void identity_attr(pEp_identity *&ident, object value) { Identity& _ident = extract< Identity& >(value); - free_identity(ident); pEp_identity *_dup = ::identity_dup(_ident); if (!_dup) throw bad_alloc(); PEP_STATUS status = update_identity(session, _dup); _throw_status(status); + free_identity(ident); ident = _dup; } diff --git a/src/message.cc b/src/message.cc index b6b5836..c9167d0 100644 --- a/src/message.cc +++ b/src/message.cc @@ -318,10 +318,40 @@ namespace pEp { return m; } + static object update(Identity ident) + { + update_identity(session, ident); + return object(ident); + } + + static list update(list il) + { + for (int i=0; i(il[i])); + } + + return il; + } + Message incoming_message(string mime_text) { auto m = Message(mime_text); m.dir(PEP_dir_incoming); + + try { + m.from(update(m.from())); + } + catch (out_of_range&) { } + + try { + m.recv_by(update(m.recv_by())); + } + catch (out_of_range&) { } + + m.to(update(m.to())); + m.cc(update(m.cc())); + m.reply_to(update(m.reply_to())); + return m; } }