]> granicus.if.org Git - pdns/commitdiff
auth: Ensure we increase the number of queued queries before decreasing it
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 15 Mar 2019 14:54:44 +0000 (15:54 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 15 Mar 2019 14:54:44 +0000 (15:54 +0100)
pdns/distributor.hh

index aa53f64a11050ef3458b5c4f41dff856fb8f1c45..ecc1509cd49525ca92f663e1c764e17845039642 100644 (file)
@@ -322,13 +322,12 @@ template<class Answer, class Question, class Backend>int MultiThreadDistributor<
   QD->Q=q;
   auto ret = QD->id = nextid++; // might be deleted after write!
   QD->callback=callback;
-  
-  if(write(d_pipes[QD->id % d_pipes.size()].second, &QD, sizeof(QD)) != sizeof(QD))
-    unixDie("write");
-
-  d_queued++;
-
 
+  ++d_queued;
+  if(write(d_pipes[QD->id % d_pipes.size()].second, &QD, sizeof(QD)) != sizeof(QD)) {
+    --d_queued;
+    unixDie("write");
+  }
 
   if(d_queued > d_maxQueueLength) {
     g_log<<Logger::Error<< d_queued <<" questions waiting for database/backend attention. Limit is "<<::arg().asNum("max-queue-length")<<", respawning"<<endl;