On Sat, Sep 03, 2016 at 08:09:25PM +0200, Eric Faurot wrote:
> Hi,
> 
> Here is a diff to remove the "smtpctl stop" command.
> The proper way to stop a daemon is kill(1)/pkill(1) only.
> It makes no sense to have different code path for that.
> 

much agreed, queue code was designed to be kill-safe, the mta doesn't
care because it will retry and the smtp code can catch & 421

ok by me

> Index: control.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/smtpd/control.c,v
> retrieving revision 1.114
> diff -u -p -r1.114 control.c
> --- control.c 1 Sep 2016 10:54:25 -0000       1.114
> +++ control.c 3 Sep 2016 17:42:37 -0000
> @@ -485,7 +485,7 @@ control_dispatch_ext(struct mproc *p, st
>  
>       switch (imsg->hdr.type) {
>       case IMSG_CTL_SMTP_SESSION:
> -             if (env->sc_flags & (SMTPD_SMTP_PAUSED | SMTPD_EXITING)) {
> +             if (env->sc_flags & SMTPD_SMTP_PAUSED) {
>                       m_compose(p, IMSG_CTL_FAIL, 0, 0, -1, NULL, 0);
>                       return;
>               }
> @@ -511,22 +511,6 @@ control_dispatch_ext(struct mproc *p, st
>                       kvp->val = val;
>               }
>               m_compose(p, IMSG_CTL_GET_STATS, 0, 0, -1, kvp, sizeof *kvp);
> -             return;
> -
> -     case IMSG_CTL_SHUTDOWN:
> -             /* NEEDS_FIX */
> -             log_debug("debug: received shutdown request");
> -
> -             if (c->euid)
> -                     goto badcred;
> -
> -             if (env->sc_flags & SMTPD_EXITING) {
> -                     m_compose(p, IMSG_CTL_FAIL, 0, 0, -1, NULL, 0);
> -                     return;
> -             }
> -             env->sc_flags |= SMTPD_EXITING;
> -             m_compose(p, IMSG_CTL_OK, 0, 0, -1, NULL, 0);
> -             m_compose(p_parent, IMSG_CTL_SHUTDOWN, 0, 0, -1, NULL, 0);
>               return;
>  
>       case IMSG_CTL_VERBOSE:
> Index: smtpctl.8
> ===================================================================
> RCS file: /cvs/src/usr.sbin/smtpd/smtpctl.8,v
> retrieving revision 1.57
> diff -u -p -r1.57 smtpctl.8
> --- smtpctl.8 14 Jun 2016 22:40:48 -0000      1.57
> +++ smtpctl.8 3 Sep 2016 17:42:37 -0000
> @@ -245,8 +245,6 @@ Displays runtime statistics concerning
>  .Xr smtpd 8 .
>  .It Cm show status
>  Shows if MTA, MDA and SMTP systems are currently running or paused.
> -.It Cm stop
> -Stop the server.
>  .It Cm trace Ar subsystem
>  Enables real-time tracing of
>  .Ar subsystem .
> Index: smtpctl.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/smtpd/smtpctl.c,v
> retrieving revision 1.150
> diff -u -p -r1.150 smtpctl.c
> --- smtpctl.c 3 Sep 2016 16:06:26 -0000       1.150
> +++ smtpctl.c 3 Sep 2016 17:42:37 -0000
> @@ -864,13 +864,6 @@ do_show_status(int argc, struct paramete
>  }
>  
>  static int
> -do_stop(int argc, struct parameter *argv)
> -{
> -     srv_send(IMSG_CTL_SHUTDOWN, NULL, 0);
> -     return srv_check_result(1);
> -}
> -
> -static int
>  do_trace(int argc, struct parameter *argv)
>  {
>       int     v;
> @@ -1080,7 +1073,6 @@ main(int argc, char **argv)
>       cmd_install("show routes",              do_show_routes);
>       cmd_install("show stats",               do_show_stats);
>       cmd_install("show status",              do_show_status);
> -     cmd_install("stop",                     do_stop);
>       cmd_install("trace <str>",              do_trace);
>       cmd_install("uncorrupt <msgid>",        do_uncorrupt);
>       cmd_install("unprofile <str>",          do_unprofile);
> Index: smtpd.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/smtpd/smtpd.c,v
> retrieving revision 1.282
> diff -u -p -r1.282 smtpd.c
> --- smtpd.c   1 Sep 2016 10:54:25 -0000       1.282
> +++ smtpd.c   3 Sep 2016 17:42:37 -0000
> @@ -257,10 +257,6 @@ parent_imsg(struct mproc *p, struct imsg
>                       m_end(&m);
>                       profiling = v;
>                       return;
> -
> -             case IMSG_CTL_SHUTDOWN:
> -                     parent_shutdown(0);
> -                     return;
>               }
>       }
>  
> @@ -1752,7 +1748,6 @@ imsg_to_str(int type)
>       CASE(IMSG_CTL_REMOVE);
>       CASE(IMSG_CTL_SCHEDULE);
>       CASE(IMSG_CTL_SHOW_STATUS);
> -     CASE(IMSG_CTL_SHUTDOWN);
>       CASE(IMSG_CTL_TRACE_DISABLE);
>       CASE(IMSG_CTL_TRACE_ENABLE);
>       CASE(IMSG_CTL_UPDATE_TABLE);
> Index: smtpd.h
> ===================================================================
> RCS file: /cvs/src/usr.sbin/smtpd/smtpd.h,v
> retrieving revision 1.522
> diff -u -p -r1.522 smtpd.h
> --- smtpd.h   3 Sep 2016 16:06:26 -0000       1.522
> +++ smtpd.h   3 Sep 2016 17:42:37 -0000
> @@ -161,7 +161,7 @@ union lookup {
>   * Bump IMSG_VERSION whenever a change is made to enum imsg_type.
>   * This will ensure that we can never use a wrong version of smtpctl with 
> smtpd.
>   */
> -#define      IMSG_VERSION            15
> +#define      IMSG_VERSION            16
>  
>  enum imsg_type {
>       IMSG_NONE,
> @@ -195,7 +195,6 @@ enum imsg_type {
>       IMSG_CTL_REMOVE,
>       IMSG_CTL_SCHEDULE,
>       IMSG_CTL_SHOW_STATUS,
> -     IMSG_CTL_SHUTDOWN,
>       IMSG_CTL_TRACE_DISABLE,
>       IMSG_CTL_TRACE_ENABLE,
>       IMSG_CTL_UPDATE_TABLE,
> @@ -572,7 +571,7 @@ struct smtpd {
>  #define SMTPD_OPT_NOACTION           0x00000002
>       uint32_t                        sc_opts;
>  
> -#define SMTPD_EXITING                        0x00000001
> +#define SMTPD_EXITING                        0x00000001 /* unused */
>  #define SMTPD_MDA_PAUSED             0x00000002
>  #define SMTPD_MTA_PAUSED             0x00000004
>  #define SMTPD_SMTP_PAUSED            0x00000008
> 

-- 
Gilles Chehade

https://www.poolp.org                                          @poolpOrg

Reply via email to