summaryrefslogtreecommitdiff
path: root/qpid/wcf/src/Apache/Qpid/DtcPlugin/DtcPlugin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/wcf/src/Apache/Qpid/DtcPlugin/DtcPlugin.cpp')
-rw-r--r--qpid/wcf/src/Apache/Qpid/DtcPlugin/DtcPlugin.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/qpid/wcf/src/Apache/Qpid/DtcPlugin/DtcPlugin.cpp b/qpid/wcf/src/Apache/Qpid/DtcPlugin/DtcPlugin.cpp
index 33d125e3c6..ec98289923 100644
--- a/qpid/wcf/src/Apache/Qpid/DtcPlugin/DtcPlugin.cpp
+++ b/qpid/wcf/src/Apache/Qpid/DtcPlugin/DtcPlugin.cpp
@@ -49,6 +49,7 @@
#include "qpid/client/AsyncSession.h"
#include "qpid/client/Connection.h"
+#include "qpid/framing/FieldValue.h"
#include <map>
@@ -472,13 +473,15 @@ INT ResourceManager::recover(XID *xids, long count, long flags) {
try {
// status if we can't talk to the broker
status = XAER_RMFAIL;
- std::vector<std::string> wireFormatXids;
DtxRecoverResult dtxrr = qpidSession.dtxRecover(true);
// status if we can't process the xids
status = XAER_RMERR;
- dtxrr.getInDoubt().collect(wireFormatXids);
+
+ std::vector<std::string> wireFormatXids(dtxrr.getInDoubt().size());
+ std::transform(dtxrr.getInDoubt().begin(), dtxrr.getInDoubt().end(), wireFormatXids.begin(), Array::get<std::string, Array::ValuePtr>);
+
size_t nXids = wireFormatXids.size();
if (nXids > 0) {