On Thu, Jun 29, 2000 at 10:55:10AM -0300, Rodrigo Severo wrote:
> 
> 
> Ricardo Cerqueira wrote:
> > 
> > Here:
> > 
> > http://www.ornl.gov/its/archives/mailing-lists/qmail/1999/11/msg00245.html
> 
> Ricardo,
> 
> 
> The message above has an incomplete patch (last 2 lines missing). Here
> is the complete patch:

Errr... No, it isn't. It's a patch! You apply it using the GNU patch utility. It does 
NOT have to be "fully working" C code.

RC

> 
> -----------------------------------------------------------------------
> *** qmail-1.03/qmail-smtpd.maxrcpt    Mon Jun 15 07:53:16 1998
> --- qmail-1.03/qmail-smtpd.c  Fri Nov 19 16:09:34 1999
> ***************
> *** 25,34 ****
> --- 25,36 ----
>   #include "commands.h"
>   
>   #define MAXHOPS 100
>   unsigned int databytes = 0;
>   int timeout = 1200;
> + int rcptcounter = 0; /* Agregado por mi para el maxrcpt */
> + int maxrcpt = -1; /* Agregado por mi para el maxrcpt */
>   
>   int safewrite(fd,buf,len) int fd; char *buf; int len;
>   {
>     int r;
>     r = timeoutwrite(timeout,fd,buf,len);
> ***************
> *** 56,66 ****
>   void err_wantmail() { out("503 MAIL first (#5.5.1)\r\n"); }
>   void err_wantrcpt() { out("503 RCPT first (#5.5.1)\r\n"); }
>   void err_noop() { out("250 ok\r\n"); }
>   void err_vrfy() { out("252 send some mail, i'll try my best\r\n"); }
>   void err_qqt() { out("451 qqt failure (#4.3.0)\r\n"); }
> ! 
>   
>   stralloc greeting = {0};
>   
>   void smtp_greet(code) char *code;
>   {
> --- 58,68 ----
>   void err_wantmail() { out("503 MAIL first (#5.5.1)\r\n"); }
>   void err_wantrcpt() { out("503 RCPT first (#5.5.1)\r\n"); }
>   void err_noop() { out("250 ok\r\n"); }
>   void err_vrfy() { out("252 send some mail, i'll try my best\r\n"); }
>   void err_qqt() { out("451 qqt failure (#4.3.0)\r\n"); }
> ! void err_excessrcpt() { out("666 Too many recipients specified
> (#5.5.4)\r\n"); } /* Agregado por mi para el maxrcpt */
>   
>   stralloc greeting = {0};
>   
>   void smtp_greet(code) char *code;
>   {
> ***************
> *** 107,116 ****
> --- 109,119 ----
>       die_control();
>     liphostok = control_rldef(&liphost,"control/localiphost",1,(char *)
> 0);
>     if (liphostok == -1) die_control();
>     if (control_readint(&timeout,"control/timeoutsmtpd") == -1)
> die_control();
>     if (timeout <= 0) timeout = 1;
> +   if (control_readint(&maxrcpt,"control/maxrcpt") == -1)
> die_control(); /* Agregado por mi para el maxrcpt */
>   
>     if (rcpthosts_init() == -1) die_control();
>   
>     bmfok = control_readfile(&bmf,"control/badmailfrom",0);
>     if (bmfok == -1) die_control();
> ***************
> *** 238,256 ****
> --- 241,262 ----
>     out("250 flushed\r\n");
>   }
>   void smtp_mail(arg) char *arg;
>   {
>     if (!addrparse(arg)) { err_syntax(); return; }
> +   rcptcounter = 0; /* Agregado por mi para el maxrcpt */
>     flagbarf = bmfcheck();
>     seenmail = 1;
>     if (!stralloc_copys(&rcptto,"")) die_nomem();
>     if (!stralloc_copys(&mailfrom,addr.s)) die_nomem();
>     if (!stralloc_0(&mailfrom)) die_nomem();
>     out("250 ok\r\n");
>   }
>   void smtp_rcpt(arg) char *arg; {
> +   rcptcounter++; /* Agregado por mi para el maxrcpt */
>     if (!seenmail) { err_wantmail(); return; }
> +   if (checkrcptcount() == 1) { err_excessrcpt(); } /* Agregado por mi
> para el maxrcpt */
>     if (!addrparse(arg)) { err_syntax(); return; }
>     if (flagbarf) { err_bmf(); return; }
>     if (relayclient) {
>       --addr.len;
>       if (!stralloc_cats(&addr,relayclient)) die_nomem();
> ***************
> *** 390,399 ****
> --- 396,411 ----
>     if (hops) { out("554 too many hops, this message is looping
> (#5.4.6)\r\n"); return; }
>     if (databytes) if (!bytestooverflow) { out("552 sorry, that message
> size exceeds my databytes limit (#5.3.4)\r\n"); return; }
>     if (*qqx == 'D') out("554 "); else out("451 ");
>     out(qqx + 1);
>     out("\r\n");
> + }                                             /* Agregado por mi para
> el maxrcpt */
> + 
> + int checkrcptcount() {                        /* Agregado por mi para
> el maxrcpt */
> +   if (maxrcpt == -1) {return 0;}              /* Agregado por mi para
> el maxrcpt */
> +   else if (rcptcounter > maxrcpt) {return 1;} /* Agregado por mi para
> el maxrcpt */
> +   else {return 0;}                            /* Agregado por mi para
> el maxrcpt */
>   }
>   
>   struct commands smtpcommands[] = {
>     { "rcpt", smtp_rcpt, 0 }
>   , { "mail", smtp_mail, 0 }
> -----------------------------------------------------------------------
> 
> 
> Rodrigo
> 
> -- 
> -------------------------------------------
> Rodrigo Severo
> [EMAIL PROTECTED]
> Fabrica de Ideias
> sbs - ed. empire center - bl. s - sala 109
> cep 70070-904 - brasilia-df - brazil
> tel: (61) 321 1357
> fax: (61) 321 6096
> -------------------------------------------

-- 
+-------------------
| Ricardo Cerqueira  
| PGP Key fingerprint  -  B7 05 13 CE 48 0A BF 1E  87 21 83 DB 28 DE 03 42 
| Novis  -  Engenharia ISP / Rede T�cnica 
| P�. Duque Saldanha, 1, 7� E / 1050-094 Lisboa / Portugal
| Tel: +351 21 3166730/00 (24h/dia) - Fax: +351 21 3166701

Reply via email to