Fix shutdown=no in ${readsocket}. Bug 2784
authorJeremy Harris <jgh146exb@wizmail.org>
Mon, 22 Nov 2021 18:02:34 +0000 (18:02 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Mon, 22 Nov 2021 18:18:31 +0000 (18:18 +0000)
Broken-by: 1950cf85b4
doc/doc-txt/ChangeLog
src/src/lookups/readsock.c
test/scripts/0000-Basic/0373
test/stdout/0373

index 4ca9323f0241c1a547dee36593775aa2f8a46b35..1d4b3c1c5d27da05d8d1cc30849581848eab129e 100644 (file)
@@ -811,6 +811,10 @@ JH/47 ARC: fix crash in signing, triggered when a configuration error failed
       to do ARC verification.  The Authentication-Results: header line added
       by the configuration then had no ARC item.
 
       to do ARC verification.  The Authentication-Results: header line added
       by the configuration then had no ARC item.
 
+JH/48 Bug 2784: fix shutdown=no in the ${readsocket) expansion item.  Previously
+      an incorrect mode was used for reading the result, resulting in it being
+      ignored.
+
 
 Exim version 4.92
 -----------------
 
 Exim version 4.92
 -----------------
index 7bb3b9ab55ce59ecdf3fab248839a7417c5c2027..06058ed17792757d72cdc5b8a42c46116721f831 100644 (file)
@@ -255,7 +255,7 @@ if (TRUE)
 if (!cctx->tls_ctx)
 #endif
   {
 if (!cctx->tls_ctx)
 #endif
   {
-  FILE * fp = fdopen(cctx->sock, lf.do_shutdown ? "rb" : "wb");
+  FILE * fp = fdopen(cctx->sock, "rb");
   ALARM(timeout);
   yield = cat_file(fp, NULL, eol);
   }
   ALARM(timeout);
   yield = cat_file(fp, NULL, eol);
   }
index 37c98e0ab3e93b47d4643cb761803ec962d698f3..cb3e00608c0fcddbd45c3ecaf565a9506ba0f5e6 100644 (file)
@@ -60,7 +60,7 @@ quit
 #
 # Tests of IPv4 sockets
 #
 #
 # Tests of IPv4 sockets
 #
-server PORT_S 17
+server PORT_S 18
 QUERY-1
 >LF>ANSWER-1
 >*eof
 QUERY-1
 >LF>ANSWER-1
 >*eof
@@ -87,7 +87,10 @@ QUERY-9
 QUERY-10
 >LF>ANSWER-10
 >*eof
 QUERY-10
 >LF>ANSWER-10
 >*eof
->LF>ANSWER-11
+>LF>ANSWER-11a
+>*eof
+QUERY-11
+>LF>ANSWER-11b
 >*eof
 QUERY-12
 >>ANSWER-12\x0d\x0aANSWER-12\x0d\x0a
 >*eof
 QUERY-12
 >>ANSWER-12\x0d\x0aANSWER-12\x0d\x0a
@@ -121,7 +124,8 @@ ipv4 cases
 8 read timed out >>${readsocket{inet:127.0.0.1:PORT_S}{QUERY-8\n}{1s}}<<
 9  sock error    >>${readsocket{inet:127.0.0.1:PORT_S}{QUERY-9\n}{1s}{}{sock error}}<<
 10 ANSWER-10\\n     >>${readsocket{inet:badloop:PORT_S}{QUERY-10\n}}<<
 8 read timed out >>${readsocket{inet:127.0.0.1:PORT_S}{QUERY-8\n}{1s}}<<
 9  sock error    >>${readsocket{inet:127.0.0.1:PORT_S}{QUERY-9\n}{1s}{}{sock error}}<<
 10 ANSWER-10\\n     >>${readsocket{inet:badloop:PORT_S}{QUERY-10\n}}<<
-11 ANSWER-11     >>${readsocket{inet:thisloop:PORT_S}{QUERY-11\n}{2s:shutdown=no}}<<
+11 ANSWER-11a    >>${readsocket{inet:thisloop:PORT_S}{QUERY-11\n}{2s:shutdown=no}}<<
+11 ANSWER-11b    >>${readsocket{inet:thisloop:PORT_S}{QUERY-11\n}{2s:shutdown=no}}<<
 
 eol-replacement arg
 12 ANSWER-12x2  (no arg)     >>${escape:${readsocket{inet:127.0.0.1:PORT_S}{QUERY-12\n}{2s}}}<<
 
 eol-replacement arg
 12 ANSWER-12x2  (no arg)     >>${escape:${readsocket{inet:127.0.0.1:PORT_S}{QUERY-12\n}{2s}}}<<
index 1e97d0decc859d5e203e300f2bd9d206f8055fc4..2bd1fe67a2b435025b3551d7ee25335ab2028880 100644 (file)
 > 9  sock error    >>sock error<<
 > 10 ANSWER-10\n     >>ANSWER-10
 <<
 > 9  sock error    >>sock error<<
 > 10 ANSWER-10\n     >>ANSWER-10
 <<
-> 11 ANSWER-11     >><<
+> 11 ANSWER-11a    >>ANSWER-11a
+<<
+> 11 ANSWER-11b    >>ANSWER-11b
+<<
 > 
 > eol-replacement arg
 > 12 ANSWER-12x2  (no arg)     >>ANSWER-12\r\nANSWER-12\r\n<<
 > 
 > eol-replacement arg
 > 12 ANSWER-12x2  (no arg)     >>ANSWER-12\r\nANSWER-12\r\n<<
@@ -150,7 +153,12 @@ QUERY-10
 >*eof
 Listening on port 1224 ... 
 Connection request from [ip4.ip4.ip4.ip4]
 >*eof
 Listening on port 1224 ... 
 Connection request from [ip4.ip4.ip4.ip4]
->LF>ANSWER-11
+>LF>ANSWER-11a
+>*eof
+Listening on port 1224 ... 
+Connection request from [ip4.ip4.ip4.ip4]
+QUERY-11
+>LF>ANSWER-11b
 >*eof
 Listening on port 1224 ... 
 Connection request from [127.0.0.1]
 >*eof
 Listening on port 1224 ... 
 Connection request from [127.0.0.1]