Fix retransmission issues (order, tracing, etc.)
[anna.git] / source / diameter.comm / Session.cpp
index 051cbce..06bec4b 100644 (file)
@@ -240,7 +240,6 @@ throw() {
   bool doUnbind = false;
   bool doRetransmission = false;
 
-  // Quitar el OnExpiry: no tiene sentido habiendo keep-alive (DWR)
   if(response->getClassCode() != ClassCode::Bind) {
     if(response->getRequest()->getOnExpiry() == Message::OnExpiry::Abandon) {
       a_onDisconnect = OnDisconnect::IgnorePendings; // Abandon is not graceful
@@ -270,19 +269,18 @@ throw() {
 
   if(doRetransmission) {
     diameter::comm::Message *request = const_cast<Message*>(response->getRequest());
-    eventRequestRetransmission(request);
-
     int retries = request->getRetries();
     if (retries > 0) {
       retries--;
       request->setRetries(retries);
       LOGDEBUG
       (
-        //std::string msg(asString());
-        std::string msg = anna::functions::asString("Retransmission initiated for request with HopByHop: %u; remaining %d retries", response->getHopByHop(), retries);
+        std::string msg(asString());
+        msg += anna::functions::asString(" | Retransmission initiated for request with HopByHop: %u; remaining %d retries", response->getHopByHop(), retries);
         anna::Logger::debug(msg, ANNA_FILE_LOCATION);
       );
       diameter::codec::functions::setPotentiallyReTransmittedMessageBit(*request);
+      eventRequestRetransmission(request);
       send(request);
     }
   }