Compiler quietening and testcase consistency
[exim.git] / src / src / deliver.c
index fff0e2fd088202a054c0d6d92bd4d5b15749d98a..3334ba2cb3ea98418ed4388ce7856580300c3d37 100644 (file)
@@ -1088,6 +1088,10 @@ if (result == OK)
   addr->ourcert = NULL;
   tls_out.peercert = addr->peercert;
   addr->peercert = NULL;
+
+  tls_out.cipher = addr->cipher;
+  tls_out.peerdn = addr->peerdn;
+  tls_out.ocsp = addr->ocsp;
   #endif
 
   delivery_log(LOG_MAIN, addr, logchar, NULL);
@@ -1103,6 +1107,9 @@ if (result == OK)
     tls_free_cert(tls_out.peercert);
     tls_out.peercert = NULL;
     }
+  tls_out.cipher = NULL;
+  tls_out.peerdn = NULL;
+  tls_out.ocsp = OCSP_NOT_REQ;
   #endif
   }
 
@@ -2987,9 +2994,7 @@ while (!done)
        addr->cipher = string_copy(ptr);
       while (*ptr++);
       if (*ptr)
-       {
        addr->peerdn = string_copy(ptr);
-       }
       break;
 
       case '2':
@@ -3003,6 +3008,14 @@ while (!done)
       if (*ptr)
        (void) tls_import_cert(ptr, &addr->ourcert);
       break;
+
+      #ifdef EXPERIMENTAL_OCSP
+      case '4':
+      addr->ocsp = OCSP_NOT_REQ;
+      if (*ptr)
+       addr->ocsp = *ptr - '0';
+      break;
+      #endif
       }
     while (*ptr++);
     break;
@@ -4132,7 +4145,16 @@ for (delivery_count = 0; addr_remote != NULL; delivery_count++)
          *ptr++ = 0;
         rmt_dlv_checked_write(fd, big_buffer, ptr - big_buffer);
        }
-      #endif
+      # ifdef EXPERIMENTAL_OCSP
+      if (addr->ocsp > OCSP_NOT_REQ)
+       {
+       ptr = big_buffer;
+       sprintf(CS ptr, "X4%c", addr->ocsp + '0');
+       while(*ptr++);
+        rmt_dlv_checked_write(fd, big_buffer, ptr - big_buffer);
+       }
+      # endif
+      #endif   /*SUPPORT_TLS*/
 
       if (client_authenticator)
         {