]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-3.6-20200610
authorWietse Venema <wietse@porcupine.org>
Wed, 10 Jun 2020 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <postfix-users@dukhovni.org>
Wed, 10 Jun 2020 21:39:18 +0000 (17:39 -0400)
37 files changed:
postfix/HISTORY
postfix/conf/postmulti-script
postfix/html/master.5.html
postfix/man/man5/master.5
postfix/proto/master
postfix/src/global/dsb_scan.c
postfix/src/global/dsb_scan.h
postfix/src/global/dsn_print.c
postfix/src/global/dsn_print.h
postfix/src/global/mail_version.h
postfix/src/global/msg_stats.h
postfix/src/global/msg_stats_print.c
postfix/src/global/msg_stats_scan.c
postfix/src/global/rcpt_buf.c
postfix/src/global/rcpt_buf.h
postfix/src/global/rcpt_print.c
postfix/src/global/rcpt_print.h
postfix/src/milter/milter.h
postfix/src/milter/milter_macros.c
postfix/src/tls/tls_misc.c
postfix/src/tls/tls_proxy.h
postfix/src/tls/tls_proxy_client_print.c
postfix/src/tls/tls_proxy_client_scan.c
postfix/src/tls/tls_proxy_context_print.c
postfix/src/tls/tls_proxy_context_scan.c
postfix/src/tls/tls_proxy_server_print.c
postfix/src/tls/tls_proxy_server_scan.c
postfix/src/util/argv_attr.h
postfix/src/util/argv_attr_print.c
postfix/src/util/argv_attr_scan.c
postfix/src/util/attr.h
postfix/src/util/attr_print0.c
postfix/src/util/attr_print64.c
postfix/src/util/attr_print_plain.c
postfix/src/util/attr_scan0.c
postfix/src/util/attr_scan64.c
postfix/src/util/attr_scan_plain.c

index 2aa23d9d5c4fced975d8658d720e84ba8ea257b1..dc1eec0441b4fa01ead9c2eafc6b33dc29082051 100644 (file)
@@ -24839,3 +24839,31 @@ Apologies for any names omitted.
        agent visible, where it would otherwise have remained
        invisible, which would complicate troubleshooting. File:
        global/deliver_pass.c.
+
+20200610
+
+       Respectful code: replace 'slave' in internal identifiers
+       and comments, and make the master(5) description more
+       consistent with that in master(8). Postfix does not have a
+       master/slave architecture, and these identifiers and comments
+       were just poorly worded. Files: conf/postmulti-script,
+       html/master.5.html, man/man5/master.5, proto/master,
+       global/dsb_scan.c, global/dsb_scan.h, global/dsn_print.c,
+       global/dsn_print.h, global/msg_stats.h, global/msg_stats_print.c,
+       global/msg_stats_scan.c, global/rcpt_buf.c, global/rcpt_buf.h,
+       global/rcpt_print.c, global/rcpt_print.h, milter/milter.h,
+       milter/milter_macros.c, tls/tls_proxy.h,
+       tls/tls_proxy_client_print.c, tls/tls_proxy_client_scan.c,
+       tls/tls_proxy_context_print.c, tls/tls_proxy_context_scan.c,
+       tls/tls_proxy_server_print.c, tls/tls_proxy_server_scan.c,
+       util/argv_attr.h, util/argv_attr_print.c, util/argv_attr_scan.c,
+       util/attr.h, util/attr_print0.c, util/attr_print64.c,
+       util/attr_print_plain.c, util/attr_scan0.c, util/attr_scan64.c,
+       util/attr_scan_plain.c.
+
+       Bugfix (introduced: Postfix 3.4): in the Postfix SMTP server,
+       the SNI callback reported an error when it was called a
+       second time. This happened after the server-side TLS engine
+       sent a TLSv1.3 HelloRetryRequest (HRR) to a remote SMTP
+       client. Reported by Ján Máté, fixed by Viktor Dukhovni.
+       File: tls/tls_misc.c.
index b1aea8e0e44051cea1d4b1eb72dc7396194cd116..934228d1627f86f7195bd12380d7a5179eefe810 100644 (file)
@@ -219,7 +219,7 @@ create|import)
     # and drop from alternate_config_directories
     #
     # XXX: Must happen before set-permissions below, otherwise instance
-    # is treated as a non-slave instance by post-install via postfix(1).
+    # is treated as an independent instance by post-install via postfix(1).
     #
     update_cfdirs del $config_directory || exit 1
 
@@ -227,7 +227,7 @@ create|import)
     # queue_directory and data_directory, ...
     #
     # XXX: Must happen after instance list updates above, otherwise instance
-    # is treated as a non-slave instance by post-install via postfix(1).
+    # is treated as an independent instance by post-install via postfix(1).
     #
     postfix -c $config_directory set-permissions || exit 1
     ;;
index 4e488fc021ff19fda190de038dfe69c3bcd4a565..4e25297e535c79516c757c26e67ca19b51ce8e89 100644 (file)
@@ -15,41 +15,41 @@ MASTER(5)                                                            MASTER(5)
        services that run in the background.
 
        Postfix  services are implemented by daemon processes. These run in the
-       background under control of the <a href="master.8.html"><b>master</b>(8)</a> process.  The <a href="master.5.html">master.cf</a>  con-
-       figuration file defines how a client program connects to a service, and
-       what daemon program runs when a service is requested.  Most daemon pro-
-       cesses  are short-lived and terminate voluntarily after serving <b><a href="postconf.5.html#max_use">max_use</a></b>
-       clients, or after inactivity for <b><a href="postconf.5.html#max_idle">max_idle</a></b> or more units of time.
-
-       All daemons specified here must speak a Postfix-internal  protocol.  In
-       order  to  execute  non-Postfix  software  use the <a href="local.8.html"><b>local</b>(8)</a>, <a href="pipe.8.html"><b>pipe</b>(8)</a> or
-       <a href="spawn.8.html"><b>spawn</b>(8)</a> services, or run the  server  under  control  by  <b>inetd</b>(8)  or
-       equivalent.
-
-       After  changing  <a href="master.5.html">master.cf</a>  you must execute "<b>postfix reload</b>" to reload
+       background, started on-demand by the <a href="master.8.html"><b>master</b>(8)</a> process.  The  <a href="master.5.html">master.cf</a>
+       configuration  file defines how a client program connects to a service,
+       and what daemon program runs when a service is requested.  Most  daemon
+       processes  are  short-lived  and  terminate  voluntarily  after serving
+       <b><a href="postconf.5.html#max_use">max_use</a></b> clients, or after inactivity for  <b><a href="postconf.5.html#max_idle">max_idle</a></b>  or  more  units  of
+       time.
+
+       All  daemons  specified here must speak a Postfix-internal protocol. In
+       order to execute non-Postfix software  use  the  <a href="local.8.html"><b>local</b>(8)</a>,  <a href="pipe.8.html"><b>pipe</b>(8)</a>  or
+       <a href="spawn.8.html"><b>spawn</b>(8)</a> services, or execute the software with <b>inetd</b>(8) or equivalent.
+
+       After changing <a href="master.5.html">master.cf</a> you must execute "<b>postfix  reload</b>"  to  reload
        the configuration.
 
 <b>SYNTAX</b>
        The general format of the <a href="master.5.html">master.cf</a> file is as follows:
 
