diff options
Diffstat (limited to 'qpid/wcf/src/Apache/Qpid/DtcPlugin/DtcPlugin.cpp')
-rw-r--r-- | qpid/wcf/src/Apache/Qpid/DtcPlugin/DtcPlugin.cpp | 7 |
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) {
|