# ${readsocket (Unix domain and IPv4) need_ipv4 # exim -be connfail cases (no server) 1 >>${readsocket{DIR/test-socket}{QUERY-1\n}}<< 2 ${if exists{DIR/test-socket}\ {>>${readsocket{DIR/test-socket}{QUERY-1\n}}<<}\ {++ no socket ++}} **** # # Note the difference between: # >*eof => close the connection # *eof => expect to read EOF from client # server DIR/test-socket 9 QUERY-1 >LF>ANSWER-1 >*eof QUERY-2 >>ANSWER-2 >*eof QUERY-3 >LF>ANSWER-3 >*eof QUERY-4 >LF>ANSWER-4 >*eof >>ANSWER-5 >*eof *sleep 1 >*eof >*eof QUERY-8 *sleep 2 *eof QUERY-9 *sleep 2 **** millisleep 500 exim -be unix-socket cases 1 >>${readsocket{DIR/test-socket}{QUERY-1\n}}<< 2 >>${readsocket{DIR/test-socket}{QUERY-2\n}}<< 3 >>${readsocket{DIR/test-socket}{QUERY-3\n}{2s}{*EOL*}}<< 4 >>${readsocket{DIR/test-socket}{QUERY-4\n}{2s}{*EOL*}{sock error}}<< 5 >>${readsocket{DIR/test-socket}{}}<< 6 >>${readsocket{DIR/test-socket}{QUERY-6\n}}<< 7 >>${readsocket{DIR/test-socket}{QUERY-7\n}{1s}{}{sock error}}<< 8 >>${readsocket{DIR/test-socket}{QUERY-8\n}{1s}}<< 9 >>${readsocket{DIR/test-socket}{QUERY-9\n}{1s}{}{sock error}}<< **** server DIR/test-socket QUERY-ACL *sleep 3 **** exim -odq -bs -oMa V4NET.0.0.0 quit **** # # Tests of IPv4 sockets # server PORT_S 18 QUERY-1 >LF>ANSWER-1 >*eof QUERY-2 >>ANSWER-2 >*eof QUERY-3 >LF>ANSWER-3 >*eof QUERY-4 >LF>ANSWER-4 >*eof >>ANSWER-5 >*eof *sleep 1 >*eof >*eof QUERY-8 *sleep 2 *eof QUERY-9 *sleep 2 *eof QUERY-10 >LF>ANSWER-10 >*eof >LF>ANSWER-11a >*eof QUERY-11 >LF>ANSWER-11b >*eof QUERY-12 >>ANSWER-12\x0d\x0aANSWER-12\x0d\x0a >*eof QUERY-13 >>ANSWER-13\x0d\x0aANSWER-13\x0d\x0a >*eof QUERY-14 >>ANSWER-14\x0d\x0aANSWER-14\x0d\x0a >*eof QUERY-15 >>ANSWER-15\x0d\x0aANSWER-15\x0d\x0a >*eof QUERY-16 >>ANSWER-16\x0d\x0aANSWER-16\x0d\x0a >*eof QUERY-17 >>ANSWER-17\x0d\x0aANSWER-17\x0d\x0a >*eof **** millisleep 500 exim -be ipv4 cases 1 ANSWER-1 >>${readsocket{inet:thisloop:PORT_S}{QUERY-1\n}}<< 2 ANSWER-2 >>${readsocket{inet:127.0.0.1:PORT_S}{QUERY-2\n}}<< 3 ANSWER-3*EOL* >>${readsocket{inet:127.0.0.1:PORT_S}{QUERY-3\n}{2s}{*EOL*}}<< 4 ANSWER-4*EOL* >>${readsocket{inet:127.0.0.1:PORT_S}{QUERY-4\n}{2s}{*EOL*}{sock error}}<< 5 ANSWER-5 >>${readsocket{inet:127.0.0.1:PORT_S}{}}<< 6 >>${readsocket{inet:127.0.0.1:PORT_S}{QUERY-6\n}}<< 7 >>${readsocket{inet:127.0.0.1:PORT_S}{QUERY-7\n}{1s}{}{sock error}}<< 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-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}}}<< 13 ANSWER-13x2 (empty arg) >>${escape:${readsocket{inet:127.0.0.1:PORT_S}{QUERY-13\n}{2s}{}}}<< 14 ANSWER-14x2 X >>${escape:${readsocket{inet:127.0.0.1:PORT_S}{QUERY-14\n}{2s}{X}}}<< 15 ANSWER-15x2 XYZZY >>${escape:${readsocket{inet:127.0.0.1:PORT_S}{QUERY-15\n}{2s}{XYZZY}}}<< 16 ANSWER-16x2 (space) >>${escape:${readsocket{inet:127.0.0.1:PORT_S}{QUERY-16\n}{2s}{ }}}<< 17 ANSWER-17x2 (newline) >>${escape:${readsocket{inet:127.0.0.1:PORT_S}{QUERY-17\n}{2s}{\n}}}<< **** # exim -be crash-regression-check >>${readsocket{inet:127.0.0.1:PORT_N}{}{}}<< **** # # Caching of response value server DIR/test-socket 3 QUERY-1 >LF>ANSWER-1 >*eof QUERY-2 >LF>ANSWER-2 >*eof QUERY-1 >LF>ANSWER-1 >*eof **** millisleep 500 exim -be caching of response value 1 >>${readsocket{DIR/test-socket}{QUERY-1\n}{5s:cache=yes}}<< 1+ >>${readsocket{DIR/test-socket}{QUERY-1\n}{5s:cache=yes}}<< 2 >>${readsocket{DIR/test-socket}{QUERY-2\n}{5s:cache=yes}}<< 2- >>${readsocket{DIR/test-socket2}{QUERY-2\n}{5s:cache=yes}{}{expected failure}}<< 1- >>${readsocket{DIR/test-socket2}{QUERY-1\n}{5s:cache=yes}{}{expected failure}}<< 1+ >>${readsocket{DIR/test-socket}{QUERY-1\n}{5s:cache=yes}}<< 1- >>${readsocket{DIR/test-socket}{QUERY-1\n}{5s}}<< ****