-       <b>o</b>      Empty lines and whitespace-only lines are ignored, as are  lines
+       <b>o</b>      Empty  lines and whitespace-only lines are ignored, as are lines
               whose first non-whitespace character is a `#'.
 
-       <b>o</b>      A  logical  line  starts  with  non-whitespace text. A line that
+       <b>o</b>      A logical line starts with  non-whitespace  text.  A  line  that
               starts with whitespace continues a logical line.
 
-       <b>o</b>      Each logical line defines a single Postfix service.   Each  ser-
-              vice  is  identified  by  its  name and type as described below.
+       <b>o</b>      Each  logical  line defines a single Postfix service.  Each ser-
+              vice is identified by its name  and  type  as  described  below.
               When multiple lines specify the same service name and type, only
-              the  last  one is remembered.  Otherwise, the order of <a href="master.5.html">master.cf</a>
+              the last one is remembered.  Otherwise, the order  of  <a href="master.5.html">master.cf</a>
               service definitions does not matter.
 
-       Each logical line consists of eight  fields  separated  by  whitespace.
-       These  are described below in the order as they appear in the <a href="master.5.html">master.cf</a>
+       Each  logical  line  consists  of eight fields separated by whitespace.
+       These are described below in the order as they appear in the  <a href="master.5.html">master.cf</a>
        file.
 
-       Where applicable a field of "-"  requests  that  the  built-in  default
-       value  be  used.  For boolean fields specify "y" or "n" to override the
+       Where  applicable  a  field  of  "-" requests that the built-in default
+       value be used. For boolean fields specify "y" or "n"  to  override  the
        default value.
 
        <b>Service name</b>
@@ -59,70 +59,70 @@ MASTER(5)                                                            MASTER(5)
        <b>Service type</b>
               Specify one of the following service types:
 
-              <b>inet</b>   The  service listens on a TCP/IP socket and is accessible
+              <b>inet</b>   The service listens on a TCP/IP socket and is  accessible
                      via the network.
 
-                     The service name is specified as <i>host:port</i>, denoting  the
-                     host   and  port  on  which  new  connections  should  be
-                     accepted. The host  part  (and  colon)  may  be  omitted.
-                     Either  host  or  port may be given in symbolic form (see
-                     <b>hosts</b>(5) or <b>services</b>(5)) or in numeric form  (IP  address
+                     The  service name is specified as <i>host:port</i>, denoting the
+                     host  and  port  on  which  new  connections  should   be
+                     accepted.  The  host  part  (and  colon)  may be omitted.
+                     Either host or port may be given in  symbolic  form  (see
+                     <b>hosts</b>(5)  or  <b>services</b>(5)) or in numeric form (IP address
                      or port number).  Host information may be enclosed inside
                      "[]"; this form is necessary only with IPv6 addresses.
 
-                     Examples: a  service  named  <b>127.0.0.1:smtp</b>  or  <b>::1:smtp</b>
+                     Examples:  a  service  named  <b>127.0.0.1:smtp</b>  or <b>::1:smtp</b>
                      receives mail via the loopback interface only; and a ser-
-                     vice named <b>10025</b> accepts connections on  TCP  port  10025
-                     via  all  interfaces  configured with the <b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a></b>
+                     vice  named  <b>10025</b>  accepts connections on TCP port 10025
+                     via all interfaces configured  with  the  <b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a></b>
                      parameter.
 
-                     Note:  with  Postfix  version  2.2  and   later   specify
-                     "<b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a>  = loopback-only</b>" in <a href="postconf.5.html">main.cf</a>, instead of
-                     hard-coding loopback IP address information in  <a href="master.5.html">master.cf</a>
+                     Note:   with   Postfix  version  2.2  and  later  specify
+                     "<b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = loopback-only</b>" in <a href="postconf.5.html">main.cf</a>, instead  of
+                     hard-coding  loopback IP address information in <a href="master.5.html">master.cf</a>
                      or in <a href="postconf.5.html">main.cf</a>.
 
               <b>unix</b>   The service listens on a UNIX-domain stream socket and is
                      accessible for local clients only.
 
-                     The service name is a pathname relative  to  the  Postfix
-                     queue    directory    (pathname   controlled   with   the
+                     The  service  name  is a pathname relative to the Postfix
+                     queue   directory   (pathname   controlled    with    the
                      <b><a href="postconf.5.html#queue_directory">queue_directory</a></b> configuration parameter in <a href="postconf.5.html">main.cf</a>).
 
-                     On Solaris 8 and earlier systems the <b>unix</b> type is  imple-
+                     On  Solaris 8 and earlier systems the <b>unix</b> type is imple-
                      mented with streams sockets.
 
               <b>unix-dgram</b>
-                     The  service listens on a UNIX-domain datagram socket and
+                     The service listens on a UNIX-domain datagram socket  and
                      is accessible for local clients only.
 
-                     The service name is a pathname relative  to  the  Postfix
-                     queue    directory    (pathname   controlled   with   the
+                     The  service  name  is a pathname relative to the Postfix
+                     queue   directory   (pathname   controlled    with    the
                      <b><a href="postconf.5.html#queue_directory">queue_directory</a></b> configuration parameter in <a href="postconf.5.html">main.cf</a>).
 
               <b>fifo</b> (obsolete)
-                     The service listens on a FIFO (named pipe) and is  acces-
+                     The  service listens on a FIFO (named pipe) and is acces-
                      sible for local clients only.
 
-                     The  service  name  is a pathname relative to the Postfix
-                     queue   directory   (pathname   controlled    with    the
+                     The service name is a pathname relative  to  the  Postfix
+                     queue    directory    (pathname   controlled   with   the
                      <b><a href="postconf.5.html#queue_directory">queue_directory</a></b> configuration parameter in <a href="postconf.5.html">main.cf</a>).
 
-              <b>pass</b>   The  service  listens on a UNIX-domain stream socket, and
+              <b>pass</b>   The service listens on a UNIX-domain stream  socket,  and
                      is accessible to local clients only. It receives one open
-                     connection   (file  descriptor  passing)  per  connection
+                     connection  (file  descriptor  passing)  per   connection
                      request.
 
-                     The service name is a pathname relative  to  the  Postfix
-                     queue    directory    (pathname   controlled   with   the
+                     The  service  name  is a pathname relative to the Postfix
+                     queue   directory   (pathname   controlled    with    the
                      <b><a href="postconf.5.html#queue_directory">queue_directory</a></b> configuration parameter in <a href="postconf.5.html">main.cf</a>).
 
-                     On Solaris 8 and earlier systems the <b>pass</b> type is  imple-
+                     On  Solaris 8 and earlier systems the <b>pass</b> type is imple-
                      mented with streams sockets.
 
                      This feature is available as of Postfix version 2.5.
 
        <b>Private (default: y)</b>
-              Whether  or not access is restricted to the mail system.  Inter-
+              Whether or not access is restricted to the mail system.   Inter-
               net (type <b>inet</b>) services can't be private.
 
        <b>Unprivileged (default: y)</b>
@@ -130,80 +130,80 @@ MASTER(5)                                                            MASTER(5)
               the  Postfix  system  (the  owner  name  is  controlled  by  the
               <b><a href="postconf.5.html#mail_owner">mail_owner</a></b> configuration variable in the <a href="postconf.5.html">main.cf</a> file).
 
-              The <a href="local.8.html"><b>local</b>(8)</a>, <a href="pipe.8.html"><b>pipe</b>(8)</a>, <a href="spawn.8.html"><b>spawn</b>(8)</a>, and <a href="virtual.8.html"><b>virtual</b>(8)</a> daemons  require
+              The  <a href="local.8.html"><b>local</b>(8)</a>, <a href="pipe.8.html"><b>pipe</b>(8)</a>, <a href="spawn.8.html"><b>spawn</b>(8)</a>, and <a href="virtual.8.html"><b>virtual</b>(8)</a> daemons require
               privileges.
 
        <b>Chroot (default: Postfix</b> &gt;<b>= 3.0: n, Postfix</b> &lt;<b>3.0: y)</b>
-              Whether  or  not  the  service  runs  chrooted to the mail queue
+              Whether or not the service  runs  chrooted  to  the  mail  queue
               directory (pathname is controlled by the <b><a href="postconf.5.html#queue_directory">queue_directory</a></b> config-
               uration variable in the <a href="postconf.5.html">main.cf</a> file).
 
-              Chroot  should not be used with the <a href="local.8.html"><b>local</b>(8)</a>, <a href="pipe.8.html"><b>pipe</b>(8)</a>, <a href="spawn.8.html"><b>spawn</b>(8)</a>,
+              Chroot should not be used with the <a href="local.8.html"><b>local</b>(8)</a>, <a href="pipe.8.html"><b>pipe</b>(8)</a>,  <a href="spawn.8.html"><b>spawn</b>(8)</a>,
               and <a href="virtual.8.html"><b>virtual</b>(8)</a> daemons.  Although the <a href="proxymap.8.html"><b>proxymap</b>(8)</a> server can run
-              chrooted,  doing  so  defeats most of the purpose of having that
+              chrooted, doing so defeats most of the purpose  of  having  that
               service in the first place.
 
               The files in the examples/chroot-setup subdirectory of the Post-
-              fix  source show how to set up a Postfix chroot environment on a
-              variety of  systems.  See  also  <a href="BASIC_CONFIGURATION_README.html">BASIC_CONFIGURATION_README</a>  for
+              fix source show how to set up a Postfix chroot environment on  a
+              variety  of  systems.  See  also  <a href="BASIC_CONFIGURATION_README.html">BASIC_CONFIGURATION_README</a> for
               issues related to running daemons chrooted.
 
        <b>Wake up time (default: 0)</b>
               Automatically wake up the named service after the specified num-
-              ber of seconds. The wake up is implemented by connecting to  the
-              service  and  sending  a wake up request.  A ? at the end of the
-              wake-up time field requests that  no  wake  up  events  be  sent
+              ber  of seconds. The wake up is implemented by connecting to the
+              service and sending a wake up request.  A ? at the  end  of  the
+              wake-up  time  field  requests  that  no  wake up events be sent
               before the first time a service is used.  Specify 0 for no auto-
               matic wake up.
 
-              The <a href="pickup.8.html"><b>pickup</b>(8)</a>, <a href="qmgr.8.html"><b>qmgr</b>(8)</a> and <a href="flush.8.html"><b>flush</b>(8)</a> daemons require  a  wake  up
+              The  <a href="pickup.8.html"><b>pickup</b>(8)</a>,  <a href="qmgr.8.html"><b>qmgr</b>(8)</a>  and <a href="flush.8.html"><b>flush</b>(8)</a> daemons require a wake up
               timer.
 
        <b>Process limit (default: $<a href="postconf.5.html#default_process_limit">default_process_limit</a>)</b>
-              The  maximum  number  of processes that may execute this service
+              The maximum number of processes that may  execute  this  service
               simultaneously. Specify 0 for no process count limit.
 
-              NOTE: Some  Postfix  services  must  be  configured  as  a  sin-
-              gle-process  service  (for  example,  <a href="qmgr.8.html"><b>qmgr</b>(8)</a>) and some services
-              must  be  configured  with  no  process  limit   (for   example,
+              NOTE:  Some  Postfix  services  must  be  configured  as  a sin-
+              gle-process service (for example,  <a href="qmgr.8.html"><b>qmgr</b>(8)</a>)  and  some  services
+              must   be   configured  with  no  process  limit  (for  example,
               <a href="cleanup.8.html"><b>cleanup</b>(8)</a>).  These limits must not be changed.
 
        <b>Command name + arguments</b>
-              The  command to be executed.  Characters that are special to the
-              shell such as "&gt;" or "|"  have  no  special  meaning  here,  and
-              quotes  cannot  be  used  to protect arguments containing white-
-              space. To protect whitespace,  use  "{"  and  "}"  as  described
+              The command to be executed.  Characters that are special to  the
+              shell  such  as  "&gt;"  or  "|"  have no special meaning here, and
+              quotes cannot be used to  protect  arguments  containing  white-
+              space.  To  protect  whitespace,  use  "{"  and "}" as described
               below.
 
-              The  command  name  is  relative to the Postfix daemon directory
-              (pathname is controlled by  the  <b><a href="postconf.5.html#daemon_directory">daemon_directory</a></b>  configuration
+              The command name is relative to  the  Postfix  daemon  directory
+              (pathname  is  controlled  by the <b><a href="postconf.5.html#daemon_directory">daemon_directory</a></b> configuration
               variable).
 
-              The  command  argument syntax for specific commands is specified
+              The command argument syntax for specific commands  is  specified
               in the respective daemon manual page.
 
-              The following command-line options have the same effect for  all
+              The  following command-line options have the same effect for all
               daemon programs:
 
-              <b>-D</b>     Run  the  daemon  under  control by the command specified
+              <b>-D</b>     Run the daemon under control  by  the  command  specified
                      with the <b><a href="postconf.5.html#debugger_command">debugger_command</a></b> variable in the <a href="postconf.5.html">main.cf</a> config-
                      uration file.  See <a href="DEBUG_README.html">DEBUG_README</a> for hints and tips.
 
               <b>-o {</b> <i>name</i> = <i>value</i> <b>}</b> (long form, Postfix &gt;= 3.0)
 
               <b>-o</b> <i>name</i>=<i>value</i> (short form)
-                     Override  the  named <a href="postconf.5.html">main.cf</a> configuration parameter. The
-                     parameter value can refer to other  parameters  as  <i>$name</i>
-                     etc.,  just like in <a href="postconf.5.html">main.cf</a>.  See <a href="postconf.5.html"><b>postconf</b>(5)</a> for syntax.
+                     Override the named <a href="postconf.5.html">main.cf</a> configuration  parameter.  The
+                     parameter  value  can  refer to other parameters as <i>$name</i>
+                     etc., just like in <a href="postconf.5.html">main.cf</a>.  See <a href="postconf.5.html"><b>postconf</b>(5)</a> for  syntax.
 
-                     NOTE 1: With the  "long  form"  shown  above,  whitespace
-                     after  "{",  around  "=",  and before "}" is ignored, and
+                     NOTE  1:  With  the  "long  form" shown above, whitespace
+                     after "{", around "=", and before  "}"  is  ignored,  and
                      whitespace within the parameter value is preserved.
 
                      NOTE 2: with the "short form" shown above, do not specify
-                     whitespace  around  the  "="  or  in parameter values. To
-                     specify a parameter value that contains  whitespace,  use
-                     the  long  form described above, or use commas instead of
+                     whitespace around the "="  or  in  parameter  values.  To
+                     specify  a  parameter value that contains whitespace, use
+                     the long form described above, or use commas  instead  of
                      spaces, or specify the value in <a href="postconf.5.html">main.cf</a>. Example:
 
                      /etc/postfix/<a href="master.5.html">master.cf</a>:
@@ -214,18 +214,18 @@ MASTER(5)                                                            MASTER(5)
                          submission_xxx_yyy = text with whitespace...
 
                      NOTE 3: Over-zealous use of parameter overrides makes the
-                     Postfix  configuration  hard  to understand and maintain.
-                     At a certain point, it might be easier to configure  mul-
+                     Postfix configuration hard to  understand  and  maintain.
+                     At  a certain point, it might be easier to configure mul-
                      tiple instances of Postfix, instead of configuring multi-
                      ple personalities via <a href="master.5.html">master.cf</a>.
 
-              <b>-v</b>     Increase the verbose logging level. Specify  multiple  <b>-v</b>
-                     options  to  make  a  Postfix daemon process increasingly
+              <b>-v</b>     Increase  the  verbose logging level. Specify multiple <b>-v</b>
+                     options to make a  Postfix  daemon  process  increasingly
                      verbose.
 
               Other command-line arguments
                      Specify "{" and "}" around command arguments that contain
-                     whitespace  (Postfix 3.0 and later). Whitespace after "{"
+                     whitespace (Postfix 3.0 and later). Whitespace after  "{"
                      and before "}" is ignored.
 
 <b>SEE ALSO</b>
index 008181f8431042780a23c2dc5849e602880139ea..14e436bb8b8ba2d368c67875db53adf14ca7df52 100644 (file)
@@ -13,7 +13,7 @@ The Postfix mail system is implemented by small number of
 a larger number of services that run in the background.
 
 Postfix services are implemented by daemon processes. These
-run in the background under control of the \fBmaster\fR(8)
+run in the background, started on\-demand by the \fBmaster\fR(8)
 process.  The master.cf configuration file defines how a
 client program connects to a service, and what daemon
 program runs when a service is requested.  Most daemon
@@ -24,7 +24,7 @@ serving \fBmax_use\fR clients, or after inactivity for
 All daemons specified here must speak a Postfix\-internal
 protocol. In order to execute non\-Postfix software use the
 \fBlocal\fR(8), \fBpipe\fR(8) or \fBspawn\fR(8) services, or
-run the server under control by \fBinetd\fR(8) or equivalent.
+execute the software with \fBinetd\fR(8) or equivalent.
 .PP
 After changing master.cf you must execute "\fBpostfix reload\fR"
 to reload the configuration.
index 670b800a12b75cdadf888579e5ea2a1b7068b7ac..64fb1211a06ee4b3825aea40fe58d9ec0e6394f1 100644 (file)
@@ -9,7 +9,7 @@
 #      a larger number of services that run in the background.
 #
 #      Postfix services are implemented by daemon processes. These
-#      run in the background under control of the \fBmaster\fR(8)
+#      run in the background, started on-demand by the \fBmaster\fR(8)
 #      process.  The master.cf configuration file defines how a
 #      client program connects to a service, and what daemon
 #      program runs when a service is requested.  Most daemon
@@ -20,7 +20,7 @@
 #      All daemons specified here must speak a Postfix-internal
 #      protocol. In order to execute non-Postfix software use the
 #      \fBlocal\fR(8), \fBpipe\fR(8) or \fBspawn\fR(8) services, or
-#      run the server under control by \fBinetd\fR(8) or equivalent.
+#      execute the software with \fBinetd\fR(8) or equivalent.
 # .PP
 #      After changing master.cf you must execute "\fBpostfix reload\fR" 
 #      to reload the configuration.
index e99c4436b9fef55f36d3863235f4e2d70f0077dc..4d668f1c2222c89be5b740808d35bdf37bf8eb3c 100644 (file)
@@ -7,7 +7,7 @@
 /*     #include <dsb_scan.h>
 /*
 /*     int     dsb_scan(scan_fn, stream, flags, ptr)
-/*     ATTR_SCAN_MASTER_FN scan_fn;
+/*     ATTR_SCAN_COMMON_FN scan_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
@@ -45,7 +45,7 @@
 
 /* dsb_scan - read DSN_BUF from stream */
 
-int     dsb_scan(ATTR_SCAN_MASTER_FN scan_fn, VSTREAM *fp,
+int     dsb_scan(ATTR_SCAN_COMMON_FN scan_fn, VSTREAM *fp,
                         int flags, void *ptr)
 {
     DSN_BUF *dsb = (DSN_BUF *) ptr;
index 397f86bc34ac5b35be20e62604e007d14c237353..99485bd8c67d8a7e85bbc2c6fc18702539d060dd 100644 (file)
@@ -25,7 +25,7 @@
  /*
   * External interface.
   */
-extern int dsb_scan(ATTR_SCAN_MASTER_FN, VSTREAM *, int, void *);
+extern int dsb_scan(ATTR_SCAN_COMMON_FN, VSTREAM *, int, void *);
 
 /* LICENSE
 /* .ad
index 369804839c2738952bf1ed74953daf443551a838..26dcb21340924a09b81a1c1afd9de15f3d813a3f 100644 (file)
@@ -7,7 +7,7 @@
 /*     #include <dsn_print.h>
 /*
 /*     int     dsn_print(print_fn, stream, flags, ptr)
-/*     ATTR_PRINT_MASTER_FN print_fn;
+/*     ATTR_PRINT_COMMON_FN print_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
@@ -45,7 +45,7 @@
 
 /* dsn_print - write DSN to stream */
 
-int     dsn_print(ATTR_PRINT_MASTER_FN print_fn, VSTREAM *fp,
+int     dsn_print(ATTR_PRINT_COMMON_FN print_fn, VSTREAM *fp,
                          int flags, void *ptr)
 {
     DSN    *dsn = (DSN *) ptr;
index 4b2c9fa84d454ec8f643ae8aa3836a87a3b4e53b..3e831debd649ddf834eead0be744ccfe6f1ee231 100644 (file)
@@ -25,7 +25,7 @@
  /*
   * External interface.
   */
-extern int dsn_print(ATTR_PRINT_MASTER_FN, VSTREAM *, int, void *);
+extern int dsn_print(ATTR_PRINT_COMMON_FN, VSTREAM *, int, void *);
 
 /* LICENSE
 /* .ad
index 41ff81483ffb02dd298b9b9235dba72db786e5dc..f04aa4dfd7fe8ace4e793dce66a77e75c7ba6d6c 100644 (file)
@@ -20,7 +20,7 @@
   * Patches change both the patchlevel and the release date. Snapshots have no
   * patchlevel; they change the release date only.
   */
-#define MAIL_RELEASE_DATE      "20200531"
+#define MAIL_RELEASE_DATE      "20200610"
 #define MAIL_VERSION_NUMBER    "3.6"
 
 #ifdef SNAPSHOT
index f71406cd6b3b6f8888fc06f20d6f7bead3d43058..335faf4f146f969a39e529d0b241ee0af7e350d9 100644 (file)
@@ -82,8 +82,8 @@ typedef struct {
        (st) \
     )
 
-extern int msg_stats_scan(ATTR_SCAN_MASTER_FN, VSTREAM *, int, void *);
-extern int msg_stats_print(ATTR_PRINT_MASTER_FN, VSTREAM *, int, void *);
+extern int msg_stats_scan(ATTR_SCAN_COMMON_FN, VSTREAM *, int, void *);
+extern int msg_stats_print(ATTR_PRINT_COMMON_FN, VSTREAM *, int, void *);
 
 /* LICENSE
 /* .ad
index 18d2ee26db7719ea522c0d6d3628362141c4d61f..f899aef6d2c9aa2f984e7ec1c48766da6d85cf5e 100644 (file)
@@ -7,7 +7,7 @@
 /*     #include <msg_stats.h>
 /*
 /*     int     msg_stats_print(print_fn, stream, flags, ptr)
-/*     ATTR_PRINT_MASTER_FN print_fn;
+/*     ATTR_PRINT_COMMON_FN print_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
@@ -46,7 +46,7 @@
 
 /* msg_stats_print - write MSG_STATS to stream */
 
-int     msg_stats_print(ATTR_PRINT_MASTER_FN print_fn, VSTREAM *fp,
+int     msg_stats_print(ATTR_PRINT_COMMON_FN print_fn, VSTREAM *fp,
                                int flags, void *ptr)
 {
     int     ret;
index 280d32107fa3c9f0730b5ef109cc14ac65e0b1d1..c4b4f8942554a644915835efe0571c363a022586 100644 (file)
@@ -7,7 +7,7 @@
 /*     #include <msg_stats.h>
 /*
 /*     int     msg_stats_scan(scan_fn, stream, flags, ptr)
-/*     ATTR_SCAN_MASTER_FN scan_fn;
+/*     ATTR_SCAN_COMMON_FN scan_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
@@ -53,7 +53,7 @@
 
 /* msg_stats_scan - read MSG_STATS from stream */
 
-int     msg_stats_scan(ATTR_SCAN_MASTER_FN scan_fn, VSTREAM *fp,
+int     msg_stats_scan(ATTR_SCAN_COMMON_FN scan_fn, VSTREAM *fp,
                               int flags, void *ptr)
 {
     MSG_STATS *stats = (MSG_STATS *) ptr;
index d67905027390e3af51e70b58bb7759400ef31e4d..ba9164ee0441cbab0a34bcd95c7abbd100eac2bc 100644 (file)
@@ -29,7 +29,7 @@
 /*     RCPT_BUF *rcpb;
 /*
 /*     int     rcpb_scan(scan_fn, stream, flags, ptr)
-/*     ATTR_SCAN_MASTER_FN scan_fn;
+/*     ATTR_SCAN_COMMON_FN scan_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
@@ -115,7 +115,7 @@ void    rcpb_free(RCPT_BUF *rcpt)
 
 /* rcpb_scan - receive recipient buffer */
 
-int     rcpb_scan(ATTR_SCAN_MASTER_FN scan_fn, VSTREAM *fp,
+int     rcpb_scan(ATTR_SCAN_COMMON_FN scan_fn, VSTREAM *fp,
                          int flags, void *ptr)
 {
     RCPT_BUF *rcpt = (RCPT_BUF *) ptr;
index 9b2994c0ac28dae2e1c5e7e1dc3e1dc912a86a14..c474af3b59b8947c0e34147c52ab0dea0b152ffe 100644 (file)
@@ -38,7 +38,7 @@ typedef struct {
 extern RCPT_BUF *rcpb_create(void);
 extern void rcpb_reset(RCPT_BUF *);
 extern void rcpb_free(RCPT_BUF *);
-extern int rcpb_scan(ATTR_SCAN_MASTER_FN, VSTREAM *, int, void *);
+extern int rcpb_scan(ATTR_SCAN_COMMON_FN, VSTREAM *, int, void *);
 
 #define RECIPIENT_FROM_RCPT_BUF(buf) \
     ((buf)->rcpt.address = vstring_str((buf)->address), \
index 60d9d30a314cc1f67d419ce95e084ec1d2741d70..6baabf16c1b31127fdd12af998adae3f3e64c2a3 100644 (file)
@@ -7,7 +7,7 @@
 /*     #include <rcpt_print.h>
 /*
 /*     int     rcpt_print(print_fn, stream, flags, ptr)
-/*     ATTR_PRINT_MASTER_FN print_fn;
+/*     ATTR_PRINT_COMMON_FN print_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
@@ -48,7 +48,7 @@
 
 /* rcpt_print - write recipient to stream */
 
-int     rcpt_print(ATTR_PRINT_MASTER_FN print_fn, VSTREAM *fp,
+int     rcpt_print(ATTR_PRINT_COMMON_FN print_fn, VSTREAM *fp,
                           int flags, void *ptr)
 {
     RECIPIENT *rcpt = (RECIPIENT *) ptr;
index ef46ad1a95f113ba303f23a7fc4ed48c1b300e67..9ddb3b24ef7df0eb88b1fdf9a7ecba2cfdd6be2b 100644 (file)
@@ -25,7 +25,7 @@
  /*
   * External interface.
   */
-extern int rcpt_print(ATTR_SCAN_MASTER_FN, VSTREAM *, int, void *);
+extern int rcpt_print(ATTR_SCAN_COMMON_FN, VSTREAM *, int, void *);
 
 /* LICENSE
 /* .ad
index 951744fdb1c1f941d0fb4bab965a2e0ba5a7d837..8f672c30441b3f0329b9928c8bbc1b41b2d7b295 100644 (file)
@@ -79,8 +79,8 @@ extern MILTER_MACROS *milter_macros_create(const char *, const char *,
                                                const char *, const char *);
 extern MILTER_MACROS *milter_macros_alloc(int);
 extern void milter_macros_free(MILTER_MACROS *);
-extern int milter_macros_print(ATTR_PRINT_MASTER_FN, VSTREAM *, int, void *);
-extern int milter_macros_scan(ATTR_SCAN_MASTER_FN, VSTREAM *, int, void *);
+extern int milter_macros_print(ATTR_PRINT_COMMON_FN, VSTREAM *, int, void *);
+extern int milter_macros_scan(ATTR_SCAN_COMMON_FN, VSTREAM *, int, void *);
 
 #define MILTER_MACROS_ALLOC_ZERO       1       /* null pointer */
 #define MILTER_MACROS_ALLOC_EMPTY      2       /* mystrdup(""); */
index 95126b1ed92fbe4a5833f3e79ec6df283d6c9c00..a1ddf968cc0ff6d4195bb4191fd4fefd09c3b757 100644 (file)
 /*     MILTER_MACROS *mp;
 /*
 /*     int     milter_macros_print(print_fn, stream, flags, ptr)
-/*     ATTR_PRINT_MASTER_FN print_fn;
+/*     ATTR_PRINT_COMMON_FN print_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
 /*
 /*     int     milter_macros_scan(scan_fn, fp, flags, ptr)
-/*     ATTR_SCAN_MASTER_FN scan_fn;
+/*     ATTR_SCAN_COMMON_FN scan_fn;
 /*     VSTREAM *fp;
 /*     int     flags;
 /*     void    *ptr;
 
 /* milter_macros_print - write macros structure to stream */
 
-int     milter_macros_print(ATTR_PRINT_MASTER_FN print_fn, VSTREAM *fp,
+int     milter_macros_print(ATTR_PRINT_COMMON_FN print_fn, VSTREAM *fp,
                                    int flags, void *ptr)
 {
     MILTER_MACROS *mp = (MILTER_MACROS *) ptr;
@@ -155,7 +155,7 @@ int     milter_macros_print(ATTR_PRINT_MASTER_FN print_fn, VSTREAM *fp,
 
 /* milter_macros_scan - receive macros structure from stream */
 
-int     milter_macros_scan(ATTR_SCAN_MASTER_FN scan_fn, VSTREAM *fp,
+int     milter_macros_scan(ATTR_SCAN_COMMON_FN scan_fn, VSTREAM *fp,
                                   int flags, void *ptr)
 {
     MILTER_MACROS *mp = (MILTER_MACROS *) ptr;
index 527233dfe00a104b12144978f9652429127cb5f3..24d8be5c7827e25a9e32710fe7da2ccef5f416cb 100644 (file)
@@ -686,6 +686,27 @@ static int server_sni_callback(SSL *ssl, int *alert, void *arg)
                 TLScontext->namaddr, sni);
        return SSL_TLSEXT_ERR_NOACK;
     }
+
+    /*
+     * With TLS 1.3, when the client's proposed key share is not supported by
+     * the server, the server may issue a HelloRetryRequest (HRR), and the
+     * client will then retry with a new key share on a curve supported by
+     * the server.  This results in the SNI callback running twice for the
+     * same connection.
+     * 
+     * When that happens, The client MUST send the essentially the same hello
+     * message, including the SNI name, and since we've already loaded our
+     * certificate chain, we don't need to do it again!  Therefore, if we've
+     * already recorded the peer SNI name, just check that it has not
+     * changed, and return success.
+     */
+    if (TLScontext->peer_sni) {
+       if (strcmp(sni, TLScontext->peer_sni) == 0)
+           return SSL_TLSEXT_ERR_OK;
+       msg_warn("TLS SNI changed from %s initially %s, %s after hello retry",
+                TLScontext->namaddr, TLScontext->peer_sni, sni);
+       return SSL_TLSEXT_ERR_NOACK;
+    }
     do {
        /* Don't silently skip maps opened with the wrong flags. */
        pem = maps_file_find(tls_server_sni_maps, cp, 0);
index 3a899b954f1c5de3030feae39171d1328737c6d1..45058c35639e400ee0ede0adf20feaf04641d10e 100644 (file)
@@ -79,9 +79,9 @@ typedef struct TLS_CLIENT_PARAMS {
 extern TLS_CLIENT_PARAMS *tls_proxy_client_param_from_config(TLS_CLIENT_PARAMS *);
 extern char *tls_proxy_client_param_to_string(VSTRING *, TLS_CLIENT_PARAMS *);
 extern char *tls_proxy_client_param_with_names_to_string(VSTRING *, TLS_CLIENT_PARAMS *);
-extern int tls_proxy_client_param_print(ATTR_PRINT_MASTER_FN, VSTREAM *, int, void *);
+extern int tls_proxy_client_param_print(ATTR_PRINT_COMMON_FN, VSTREAM *, int, void *);
 extern void tls_proxy_client_param_free(TLS_CLIENT_PARAMS *);
-extern int tls_proxy_client_param_scan(ATTR_SCAN_MASTER_FN, VSTREAM *, int, void *);
+extern int tls_proxy_client_param_scan(ATTR_SCAN_COMMON_FN, VSTREAM *, int, void *);
 
  /*
   * Functions that handle TLS_XXX_INIT_PROPS and TLS_XXX_START_PROPS. These
@@ -114,25 +114,25 @@ extern VSTREAM *tls_proxy_open(const char *, int, VSTREAM *, const char *,
 
 extern TLS_SESS_STATE *tls_proxy_context_receive(VSTREAM *);
 extern void tls_proxy_context_free(TLS_SESS_STATE *);
-extern int tls_proxy_context_print(ATTR_PRINT_MASTER_FN, VSTREAM *, int, void *);
-extern int tls_proxy_context_scan(ATTR_SCAN_MASTER_FN, VSTREAM *, int, void *);
+extern int tls_proxy_context_print(ATTR_PRINT_COMMON_FN, VSTREAM *, int, void *);
+extern int tls_proxy_context_scan(ATTR_SCAN_COMMON_FN, VSTREAM *, int, void *);
 
-extern int tls_proxy_client_init_print(ATTR_PRINT_MASTER_FN, VSTREAM *, int, void *);
-extern int tls_proxy_client_init_scan(ATTR_SCAN_MASTER_FN, VSTREAM *, int, void *);
+extern int tls_proxy_client_init_print(ATTR_PRINT_COMMON_FN, VSTREAM *, int, void *);
+extern int tls_proxy_client_init_scan(ATTR_SCAN_COMMON_FN, VSTREAM *, int, void *);
 extern void tls_proxy_client_init_free(TLS_CLIENT_INIT_PROPS *);
 extern char *tls_proxy_client_init_to_string(VSTRING *, TLS_CLIENT_INIT_PROPS *);
 extern char *tls_proxy_client_init_with_names_to_string(VSTRING *, TLS_CLIENT_INIT_PROPS *);
 
-extern int tls_proxy_client_start_print(ATTR_PRINT_MASTER_FN, VSTREAM *, int, void *);
-extern int tls_proxy_client_start_scan(ATTR_SCAN_MASTER_FN, VSTREAM *, int, void *);
+extern int tls_proxy_client_start_print(ATTR_PRINT_COMMON_FN, VSTREAM *, int, void *);
+extern int tls_proxy_client_start_scan(ATTR_SCAN_COMMON_FN, VSTREAM *, int, void *);
 extern void tls_proxy_client_start_free(TLS_CLIENT_START_PROPS *);
 
-extern int tls_proxy_server_init_print(ATTR_PRINT_MASTER_FN, VSTREAM *, int, void *);
-extern int tls_proxy_server_init_scan(ATTR_SCAN_MASTER_FN, VSTREAM *, int, void *);
+extern int tls_proxy_server_init_print(ATTR_PRINT_COMMON_FN, VSTREAM *, int, void *);
+extern int tls_proxy_server_init_scan(ATTR_SCAN_COMMON_FN, VSTREAM *, int, void *);
 extern void tls_proxy_server_init_free(TLS_SERVER_INIT_PROPS *);
 
-extern int tls_proxy_server_start_print(ATTR_PRINT_MASTER_FN, VSTREAM *, int, void *);
-extern int tls_proxy_server_start_scan(ATTR_SCAN_MASTER_FN, VSTREAM *, int, void *);
+extern int tls_proxy_server_start_print(ATTR_PRINT_COMMON_FN, VSTREAM *, int, void *);
+extern int tls_proxy_server_start_scan(ATTR_SCAN_COMMON_FN, VSTREAM *, int, void *);
 
 extern void tls_proxy_server_start_free(TLS_SERVER_START_PROPS *);
 
index 68fb56b177ef5fa03fc690ac2bfc778436b6467a..8caf70511df10bb3c505db7a38b431a421e86fed 100644 (file)
@@ -7,19 +7,19 @@
 /*     #include <tls_proxy.h>
 /*
 /*     int     tls_proxy_client_param_print(print_fn, stream, flags, ptr)
-/*     ATTR_PRINT_MASTER_FN print_fn;
+/*     ATTR_PRINT_COMMON_FN print_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
 /*
 /*     int     tls_proxy_client_init_print(print_fn, stream, flags, ptr)
-/*     ATTR_PRINT_MASTER_FN print_fn;
+/*     ATTR_PRINT_COMMON_FN print_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
 /*
 /*     int     tls_proxy_client_start_print(print_fn, stream, flags, ptr)
-/*     ATTR_PRINT_MASTER_FN print_fn;
+/*     ATTR_PRINT_COMMON_FN print_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
@@ -85,7 +85,7 @@
 
 /* tls_proxy_client_param_print - send TLS_CLIENT_PARAMS over stream */
 
-int     tls_proxy_client_param_print(ATTR_PRINT_MASTER_FN print_fn, VSTREAM *fp,
+int     tls_proxy_client_param_print(ATTR_PRINT_COMMON_FN print_fn, VSTREAM *fp,
                                             int flags, void *ptr)
 {
     TLS_CLIENT_PARAMS *params = (TLS_CLIENT_PARAMS *) ptr;
@@ -134,7 +134,7 @@ int     tls_proxy_client_param_print(ATTR_PRINT_MASTER_FN print_fn, VSTREAM *fp,
 
 /* tls_proxy_client_init_print - send TLS_CLIENT_INIT_PROPS over stream */
 
-int     tls_proxy_client_init_print(ATTR_PRINT_MASTER_FN print_fn, VSTREAM *fp,
+int     tls_proxy_client_init_print(ATTR_PRINT_COMMON_FN print_fn, VSTREAM *fp,
                                            int flags, void *ptr)
 {
     TLS_CLIENT_INIT_PROPS *props = (TLS_CLIENT_INIT_PROPS *) ptr;
@@ -182,7 +182,7 @@ int     tls_proxy_client_init_print(ATTR_PRINT_MASTER_FN print_fn, VSTREAM *fp,
 
 /* tls_proxy_client_certs_print - send x509 certificates over stream */
 
-static int tls_proxy_client_certs_print(ATTR_PRINT_MASTER_FN print_fn,
+static int tls_proxy_client_certs_print(ATTR_PRINT_COMMON_FN print_fn,
                                          VSTREAM *fp, int flags, void *ptr)
 {
     TLS_CERTS *tls_certs = (TLS_CERTS *) ptr;
@@ -227,7 +227,7 @@ static int tls_proxy_client_certs_print(ATTR_PRINT_MASTER_FN print_fn,
 
 /* tls_proxy_client_pkeys_print - send public keys over stream */
 
-static int tls_proxy_client_pkeys_print(ATTR_PRINT_MASTER_FN print_fn,
+static int tls_proxy_client_pkeys_print(ATTR_PRINT_COMMON_FN print_fn,
                                          VSTREAM *fp, int flags, void *ptr)
 {
     TLS_PKEYS *tls_pkeys = (TLS_PKEYS *) ptr;
@@ -272,7 +272,7 @@ static int tls_proxy_client_pkeys_print(ATTR_PRINT_MASTER_FN print_fn,
 
 /* tls_proxy_client_tlsa_print - send TLS_TLSA over stream */
 
-static int tls_proxy_client_tlsa_print(ATTR_PRINT_MASTER_FN print_fn,
+static int tls_proxy_client_tlsa_print(ATTR_PRINT_COMMON_FN print_fn,
                                          VSTREAM *fp, int flags, void *ptr)
 {
     TLS_TLSA *tls_tlsa = (TLS_TLSA *) ptr;
@@ -310,7 +310,7 @@ static int tls_proxy_client_tlsa_print(ATTR_PRINT_MASTER_FN print_fn,
 
 /* tls_proxy_client_dane_print - send TLS_DANE over stream */
 
-static int tls_proxy_client_dane_print(ATTR_PRINT_MASTER_FN print_fn,
+static int tls_proxy_client_dane_print(ATTR_PRINT_COMMON_FN print_fn,
                                          VSTREAM *fp, int flags, void *ptr)
 {
     TLS_DANE *dane = (TLS_DANE *) ptr;
@@ -346,7 +346,7 @@ static int tls_proxy_client_dane_print(ATTR_PRINT_MASTER_FN print_fn,
 
 /* tls_proxy_client_start_print - send TLS_CLIENT_START_PROPS over stream */
 
-int     tls_proxy_client_start_print(ATTR_PRINT_MASTER_FN print_fn,
+int     tls_proxy_client_start_print(ATTR_PRINT_COMMON_FN print_fn,
                                          VSTREAM *fp, int flags, void *ptr)
 {
     TLS_CLIENT_START_PROPS *props = (TLS_CLIENT_START_PROPS *) ptr;
index 4c748ae3c163c13a3a5602c5493122ef41e61da4..0d2b43b2d562a8ef2a4fabc1fb0d58b6309efc16 100644 (file)
@@ -7,7 +7,7 @@
 /*     #include <tls_proxy.h>
 /*
 /*     int     tls_proxy_client_param_scan(scan_fn, stream, flags, ptr)
-/*     ATTR_SCAN_MASTER_FN scan_fn;
+/*     ATTR_SCAN_COMMON_FN scan_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
@@ -16,7 +16,7 @@
 /*     TLS_CLIENT_PARAMS *params;
 /*
 /*     int     tls_proxy_client_init_scan(scan_fn, stream, flags, ptr)
-/*     ATTR_SCAN_MASTER_FN scan_fn;
+/*     ATTR_SCAN_COMMON_FN scan_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
@@ -25,7 +25,7 @@
 /*     TLS_CLIENT_INIT_PROPS *init_props;
 /*
 /*     int     tls_proxy_client_start_scan(scan_fn, stream, flags, ptr)
-/*     ATTR_SCAN_MASTER_FN scan_fn;
+/*     ATTR_SCAN_COMMON_FN scan_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
@@ -138,7 +138,7 @@ void    tls_proxy_client_param_free(TLS_CLIENT_PARAMS *params)
 
 /* tls_proxy_client_param_scan - receive TLS_CLIENT_PARAMS from stream */
 
-int     tls_proxy_client_param_scan(ATTR_SCAN_MASTER_FN scan_fn, VSTREAM *fp,
+int     tls_proxy_client_param_scan(ATTR_SCAN_COMMON_FN scan_fn, VSTREAM *fp,
                                            int flags, void *ptr)
 {
     TLS_CLIENT_PARAMS *params
@@ -238,7 +238,7 @@ void    tls_proxy_client_init_free(TLS_CLIENT_INIT_PROPS *props)
 
 /* tls_proxy_client_init_scan - receive TLS_CLIENT_INIT_PROPS from stream */
 
-int     tls_proxy_client_init_scan(ATTR_SCAN_MASTER_FN scan_fn, VSTREAM *fp,
+int     tls_proxy_client_init_scan(ATTR_SCAN_COMMON_FN scan_fn, VSTREAM *fp,
                                           int flags, void *ptr)
 {
     TLS_CLIENT_INIT_PROPS *props
@@ -382,7 +382,7 @@ void    tls_proxy_client_start_free(TLS_CLIENT_START_PROPS *props)
 
 /* tls_proxy_client_certs_scan - receive TLS_CERTS from stream */
 
-static int tls_proxy_client_certs_scan(ATTR_SCAN_MASTER_FN scan_fn,
+static int tls_proxy_client_certs_scan(ATTR_SCAN_COMMON_FN scan_fn,
                                          VSTREAM *fp, int flags, void *ptr)
 {
     int     ret;
@@ -441,7 +441,7 @@ static int tls_proxy_client_certs_scan(ATTR_SCAN_MASTER_FN scan_fn,
 
 /* tls_proxy_client_pkeys_scan - receive TLS_PKEYS from stream */
 
-static int tls_proxy_client_pkeys_scan(ATTR_SCAN_MASTER_FN scan_fn,
+static int tls_proxy_client_pkeys_scan(ATTR_SCAN_COMMON_FN scan_fn,
                                          VSTREAM *fp, int flags, void *ptr)
 {
     int     ret;
@@ -500,7 +500,7 @@ static int tls_proxy_client_pkeys_scan(ATTR_SCAN_MASTER_FN scan_fn,
 
 /* tls_proxy_client_tlsa_scan - receive TLS_TLSA from stream */
 
-static int tls_proxy_client_tlsa_scan(ATTR_SCAN_MASTER_FN scan_fn,
+static int tls_proxy_client_tlsa_scan(ATTR_SCAN_COMMON_FN scan_fn,
                                          VSTREAM *fp, int flags, void *ptr)
 {
     int     ret;
@@ -549,7 +549,7 @@ static int tls_proxy_client_tlsa_scan(ATTR_SCAN_MASTER_FN scan_fn,
 
 /* tls_proxy_client_dane_scan - receive TLS_DANE from stream */
 
-static int tls_proxy_client_dane_scan(ATTR_SCAN_MASTER_FN scan_fn,
+static int tls_proxy_client_dane_scan(ATTR_SCAN_COMMON_FN scan_fn,
                                          VSTREAM *fp, int flags, void *ptr)
 {
     TLS_DANE *dane = 0;
@@ -610,7 +610,7 @@ static int tls_proxy_client_dane_scan(ATTR_SCAN_MASTER_FN scan_fn,
 
 /* tls_proxy_client_start_scan - receive TLS_CLIENT_START_PROPS from stream */
 
-int     tls_proxy_client_start_scan(ATTR_SCAN_MASTER_FN scan_fn, VSTREAM *fp,
+int     tls_proxy_client_start_scan(ATTR_SCAN_COMMON_FN scan_fn, VSTREAM *fp,
                                            int flags, void *ptr)
 {
     TLS_CLIENT_START_PROPS *props
index a9cbc5c177dd6db5611da674ee1717336820e678..dadd64f818ff50be53397a4270600bf9941ae0d6 100644 (file)
@@ -7,7 +7,7 @@
 /*     #include <tls_proxy.h>
 /*
 /*     int     tls_proxy_context_print(print_fn, stream, flags, ptr)
-/*     ATTR_PRINT_MASTER_FN print_fn;
+/*     ATTR_PRINT_COMMON_FN print_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
@@ -53,7 +53,7 @@
 
 /* tls_proxy_context_print - send TLS session state over stream */
 
-int     tls_proxy_context_print(ATTR_PRINT_MASTER_FN print_fn, VSTREAM *fp,
+int     tls_proxy_context_print(ATTR_PRINT_COMMON_FN print_fn, VSTREAM *fp,
                                        int flags, void *ptr)
 {
     TLS_SESS_STATE *tp = (TLS_SESS_STATE *) ptr;
index 96afddabacd3ee2287bbb8dfe6b9bcc0dba724f5..af216ac36425c734f822e06d90c448f0867d6ba0 100644 (file)
@@ -7,7 +7,7 @@
 /*     #include <tls_proxy.h>
 /*
 /*     int     tls_proxy_context_scan(scan_fn, stream, flags, ptr)
-/*     ATTR_SCAN_MASTER_FN scan_fn;
+/*     ATTR_SCAN_COMMON_FN scan_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
@@ -66,7 +66,7 @@
 
 /* tls_proxy_context_scan - receive TLS session state from stream */
 
-int     tls_proxy_context_scan(ATTR_SCAN_MASTER_FN scan_fn, VSTREAM *fp,
+int     tls_proxy_context_scan(ATTR_SCAN_COMMON_FN scan_fn, VSTREAM *fp,
                                       int flags, void *ptr)
 {
     TLS_SESS_STATE *tls_context
index a0a567f73d702c757d8276efa35cde15b94530b7..c49f67052cd6f7dbd4c2138eb21904f6f99b4903 100644 (file)
@@ -7,13 +7,13 @@
 /*     #include <tls_proxy.h>
 /*
 /*     int     tls_proxy_server_init_print(print_fn, stream, flags, ptr)
-/*     ATTR_PRINT_MASTER_FN print_fn;
+/*     ATTR_PRINT_COMMON_FN print_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
 /*
 /*     int     tls_proxy_server_start_print(print_fn, stream, flags, ptr)
-/*     ATTR_PRINT_MASTER_FN print_fn;
+/*     ATTR_PRINT_COMMON_FN print_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
@@ -61,7 +61,7 @@
 
 /* tls_proxy_server_init_print - send TLS_SERVER_INIT_PROPS over stream */
 
-int     tls_proxy_server_init_print(ATTR_PRINT_MASTER_FN print_fn, VSTREAM *fp,
+int     tls_proxy_server_init_print(ATTR_PRINT_COMMON_FN print_fn, VSTREAM *fp,
                                            int flags, void *ptr)
 {
     TLS_SERVER_INIT_PROPS *props = (TLS_SERVER_INIT_PROPS *) ptr;
@@ -114,7 +114,7 @@ int     tls_proxy_server_init_print(ATTR_PRINT_MASTER_FN print_fn, VSTREAM *fp,
 
 /* tls_proxy_server_start_print - send TLS_SERVER_START_PROPS over stream */
 
-int     tls_proxy_server_start_print(ATTR_PRINT_MASTER_FN print_fn, VSTREAM *fp,
+int     tls_proxy_server_start_print(ATTR_PRINT_COMMON_FN print_fn, VSTREAM *fp,
                                             int flags, void *ptr)
 {
     TLS_SERVER_START_PROPS *props = (TLS_SERVER_START_PROPS *) ptr;
index f7b3fb6d48c31ca0dc74f406f48911072250d7cb..92da66cf835c1208620dce697cace50c2fabd72f 100644 (file)
@@ -7,7 +7,7 @@
 /*     #include <tls_proxy.h>
 /*
 /*     int     tls_proxy_server_init_scan(scan_fn, stream, flags, ptr)
-/*     ATTR_SCAN_MASTER_FN scan_fn;
+/*     ATTR_SCAN_COMMON_FN scan_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
@@ -16,7 +16,7 @@
 /*     TLS_SERVER_INIT_PROPS *init_props;
 /*
 /*     int     tls_proxy_server_start_scan(scan_fn, stream, flags, ptr)
-/*     ATTR_SCAN_MASTER_FN scan_fn;
+/*     ATTR_SCAN_COMMON_FN scan_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
@@ -83,7 +83,7 @@
 
 /* tls_proxy_server_init_scan - receive TLS_SERVER_INIT_PROPS from stream */
 
-int     tls_proxy_server_init_scan(ATTR_SCAN_MASTER_FN scan_fn, VSTREAM *fp,
+int     tls_proxy_server_init_scan(ATTR_SCAN_COMMON_FN scan_fn, VSTREAM *fp,
                                           int flags, void *ptr)
 {
     TLS_SERVER_INIT_PROPS *props
@@ -186,7 +186,7 @@ void    tls_proxy_server_init_free(TLS_SERVER_INIT_PROPS *props)
 
 /* tls_proxy_server_start_scan - receive TLS_SERVER_START_PROPS from stream */
 
-int     tls_proxy_server_start_scan(ATTR_SCAN_MASTER_FN scan_fn, VSTREAM *fp,
+int     tls_proxy_server_start_scan(ATTR_SCAN_COMMON_FN scan_fn, VSTREAM *fp,
                                            int flags, void *ptr)
 {
     TLS_SERVER_START_PROPS *props
index 65cfa5541beff9c52db0574b0555fd8e22db8d15..670b05662647bae2b60227b8f454b5e76f40b82d 100644 (file)
@@ -26,8 +26,8 @@
 #define ARGV_ATTR_VALUE        "argv_value"
 #define ARGV_ATTR_MAX  1024
 
-extern int argv_attr_print(ATTR_PRINT_MASTER_FN, VSTREAM *, int, void *);
-extern int argv_attr_scan(ATTR_SCAN_MASTER_FN, VSTREAM *, int, void *);
+extern int argv_attr_print(ATTR_PRINT_COMMON_FN, VSTREAM *, int, void *);
+extern int argv_attr_scan(ATTR_SCAN_COMMON_FN, VSTREAM *, int, void *);
 
 /* LICENSE
 /* .ad
index 87b086a9b92531bc02452e557c272ab7eec89f9d..c30e77b548f0691cc926ce31b385f93081e321c1 100644 (file)
@@ -7,7 +7,7 @@
 /*     #include <argv_attr.h>
 /*
 /*     int     argv_attr_print(print_fn, stream, flags, ptr)
-/*     ATTR_PRINT_MASTER_FN print_fn;
+/*     ATTR_PRINT_COMMON_FN print_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
@@ -49,7 +49,7 @@
 
 /* argv_attr_print - write ARGV to stream */
 
-int     argv_attr_print(ATTR_PRINT_MASTER_FN print_fn, VSTREAM *fp,
+int     argv_attr_print(ATTR_PRINT_COMMON_FN print_fn, VSTREAM *fp,
                                int flags, void *ptr)
 {
     ARGV   *argv = (ARGV *) ptr;
index 3005cb2ddc847bb6fcf4630ecd845295c6a638fb..0987bf8afaf6ad33392ebfa5bf46369d3a128adc 100644 (file)
@@ -7,7 +7,7 @@
 /*     #include <argv_attr.h>
 /*
 /*     int     argv_attr_scan(scan_fn, stream, flags, ptr)
-/*     ATTR_SCAN_MASTER_FN scan_fn;
+/*     ATTR_SCAN_COMMON_FN scan_fn;
 /*     VSTREAM *stream;
 /*     int     flags;
 /*     void    *ptr;
@@ -56,7 +56,7 @@
 
 /* argv_attr_scan - write ARGV to stream */
 
-int     argv_attr_scan(ATTR_PRINT_MASTER_FN scan_fn, VSTREAM *fp,
+int     argv_attr_scan(ATTR_PRINT_COMMON_FN scan_fn, VSTREAM *fp,
                               int flags, void *ptr)
 {
     ARGV   *argv = 0;
index dc6f9f753d36be704e2ee8cff3da7d46646818f8..754e1259ffde6480136eded904e556d8efbf2b2b 100644 (file)
  /*
   * Delegation for better data abstraction.
   */
-typedef int (*ATTR_SCAN_MASTER_FN) (VSTREAM *, int,...);
-typedef int (*ATTR_SCAN_SLAVE_FN) (ATTR_SCAN_MASTER_FN, VSTREAM *, int, void *);
-typedef int (*ATTR_PRINT_MASTER_FN) (VSTREAM *, int,...);
-typedef int (*ATTR_PRINT_SLAVE_FN) (ATTR_PRINT_MASTER_FN, VSTREAM *, int, void *);
+typedef int (*ATTR_SCAN_COMMON_FN) (VSTREAM *, int,...);
+typedef int (*ATTR_SCAN_CUSTOM_FN) (ATTR_SCAN_COMMON_FN, VSTREAM *, int, void *);
+typedef int (*ATTR_PRINT_COMMON_FN) (VSTREAM *, int,...);
+typedef int (*ATTR_PRINT_CUSTOM_FN) (ATTR_PRINT_COMMON_FN, VSTREAM *, int, void *);
 
  /*
   * Attribute types. See attr_scan(3) for documentation.
@@ -66,7 +66,7 @@ typedef int (*ATTR_PRINT_SLAVE_FN) (ATTR_PRINT_MASTER_FN, VSTREAM *, int, void *
 #define SEND_ATTR_NV(val)              ATTR_TYPE_NV, CHECK_CPTR(ATTR, NVTABLE, (val))
 #define SEND_ATTR_LONG(name, val)      ATTR_TYPE_LONG, CHECK_CPTR(ATTR, char, (name)), CHECK_VAL(ATTR, long, (val))
 #define SEND_ATTR_DATA(name, len, val) ATTR_TYPE_DATA, CHECK_CPTR(ATTR, char, (name)), CHECK_VAL(ATTR, ssize_t, (len)), CHECK_CPTR(ATTR, void, (val))
-#define SEND_ATTR_FUNC(func, val)      ATTR_TYPE_FUNC, CHECK_VAL(ATTR, ATTR_PRINT_SLAVE_FN, (func)), CHECK_CPTR(ATTR, void, (val))
+#define SEND_ATTR_FUNC(func, val)      ATTR_TYPE_FUNC, CHECK_VAL(ATTR, ATTR_PRINT_CUSTOM_FN, (func)), CHECK_CPTR(ATTR, void, (val))
 
 #define RECV_ATTR_INT(name, val)       ATTR_TYPE_INT, CHECK_CPTR(ATTR, char, (name)), CHECK_PTR(ATTR, int, (val))
 #define RECV_ATTR_STR(name, val)       ATTR_TYPE_STR, CHECK_CPTR(ATTR, char, (name)), CHECK_PTR(ATTR, VSTRING, (val))
@@ -74,7 +74,7 @@ typedef int (*ATTR_PRINT_SLAVE_FN) (ATTR_PRINT_MASTER_FN, VSTREAM *, int, void *
 #define RECV_ATTR_NV(val)              ATTR_TYPE_NV, CHECK_PTR(ATTR, NVTABLE, (val))
 #define RECV_ATTR_LONG(name, val)      ATTR_TYPE_LONG, CHECK_CPTR(ATTR, char, (name)), CHECK_PTR(ATTR, long, (val))
 #define RECV_ATTR_DATA(name, val)      ATTR_TYPE_DATA, CHECK_CPTR(ATTR, char, (name)), CHECK_PTR(ATTR, VSTRING, (val))
-#define RECV_ATTR_FUNC(func, val)      ATTR_TYPE_FUNC, CHECK_VAL(ATTR, ATTR_SCAN_SLAVE_FN, (func)), CHECK_PTR(ATTR, void, (val))
+#define RECV_ATTR_FUNC(func, val)      ATTR_TYPE_FUNC, CHECK_VAL(ATTR, ATTR_SCAN_CUSTOM_FN, (func)), CHECK_PTR(ATTR, void, (val))
 
 CHECK_VAL_HELPER_DCL(ATTR, ssize_t);
 CHECK_VAL_HELPER_DCL(ATTR, long);
@@ -89,8 +89,8 @@ CHECK_CPTR_HELPER_DCL(ATTR, void);
 CHECK_CPTR_HELPER_DCL(ATTR, char);
 CHECK_CPTR_HELPER_DCL(ATTR, NVTABLE);
 CHECK_CPTR_HELPER_DCL(ATTR, HTABLE);
-CHECK_VAL_HELPER_DCL(ATTR, ATTR_PRINT_SLAVE_FN);
-CHECK_VAL_HELPER_DCL(ATTR, ATTR_SCAN_SLAVE_FN);
+CHECK_VAL_HELPER_DCL(ATTR, ATTR_PRINT_CUSTOM_FN);
+CHECK_VAL_HELPER_DCL(ATTR, ATTR_SCAN_CUSTOM_FN);
 
  /*
   * Flags that control processing. See attr_scan(3) for documentation.
index 27fb7beace11f9485d7751693c4c9362b9cbdf9c..20c2c5a1e44d27ee25e7203a18b05a279b6f2d0d 100644 (file)
@@ -53,7 +53,7 @@
 /* .IP "SEND_ATTR_DATA(const char *name, ssize_t len, const void *value)"
 /*     The arguments are an attribute name, an attribute value
 /*     length, and an attribute value pointer.
-/* .IP "SEND_ATTR_FUNC(ATTR_PRINT_SLAVE_FN, const void *value)"
+/* .IP "SEND_ATTR_FUNC(ATTR_PRINT_CUSTOM_FN, const void *value)"
 /*     The arguments are a function pointer and generic data
 /*     pointer. The caller-specified function returns whatever the
 /*     specified attribute printing function returns.
@@ -119,7 +119,7 @@ int     attr_vprint0(VSTREAM *fp, int flags, va_list ap)
     HTABLE_INFO **ht;
     ssize_t len_val;
     static VSTRING *base64_buf;
-    ATTR_PRINT_SLAVE_FN print_fn;
+    ATTR_PRINT_CUSTOM_FN print_fn;
     void   *print_arg;
 
     /*
@@ -174,7 +174,7 @@ int     attr_vprint0(VSTREAM *fp, int flags, va_list ap)
                         attr_name, (long) len_val);
            break;
        case ATTR_TYPE_FUNC:
-           print_fn = va_arg(ap, ATTR_PRINT_SLAVE_FN);
+           print_fn = va_arg(ap, ATTR_PRINT_CUSTOM_FN);
            print_arg = va_arg(ap, void *);
            print_fn(attr_print0, fp, flags | ATTR_FLAG_MORE, print_arg);
            break;
index b2181d7400dc3778bdb1d1eb30e11f9eee76b69a..1008979aa9f8ba8eec449a1a03c976a58eff2abb 100644 (file)
@@ -53,7 +53,7 @@
 /* .IP "SEND_ATTR_DATA(const char *name, ssize_t len, const void *value)"
 /*     The arguments are an attribute name, an attribute value
 /*     length, and an attribute value pointer.
-/* .IP "SEND_ATTR_FUNC(ATTR_PRINT_SLAVE_FN, const void *value)"
+/* .IP "SEND_ATTR_FUNC(ATTR_PRINT_CUSTOM_FN, const void *value)"
 /*     The arguments are a function pointer and generic data
 /*     pointer. The caller-specified function returns whatever the
 /*     specified attribute printing function returns.
@@ -153,7 +153,7 @@ int     attr_vprint64(VSTREAM *fp, int flags, va_list ap)
     HTABLE_INFO **ht_info_list;
     HTABLE_INFO **ht;
     ssize_t len_val;
-    ATTR_PRINT_SLAVE_FN print_fn;
+    ATTR_PRINT_CUSTOM_FN print_fn;
     void   *print_arg;
 
     /*
@@ -211,7 +211,7 @@ int     attr_vprint64(VSTREAM *fp, int flags, va_list ap)
                         attr_name, (long) len_val);
            break;
        case ATTR_TYPE_FUNC:
-           print_fn = va_arg(ap, ATTR_PRINT_SLAVE_FN);
+           print_fn = va_arg(ap, ATTR_PRINT_CUSTOM_FN);
            print_arg = va_arg(ap, void *);
            print_fn(attr_print64, fp, flags | ATTR_FLAG_MORE, print_arg);
            break;
index fef0def3d884ec38b4441133bdcf208e19d4f75e..7ef03be8edbf07144c102ae1bde2979bf41711d1 100644 (file)
@@ -53,7 +53,7 @@
 /* .IP "SEND_ATTR_DATA(const char *name, ssize_t len, const void *value)"
 /*     The arguments are an attribute name, an attribute value
 /*     length, and an attribute value pointer.
-/* .IP "SEND_ATTR_FUNC(ATTR_PRINT_SLAVE_FN, const void *value)"
+/* .IP "SEND_ATTR_FUNC(ATTR_PRINT_CUSTOM_FN, const void *value)"
 /*     The arguments are a function pointer and generic data
 /*     pointer. The caller-specified function returns whatever the
 /*     specified attribute printing function returns.
@@ -120,7 +120,7 @@ int     attr_vprint_plain(VSTREAM *fp, int flags, va_list ap)
     HTABLE_INFO **ht;
     static VSTRING *base64_buf;
     ssize_t len_val;
-    ATTR_PRINT_SLAVE_FN print_fn;
+    ATTR_PRINT_CUSTOM_FN print_fn;
     void   *print_arg;
 
     /*
@@ -169,7 +169,7 @@ int     attr_vprint_plain(VSTREAM *fp, int flags, va_list ap)
                         attr_name, (long) len_val);
            break;
        case ATTR_TYPE_FUNC:
-           print_fn = va_arg(ap, ATTR_PRINT_SLAVE_FN);
+           print_fn = va_arg(ap, ATTR_PRINT_CUSTOM_FN);
            print_arg = va_arg(ap, void *);
            print_fn(attr_print_plain, fp, flags | ATTR_FLAG_MORE, print_arg);
            break;
index f465de9173dea5bad19a05ef716aa6d0f7878c61..6dd15487780e883446bdb93e335d299dea62b4f1 100644 (file)
 /*     This argument is followed by an attribute name and a VSTRING pointer.
 /* .IP "RECV_ATTR_DATA(const char *name, VSTRING *vp)"
 /*     This argument is followed by an attribute name and a VSTRING pointer.
-/* .IP "RECV_ATTR_FUNC(ATTR_SCAN_SLAVE_FN, void *data)"
+/* .IP "RECV_ATTR_FUNC(ATTR_SCAN_CUSTOM_FN, void *data)"
 /*     This argument is followed by a function pointer and a generic data
 /*     pointer. The caller-specified function returns < 0 in case of
 /*     error.
@@ -276,7 +276,7 @@ int     attr_vscan0(VSTREAM *fp, int flags, va_list ap)
     HTABLE *hash_table;
     int     ch;
     int     conversions;
-    ATTR_SCAN_SLAVE_FN scan_fn;
+    ATTR_SCAN_CUSTOM_FN scan_fn;
     void   *scan_arg;
 
     /*
@@ -416,7 +416,7 @@ int     attr_vscan0(VSTREAM *fp, int flags, va_list ap)
                return (-1);
            break;
        case ATTR_TYPE_FUNC:
-           scan_fn = va_arg(ap, ATTR_SCAN_SLAVE_FN);
+           scan_fn = va_arg(ap, ATTR_SCAN_CUSTOM_FN);
            scan_arg = va_arg(ap, void *);
            if (scan_fn(attr_scan0, fp, flags | ATTR_FLAG_MORE, scan_arg) < 0)
                return (-1);
index bb8ba3e6bdbdcb8795b31be365f29c08b1144cb9..4ea1e2874c8468d95feecf9f60eecaa3b9280730 100644 (file)
 /*     This argument is followed by an attribute name and a VSTRING pointer.
 /* .IP "RECV_ATTR_DATA(const char *name, VSTRING *vp)"
 /*     This argument is followed by an attribute name and a VSTRING pointer.
-/* .IP "RECV_ATTR_FUNC(ATTR_SCAN_SLAVE_FN, void *data)"
+/* .IP "RECV_ATTR_FUNC(ATTR_SCAN_CUSTOM_FN, void *data)"
 /*     This argument is followed by a function pointer and a generic data
 /*     pointer. The caller-specified function returns < 0 in case of
 /*     error.
@@ -279,7 +279,7 @@ int     attr_vscan64(VSTREAM *fp, int flags, va_list ap)
     HTABLE *hash_table;
     int     ch;
     int     conversions;
-    ATTR_SCAN_SLAVE_FN scan_fn;
+    ATTR_SCAN_CUSTOM_FN scan_fn;
     void   *scan_arg;
 
     /*
@@ -465,7 +465,7 @@ int     attr_vscan64(VSTREAM *fp, int flags, va_list ap)
            }
            break;
        case ATTR_TYPE_FUNC:
-           scan_fn = va_arg(ap, ATTR_SCAN_SLAVE_FN);
+           scan_fn = va_arg(ap, ATTR_SCAN_CUSTOM_FN);
            scan_arg = va_arg(ap, void *);
            if (scan_fn(attr_scan64, fp, flags | ATTR_FLAG_MORE, scan_arg) < 0)
                return (-1);
index 97499d3203c029852b607837ac0f407fedbe71df..41cfc8d4dff7504a2f69f427f838f5335f4d5206 100644 (file)
 /*     This argument is followed by an attribute name and a VSTRING pointer.
 /* .IP "RECV_ATTR_DATA(const char *name, VSTRING *vp)"
 /*     This argument is followed by an attribute name and a VSTRING pointer.
-/* .IP "RECV_ATTR_FUNC(ATTR_SCAN_SLAVE_FN, void *data)"
+/* .IP "RECV_ATTR_FUNC(ATTR_SCAN_CUSTOM_FN, void *data)"
 /*     This argument is followed by a function pointer and a generic data
 /*     pointer. The caller-specified function returns < 0 in case of
 /*     error.
@@ -292,7 +292,7 @@ int     attr_vscan_plain(VSTREAM *fp, int flags, va_list ap)
     HTABLE *hash_table;
     int     ch;
     int     conversions;
-    ATTR_SCAN_SLAVE_FN scan_fn;
+    ATTR_SCAN_CUSTOM_FN scan_fn;
     void   *scan_arg;
 
     /*
@@ -453,7 +453,7 @@ int     attr_vscan_plain(VSTREAM *fp, int flags, va_list ap)
                return (-1);
            break;
        case ATTR_TYPE_FUNC:
-           scan_fn = va_arg(ap, ATTR_SCAN_SLAVE_FN);
+           scan_fn = va_arg(ap, ATTR_SCAN_CUSTOM_FN);
            scan_arg = va_arg(ap, void *);
            if (scan_fn(attr_scan_plain, fp, flags | ATTR_FLAG_MORE, scan_arg) < 0)
                return (-1);