Hello community, here is the log from the commit of package kopano for openSUSE:Factory checked in at 2018-09-03 10:36:28 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kopano (Old) and /work/SRC/openSUSE:Factory/.kopano.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kopano" Mon Sep 3 10:36:28 2018 rev:16 rq:632741 version:8.6.7.2 Changes: -------- --- /work/SRC/openSUSE:Factory/kopano/kopano.changes 2018-08-07 09:43:40.525372392 +0200 +++ /work/SRC/openSUSE:Factory/.kopano.new/kopano.changes 2018-09-03 10:36:31.736890537 +0200 @@ -1,0 +2,15 @@ +Sun Aug 26 11:18:40 UTC 2018 - [email protected] + +- Update to new snapshot 8.6.7.2 + * Fixes: + * gateway, spooler: (re-)activate RFC 2047 header generation + (Outlook is still unable to read the RFC 2231 headers that + are generated normally) [KC-1226] + * srvadm: make --purge-softdelete=0 work + * Enhancements: + * dagent: advertise 8BITMIME/RFC6152 support [KS-41452] + * dagent/client: fixed broken umlauts in PR_EC_BODY_FILTERED + when input was not UTF-8 [KC-1225] + + +------------------------------------------------------------------- Old: ---- kopanocore-8.6.6.1.tar.xz New: ---- kopanocore-8.6.7.2.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kopano.spec ++++++ --- /var/tmp/diff_new_pack.lUTEry/_old 2018-09-03 10:36:32.900893548 +0200 +++ /var/tmp/diff_new_pack.lUTEry/_new 2018-09-03 10:36:32.900893548 +0200 @@ -17,10 +17,10 @@ # -%define version_unconverted 8.6.6.1 +%define version_unconverted 8.6.7.2 Name: kopano -Version: 8.6.6.1 +Version: 8.6.7.2 Release: 0 Summary: Groupware server suite License: AGPL-3.0-only ++++++ PKGBUILD ++++++ --- /var/tmp/diff_new_pack.lUTEry/_old 2018-09-03 10:36:32.928893620 +0200 +++ /var/tmp/diff_new_pack.lUTEry/_new 2018-09-03 10:36:32.932893631 +0200 @@ -1,5 +1,5 @@ pkgname=kopano -pkgver=8.6.6.1 +pkgver=8.6.7.2 pkgrel=0 pkgdesc='Kopano' arch=('x86_64') ++++++ _service ++++++ --- /var/tmp/diff_new_pack.lUTEry/_old 2018-09-03 10:36:32.944893662 +0200 +++ /var/tmp/diff_new_pack.lUTEry/_new 2018-09-03 10:36:32.944893662 +0200 @@ -3,8 +3,8 @@ <param name="scm">git</param> <param name="url">https://stash.kopano.io/scm/kc/kopanocore.git</param> <param name="revision">kc-8.6.x</param> - <param name="parent-tag">kopanocore-8.6.6</param> - <param name="versionformat">8.6.6.@TAG_OFFSET@</param> + <param name="parent-tag">kopanocore-8.6.7</param> + <param name="versionformat">8.6.7.@TAG_OFFSET@</param> <!-- Regex used to rewrite the version which is applied after versionformat [kopanocore-8.5.80] and after the implicit ++++++ debian.changelog ++++++ --- /var/tmp/diff_new_pack.lUTEry/_old 2018-09-03 10:36:32.960893703 +0200 +++ /var/tmp/diff_new_pack.lUTEry/_new 2018-09-03 10:36:32.960893703 +0200 @@ -1,4 +1,4 @@ -kopano (8.6.6.1-0) unstable; urgency=low +kopano (8.6.7.2-0) unstable; urgency=low * Current release. ++++++ kopano.dsc ++++++ --- /var/tmp/diff_new_pack.lUTEry/_old 2018-09-03 10:36:33.616895400 +0200 +++ /var/tmp/diff_new_pack.lUTEry/_new 2018-09-03 10:36:33.616895400 +0200 @@ -1,7 +1,7 @@ Format: 1.0 Source: kopano Architecture: any all -Version: 8.6.6.1-0 +Version: 8.6.7.2-0 DEBTRANSFORM-RELEASE: 1 Maintainer: Kopano Development <[email protected]> Homepage: https://kopano.com ++++++ kopanocore-8.6.6.1.tar.xz -> kopanocore-8.6.7.2.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kopanocore-8.6.6.1/ECtools/srvadm.cpp new/kopanocore-8.6.7.2/ECtools/srvadm.cpp --- old/kopanocore-8.6.6.1/ECtools/srvadm.cpp 2018-08-03 09:36:26.000000000 +0200 +++ new/kopanocore-8.6.7.2/ECtools/srvadm.cpp 2018-08-17 10:11:59.000000000 +0200 @@ -29,7 +29,7 @@ #include <kopano/stringutil.h> using namespace KC; -static int opt_purge_deferred, opt_purge_softdelete; +static int opt_purge_deferred, opt_purge_softdelete = -1; static unsigned int opt_cache_bits; static const char *opt_config_file, *opt_host, *opt_clear_cache; static std::unique_ptr<ECConfig> adm_config; @@ -114,7 +114,7 @@ return adm_clear_cache(srvctx.m_svcadm); if (opt_purge_deferred) return adm_purge_deferred(srvctx.m_svcadm); - if (opt_purge_softdelete) + if (opt_purge_softdelete >= 0) return adm_purge_softdelete(srvctx.m_svcadm); return MAPI_E_CALL_FAILED; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kopanocore-8.6.6.1/RELNOTES.txt new/kopanocore-8.6.7.2/RELNOTES.txt --- old/kopanocore-8.6.6.1/RELNOTES.txt 2018-08-03 09:36:26.000000000 +0200 +++ new/kopanocore-8.6.7.2/RELNOTES.txt 2018-08-17 10:11:59.000000000 +0200 @@ -1,3 +1,25 @@ +8.6.x +===== +Fixes: +* dagent/client: fixed broken umlauts in PR_EC_BODY_FILTERED + when input was not UTF-8 [KC-1225] + + +8.6.7 (2018-08-14) +================== +Fixes: +* gateway, spooler: (re-)activate RFC 2047 header generation + (Outlook is still unable to read the RFC 2231 headers that + are generated normally) [KC-1226] +* srvadm: make --purge-softdelete=0 work +Enhancements: +* dagent: advertise 8BITMIME/RFC6152 support [KS-41452] +Changes: +* PHP function mapi_icaltomapi now returns MAPI_E_TABLE_EMPTY + rather than MAPI_E_INVALID_PARAMETER when the .ics file has no (usable) + appointments. [KC-1227] + + 8.6.6 (2018-07-31) ================== Fixes: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kopanocore-8.6.6.1/common/database.cpp new/kopanocore-8.6.7.2/common/database.cpp --- old/kopanocore-8.6.6.1/common/database.cpp 2018-08-03 09:36:26.000000000 +0200 +++ new/kopanocore-8.6.7.2/common/database.cpp 2018-08-17 10:11:59.000000000 +0200 @@ -458,7 +458,7 @@ return KCERR_DATABASE_ERROR; } m_bMysqlInitialize = true; - my_bool value = reconnect; + char value = reconnect; mysql_options(&m_lpMySQL, MYSQL_OPT_RECONNECT, &value); return erSuccess; } @@ -509,7 +509,7 @@ /* Callers without reconnect will emit different messages. */ auto ers = mysql_error(&m_lpMySQL); #ifdef HAVE_MYSQL_GET_OPTION - my_bool reconn = false; + char reconn = false; if (mysql_get_option(&m_lpMySQL, MYSQL_OPT_RECONNECT, &reconn) == 0 && reconn) #else if (m_lpMySQL.reconnect) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kopanocore-8.6.6.1/configure.ac new/kopanocore-8.6.7.2/configure.ac --- old/kopanocore-8.6.6.1/configure.ac 2018-08-03 09:36:26.000000000 +0200 +++ new/kopanocore-8.6.7.2/configure.ac 2018-08-17 10:11:59.000000000 +0200 @@ -1,5 +1,5 @@ AC_PREREQ(2.60) -AC_INIT([kopano], [8.6.6], [[email protected]]) +AC_INIT([kopano], [8.6.7], [[email protected]]) dnl ABI tags are used to prevent inadvertent mixing of wildly different dnl versions of KC components without knowing it. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kopanocore-8.6.6.1/inetmapi/VMIMEToMAPI.cpp new/kopanocore-8.6.7.2/inetmapi/VMIMEToMAPI.cpp --- old/kopanocore-8.6.6.1/inetmapi/VMIMEToMAPI.cpp 2018-08-03 09:36:26.000000000 +0200 +++ new/kopanocore-8.6.7.2/inetmapi/VMIMEToMAPI.cpp 2018-08-17 10:11:59.000000000 +0200 @@ -2380,7 +2380,8 @@ } /* * PR_HTML is a PT_BINARY, and can handle 0x00 bytes - * (e.g. in case of UTF-16 encoding). + * (e.g. in case of UTF-32 encoding). + * PR_BODY_HTML could only carry UTF-16 reliably. */ // write codepage for PR_HTML property @@ -2389,6 +2390,11 @@ sCodepage.Value.ul = 65001; strHTML = m_converter.convert_to<std::string>("UTF-8", strHTML, rawsize(strHTML), cs_cand[cs_best].c_str()); ec_log_info("No Win32 CPID for \"%s\" - upgrading text/html MIME body to UTF-8", cs_cand[cs_best].c_str()); + } else if (m_dopt.html_safety_filter) { + sCodepage.Value.ul = 65001; + strHTML = m_converter.convert_to<std::string>("UTF-8", strHTML, rawsize(strHTML), cs_cand[cs_best].c_str()); + /* libtidy only knows a very limited subset */ + ec_log_debug("Upgrading HTML to UTF-8 because of libtidy"); } if (bAppendBody && m_mailState.bodyLevel == BODY_HTML && m_mailState.ulLastCP && sCodepage.Value.ul != m_mailState.ulLastCP) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kopanocore-8.6.6.1/inetmapi/inetmapi.cpp new/kopanocore-8.6.7.2/inetmapi/inetmapi.cpp --- old/kopanocore-8.6.6.1/inetmapi/inetmapi.cpp 2018-08-03 09:36:26.000000000 +0200 +++ new/kopanocore-8.6.7.2/inetmapi/inetmapi.cpp 2018-08-17 10:11:59.000000000 +0200 @@ -77,6 +77,8 @@ return; vmime::generationContext::getDefaultContext().setWrapMessageId(false); + /* Sucky Outlook _still_ does not know RFC 2231. */ + vmime::generationContext::getDefaultContext().setEncodedParameterValueMode(vmime::generationContext::EncodedParameterValueModes::PARAMETER_VALUE_RFC2231_AND_RFC2047); // need to have a unique indentifier in the mediaType vmime::textPartFactory::getInstance()->registerType<vmime::mapiTextPart>(vmime::mediaType(vmime::mediaTypes::TEXT, "mapi")); // init our random engine for random message id generation diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kopanocore-8.6.6.1/librosie/librosie.cpp new/kopanocore-8.6.7.2/librosie/librosie.cpp --- old/kopanocore-8.6.6.1/librosie/librosie.cpp 2018-08-03 09:36:26.000000000 +0200 +++ new/kopanocore-8.6.7.2/librosie/librosie.cpp 2018-08-17 10:11:59.000000000 +0200 @@ -121,6 +121,10 @@ return rosie_strip_nodes(tdoc, tidyGetRoot(tdoc)); } +/* + * @in: Input HTML, which must be encoded as UTF-8. (<meta> is ignored.) + * @output: Output HTML, also UTF-8. + */ bool rosie_clean_html(const std::string &in, std::string *const out, std::vector<std::string> *const errors) { @@ -144,6 +148,7 @@ tidyOptSetBool(tdoc, TidyHideComments, yes); /* they don't help */ tidyOptSetBool(tdoc, TidyReplaceColor, yes); tidyOptSetBool(tdoc, TidyPreserveEntities, yes); + tidySetCharEncoding(tdoc, "utf8"); rc = tidySetErrorBuffer(tdoc, &errbuf); /* capture diagnostics */ if (rc != 0 && errors != NULL) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kopanocore-8.6.6.1/m4lcommon/CommonUtil.cpp new/kopanocore-8.6.7.2/m4lcommon/CommonUtil.cpp --- old/kopanocore-8.6.6.1/m4lcommon/CommonUtil.cpp 2018-08-03 09:36:26.000000000 +0200 +++ new/kopanocore-8.6.7.2/m4lcommon/CommonUtil.cpp 2018-08-17 10:11:59.000000000 +0200 @@ -2381,7 +2381,7 @@ return kc_perror("MAPIInitialize", ret); if (user == nullptr) user = pass = KOPANO_SYSTEM_USER; - ret = HrOpenECSession(&~m_session, "storeadm", PROJECT_VERSION, + ret = HrOpenECSession(&~m_session, m_app_misc, PROJECT_VERSION, user, pass, m_host, m_ses_flags, m_ssl_keyfile, m_ssl_keypass); if (ret != hrSuccess) return kc_perror("OpenECSession", ret); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kopanocore-8.6.6.1/php-ext/main.cpp new/kopanocore-8.6.7.2/php-ext/main.cpp --- old/kopanocore-8.6.6.1/php-ext/main.cpp 2018-08-03 09:36:26.000000000 +0200 +++ new/kopanocore-8.6.7.2/php-ext/main.cpp 2018-08-17 10:11:59.000000000 +0200 @@ -7009,6 +7009,10 @@ MAPI_G(hr) = lpIcalToMapi->ParseICal(icalMsg, "utf-8", "UTC", mailuser, 0); if (MAPI_G(hr) != hrSuccess) goto exit; + if (lpIcalToMapi->GetItemCount() == 0) { + MAPI_G(hr) = MAPI_E_TABLE_EMPTY; + goto exit; + } MAPI_G(hr) = lpIcalToMapi->GetItem(0, 0, lpMessage); if (MAPI_G(hr) != hrSuccess) goto exit; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kopanocore-8.6.6.1/php7-ext/main.cpp new/kopanocore-8.6.7.2/php7-ext/main.cpp --- old/kopanocore-8.6.6.1/php7-ext/main.cpp 2018-08-03 09:36:26.000000000 +0200 +++ new/kopanocore-8.6.7.2/php7-ext/main.cpp 2018-08-17 10:11:59.000000000 +0200 @@ -7047,6 +7047,15 @@ MAPI_G(hr) = lpIcalToMapi->ParseICal(icalMsg, "utf-8", "UTC", mailuser, 0); if (MAPI_G(hr) != hrSuccess) goto exit; + if (lpIcalToMapi->GetItemCount() == 0) { + /* + * Since there are 0 appointments in the message, GetItem(0) + * would fail with MAPI_E_INVALID_PARAMETER. Try giving + * something more appropriate. + */ + MAPI_G(hr) = MAPI_E_TABLE_EMPTY; + goto exit; + } MAPI_G(hr) = lpIcalToMapi->GetItem(0, 0, lpMessage); if (MAPI_G(hr) != hrSuccess) goto exit; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kopanocore-8.6.6.1/provider/client/ECMessage.cpp new/kopanocore-8.6.7.2/provider/client/ECMessage.cpp --- old/kopanocore-8.6.6.1/provider/client/ECMessage.cpp 2018-08-03 09:36:26.000000000 +0200 +++ new/kopanocore-8.6.7.2/provider/client/ECMessage.cpp 2018-08-17 10:11:59.000000000 +0200 @@ -2093,9 +2093,13 @@ hr = lpMessage->HrGetRealProp(PR_EC_BODY_FILTERED, ulFlags, lpBase, lpsPropValue); if (hr == hrSuccess) // yes, then use that break; + const char *codepage; + hr = lpMessage->HrGetRealProp(PR_INTERNET_CPID, ulFlags, lpBase, lpsPropValue); + if (hr != hrSuccess || HrGetCharsetByCP(lpsPropValue->Value.ul, &codepage) != hrSuccess) + codepage = "iso-8859-15"; /* [MS-OXCMAIL] ยง2.1.3.3.1 */ lpsPropValue->ulPropTag = PR_EC_BODY_FILTERED; - // else generate it on the fly + /* generate it on the fly */ memory_ptr<SPropValue> tprop; hr = MAPIAllocateBuffer(sizeof(SPropValue), &~tprop); if (hr != hrSuccess) @@ -2106,14 +2110,13 @@ break; } - std::string fltblk, memblk(reinterpret_cast<const char *>(tprop->Value.bin.lpb), tprop->Value.bin.cb); - std::copy_if(memblk.cbegin(), memblk.cend(), std::back_inserter(fltblk), [](char x) { return x != '\0'; }); - std::string result; + std::string result, fltblk = convert_to<std::string>("UTF-8", reinterpret_cast<const char *>(tprop->Value.bin.lpb), tprop->Value.bin.cb, codepage); std::vector<std::string> errors; bool rc = rosie_clean_html(fltblk, &result, &errors); // FIXME emit error somewhere somehow if (rc) { + result = convert_to<std::string>((codepage + std::string("//IGNORE")).c_str(), result.c_str(), result.size(), "UTF-8"); ULONG ulSize = result.size(); hr = ECAllocateMore(ulSize + 1, lpBase, reinterpret_cast<void **>(&lpsPropValue->Value.bin.lpb)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kopanocore-8.6.6.1/spooler/DAgent.cpp new/kopanocore-8.6.7.2/spooler/DAgent.cpp --- old/kopanocore-8.6.6.1/spooler/DAgent.cpp 2018-08-03 09:36:26.000000000 +0200 +++ new/kopanocore-8.6.7.2/spooler/DAgent.cpp 2018-08-17 10:11:59.000000000 +0200 @@ -2831,6 +2831,7 @@ if (lmtp.HrCommandLHLO(inBuffer, heloName) == hrSuccess) { lmtp.HrResponse("250-SERVER ready"); lmtp.HrResponse("250-PIPELINING"); + lmtp.HrResponse("250-8BITMIME"); lmtp.HrResponse("250-ENHANCEDSTATUSCODE"); lmtp.HrResponse("250 RSET"); } else {
