On Mon, Nov 21, 2016 at 08:46:32PM +0100, Eric Faurot wrote:
> The api user should not have to care about normalizing the io input
> buffer (i.e. resetting the read/write pos in the buffer).
> Do it internally when reloading the io event.
> 

yes please, ok gilles@


> Index: bounce.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/smtpd/bounce.c,v
> retrieving revision 1.75
> diff -u -p -r1.75 bounce.c
> --- bounce.c  21 Nov 2016 13:00:43 -0000      1.75
> +++ bounce.c  21 Nov 2016 19:33:46 -0000
> @@ -728,10 +728,8 @@ bounce_io(struct io *io, int evt, void *
>                       return;
>               }
>  
> -             if (line == NULL) {
> -                     iobuf_normalize(&s->iobuf);
> +             if (line == NULL)
>                       break;
> -             }
>  
>               log_trace(TRACE_BOUNCE, "bounce: %p: <<< %s", s, line);
>  
> Index: filter.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/smtpd/filter.c,v
> retrieving revision 1.22
> diff -u -p -r1.22 filter.c
> --- filter.c  21 Nov 2016 13:00:43 -0000      1.22
> +++ filter.c  21 Nov 2016 19:33:46 -0000
> @@ -706,7 +706,6 @@ filter_tx_io(struct io *io, int evt, voi
>               }
>               s->idatalen += n;
>               io_drop(&s->iev, n);
> -             iobuf_normalize(&s->ibuf);
>               return;
>  
>       case IO_DISCONNECTED:
> Index: ioev.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/smtpd/ioev.c,v
> retrieving revision 1.30
> diff -u -p -r1.30 ioev.c
> --- ioev.c    20 Nov 2016 08:43:36 -0000      1.30
> +++ ioev.c    21 Nov 2016 19:33:46 -0000
> @@ -465,6 +465,9 @@ io_reload(struct io *io)
>       if (io->flags & IO_HELD)
>               return;
>  
> +     if (io->iobuf)
> +             iobuf_normalize(io->iobuf);
> +
>  #ifdef IO_SSL
>       if (io->ssl) {
>               io_reload_ssl(io);
> Index: mta_session.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/smtpd/mta_session.c,v
> retrieving revision 1.88
> diff -u -p -r1.88 mta_session.c
> --- mta_session.c     21 Nov 2016 13:00:43 -0000      1.88
> +++ mta_session.c     21 Nov 2016 19:33:47 -0000
> @@ -1182,10 +1182,8 @@ mta_io(struct io *io, int evt, void *arg
>                       if (io_datalen(&s->io) >= LINE_MAX) {
>                               mta_error(s, "Input too long");
>                               mta_free(s);
> -                             return;
>                       }
> -                     iobuf_normalize(&s->iobuf);
> -                     break;
> +                     return;
>               }
>  
>               log_trace(TRACE_MTA, "mta: %p: <<< %s", s, line);
> @@ -1263,8 +1261,6 @@ mta_io(struct io *io, int evt, void *arg
>                       mta_connect(s);
>                       return;
>               }
> -
> -             iobuf_normalize(&s->iobuf);
>  
>               if (io_datalen(&s->io)) {
>                       log_debug("debug: mta: remaining data in input buffer");
> Index: smtp_session.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/smtpd/smtp_session.c,v
> retrieving revision 1.294
> diff -u -p -r1.294 smtp_session.c
> --- smtp_session.c    21 Nov 2016 13:00:43 -0000      1.294
> +++ smtp_session.c    21 Nov 2016 19:33:48 -0000
> @@ -1310,10 +1310,8 @@ smtp_io(struct io *io, int evt, void *ar
>               }
>  
>               /* No complete line received */
> -             if (line == NULL) {
> -                     iobuf_normalize(&s->iobuf);
> +             if (line == NULL)
>                       return;
> -             }
>  
>               /* Message body */
>               if (s->state == STATE_BODY && strcmp(line, ".")) {
> @@ -1338,7 +1336,6 @@ smtp_io(struct io *io, int evt, void *ar
>  
>                       rfc2822_parser_flush(&s->tx->rfc2822_parser);
>  
> -                     iobuf_normalize(&s->iobuf);
>                       io_set_write(io);
>  
>                       s->tx->dataeom = 1;
> @@ -1353,7 +1350,6 @@ smtp_io(struct io *io, int evt, void *ar
>               (void)strlcpy(s->cmd, line, sizeof s->cmd);
>               io_set_write(io);
>               smtp_command(s, line);
> -             iobuf_normalize(&s->iobuf);
>               break;
>  
>       case IO_LOWAT:
> 

-- 
Gilles Chehade

https://www.poolp.org                                          @poolpOrg

Reply via email to