Re: smtpd: simplify internal io api

2016-11-21 Thread Sunil Nimmagadda

Eric Faurot writes:

> 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.
>
> Eric.

Ok sunil@

>
> 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 -  1.75
> +++ bounce.c  21 Nov 2016 19:33:46 -
> @@ -728,10 +728,8 @@ bounce_io(struct io *io, int evt, void *
>   return;
>   }
>  
> - if (line == NULL) {
> - iobuf_normalize(>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 -  1.22
> +++ filter.c  21 Nov 2016 19:33:46 -
> @@ -706,7 +706,6 @@ filter_tx_io(struct io *io, int evt, voi
>   }
>   s->idatalen += n;
>   io_drop(>iev, n);
> - iobuf_normalize(>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.c20 Nov 2016 08:43:36 -  1.30
> +++ ioev.c21 Nov 2016 19:33:46 -
> @@ -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 -  1.88
> +++ mta_session.c 21 Nov 2016 19:33:47 -
> @@ -1182,10 +1182,8 @@ mta_io(struct io *io, int evt, void *arg
>   if (io_datalen(>io) >= LINE_MAX) {
>   mta_error(s, "Input too long");
>   mta_free(s);
> - return;
>   }
> - iobuf_normalize(>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(>iobuf);
>  
>   if (io_datalen(>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.c21 Nov 2016 13:00:43 -  1.294
> +++ smtp_session.c21 Nov 2016 19:33:48 -
> @@ -1310,10 +1310,8 @@ smtp_io(struct io *io, int evt, void *ar
>   }
>  
>   /* No complete line received */
> - if (line == NULL) {
> - iobuf_normalize(>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(>tx->rfc2822_parser);
>  
> - iobuf_normalize(>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(>iobuf);
>   break;
>  
>   case IO_LOWAT:



Re: smtpd: simplify internal io api

2016-11-21 Thread Gilles Chehade
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 -  1.75
> +++ bounce.c  21 Nov 2016 19:33:46 -
> @@ -728,10 +728,8 @@ bounce_io(struct io *io, int evt, void *
>   return;
>   }
>  
> - if (line == NULL) {
> - iobuf_normalize(>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 -  1.22
> +++ filter.c  21 Nov 2016 19:33:46 -
> @@ -706,7 +706,6 @@ filter_tx_io(struct io *io, int evt, voi
>   }
>   s->idatalen += n;
>   io_drop(>iev, n);
> - iobuf_normalize(>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.c20 Nov 2016 08:43:36 -  1.30
> +++ ioev.c21 Nov 2016 19:33:46 -
> @@ -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 -  1.88
> +++ mta_session.c 21 Nov 2016 19:33:47 -
> @@ -1182,10 +1182,8 @@ mta_io(struct io *io, int evt, void *arg
>   if (io_datalen(>io) >= LINE_MAX) {
>   mta_error(s, "Input too long");
>   mta_free(s);
> - return;
>   }
> - iobuf_normalize(>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(>iobuf);
>  
>   if (io_datalen(>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.c21 Nov 2016 13:00:43 -  1.294
> +++ smtp_session.c21 Nov 2016 19:33:48 -
> @@ -1310,10 +1310,8 @@ smtp_io(struct io *io, int evt, void *ar
>   }
>  
>   /* No complete line received */
> - if (line == NULL) {
> - iobuf_normalize(>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(>tx->rfc2822_parser);
>  
> - iobuf_normalize(>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(>iobuf);
>   break;
>  
>   case IO_LOWAT:
> 

-- 
Gilles Chehade

https://www.poolp.org  @poolpOrg



smtpd: simplify internal io api

2016-11-21 Thread Eric Faurot
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.

Eric.

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.c21 Nov 2016 13:00:43 -  1.75
+++ bounce.c21 Nov 2016 19:33:46 -
@@ -728,10 +728,8 @@ bounce_io(struct io *io, int evt, void *
return;
}
 
-   if (line == NULL) {
-   iobuf_normalize(>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.c21 Nov 2016 13:00:43 -  1.22
+++ filter.c21 Nov 2016 19:33:46 -
@@ -706,7 +706,6 @@ filter_tx_io(struct io *io, int evt, voi
}
s->idatalen += n;
io_drop(>iev, n);
-   iobuf_normalize(>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 -  1.30
+++ ioev.c  21 Nov 2016 19:33:46 -
@@ -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 -  1.88
+++ mta_session.c   21 Nov 2016 19:33:47 -
@@ -1182,10 +1182,8 @@ mta_io(struct io *io, int evt, void *arg
if (io_datalen(>io) >= LINE_MAX) {
mta_error(s, "Input too long");
mta_free(s);
-   return;
}
-   iobuf_normalize(>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(>iobuf);
 
if (io_datalen(>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 -  1.294
+++ smtp_session.c  21 Nov 2016 19:33:48 -
@@ -1310,10 +1310,8 @@ smtp_io(struct io *io, int evt, void *ar
}
 
/* No complete line received */
-   if (line == NULL) {
-   iobuf_normalize(>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(>tx->rfc2822_parser);
 
-   iobuf_normalize(>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(>iobuf);
break;
 
case IO_LOWAT: