if(wantWrite && !rwVect.second.empty()) {
shuffle(rwVect.second.begin(), rwVect.second.end(), pdns::dns_random_engine()); // pick random available worker
- auto ptr = d_rrsetToSign.release();
- try {
- writen2(*rwVect.second.begin(), &ptr, sizeof(ptr));
- }
- catch (...) {
- delete ptr;
- throw;
- }
+ auto ptr = d_rrsetToSign.get();
+ writen2(*rwVect.second.begin(), &ptr, sizeof(ptr));
+ d_rrsetToSign.release();
d_rrsetToSign = make_unique<rrset_t>();
d_outstandings[*rwVect.second.begin()]++;
d_outstanding++;
if(wantWrite) { // our optimization above failed, we now wait synchronously
rwVect = waitForRW(false, wantWrite, -1); // wait for something to happen
shuffle(rwVect.second.begin(), rwVect.second.end(), pdns::dns_random_engine()); // pick random available worker
- auto ptr = d_rrsetToSign.release();
- try {
- writen2(*rwVect.second.begin(), &ptr, sizeof(ptr));
- }
- catch (...) {
- delete ptr;
- throw;
- }
+ auto ptr = d_rrsetToSign.get();
+ writen2(*rwVect.second.begin(), &ptr, sizeof(ptr));
+ d_rrsetToSign.release();
d_rrsetToSign = make_unique<rrset_t>();
d_outstandings[*rwVect.second.begin()]++;
d_outstanding++;