diff -ur qpopper4.0.8-happy-jmpl6/popper/pop_config.c qpopper4.0.8-happy-jmpl5/popper/pop_config.c
--- qpopper4.0.8-happy-jmpl6/popper/pop_config.c	Thu Mar  9 22:48:39 2006
+++ qpopper4.0.8-happy-jmpl5/popper/pop_config.c	Wed Jun  1 01:19:29 2005
@@ -274,6 +274,7 @@
     kHM_BUFSIZ,		    /* -z bufsiz        */
     kHM_SLEEP,              /*    (no flag)     */
     kHM_SLEEP_SLICE,        /*    (no flag)     */
+    kHM_NOMSGS,             /*    (no flag)     */
 #endif /* HAPPYMAIL */
 
 
@@ -318,6 +319,7 @@
     { "happymail-bufsiz"             , CfgIntSpace , CfgResNone, kHM_BUFSIZ      },
     { "happymail-sleep"              , CfgIntTime  , CfgResNone, kHM_SLEEP       },
     { "happymail-sleep-slice"        , CfgIntTime  , CfgResNone, kHM_SLEEP_SLICE },
+    { "happymail-nomsgs"             , CfgBool , CfgResNone, kHM_NOMSGS          },
 #endif /* HAPPYMAIL */
     { "hash-spool"                   , CfgInt  , CfgResUser, kHASH_SPOOL         },
     { "home-dir-mail"                , CfgStr  , CfgResUser, kHOME_DIR_MAIL      },
@@ -999,6 +1001,7 @@
 	case kHM_BUFSIZ:           R__INT ( &p->happymail_bufsiz );
 	case kHM_SLEEP:            R__INT ( &p->happymail_sleep );
 	case kHM_SLEEP_SLICE:      R__INT ( &p->happymail_sleep_slice );
+	case kHM_NOMSGS:           R__BOO ( &p->happymail_nomsgs );
 #endif /* HAPPYMAIL */
 
         default:                   R__PTR ( NULL );
diff -ur qpopper4.0.8-happy-jmpl6/popper/pop_dropcopy.c qpopper4.0.8-happy-jmpl5/popper/pop_dropcopy.c
--- qpopper4.0.8-happy-jmpl6/popper/pop_dropcopy.c	Thu Mar  9 22:47:15 2006
+++ qpopper4.0.8-happy-jmpl5/popper/pop_dropcopy.c	Thu Dec 22 22:17:57 2005
@@ -1276,10 +1276,43 @@
 			    
             }
 
-            if (p->happymail_delay > p->happymail_sleep) {
+	    if ( p->happymail_nomsgs && p->happymail_delay > p->happymail_sleep ) {
+		    pop_log ( p, POP_NOTICE, HERE,
+#ifdef DEBUG
+			    "%s at localhost: "
+#else
+			    "%s at %s (%s): "
+#endif /* DEBUG */
+	                    "[HAPPYMAIL] Delay is %d %s,%s user will see zero messages "
+			    "[%d+%d:%d@%d!%d (%d) => %d + %d %s %d]",
+	                    p->user ? p->user : "(null)",
+#ifndef DEBUG
+			    p->client, 
+			    p->ipaddr,
+#endif /* DEBUG */ 
+			    (p->happymail_delay % 60) ? p->happymail_delay : p->happymail_delay/60,
+			    (p->happymail_delay % 60) ? "second(s)" : "minute(s)", 
+			    p->happymail_sleep ? " sleeping for max and" : "",
+			    p->happymail_base,
+			    p->happymail_rate_s,
+			    p->happymail_rate_b,
+			    p->happymail_free,
+			    p->happymail_max,
+			    mybuf.st_size,
+			    p->happymail_base,
+			    adjust,
+			    p->happymail_base + adjust > p->happymail_max ?
+				">" : "=>",
+			    mydelay
+			    ); 
+
+		    return ( POP_SUCCESS );
+	    }
+            else if (p->happymail_delay > p->happymail_sleep) {
                  p->happymail_delay = p->happymail_sleep_slice ;
+		 p->happymail_tab[pwp->pw_uid] = my_timer;
                  return (pop_msg(p, POP_FAILURE, HERE,
-			    "[LOGIN-DELAY] Please wait at least %d %s "
+			    "[LOGIN-DELAY] Please wait at least %d %s "
 			    "between checking your email. "
 			    "[%d+%d:%d@%d!%d (%d) => %d + %d %s %d] ",
 			    (mydelay % 60) ? mydelay : mydelay/60,
diff -ur qpopper4.0.8-happy-jmpl6/popper/pop_init.c qpopper4.0.8-happy-jmpl5/popper/pop_init.c
--- qpopper4.0.8-happy-jmpl6/popper/pop_init.c	Thu Mar  9 22:48:06 2006
+++ qpopper4.0.8-happy-jmpl5/popper/pop_init.c	Thu Jun  9 07:03:14 2005
@@ -793,6 +793,8 @@
     /* sleep instead of error if mydelay < happymail_sleep */
     p->happymail_sleep = 0;
     p->happymail_sleep_slice = 0;
+    /* report zero messages instead of error */
+    p->happymail_nomsgs = 0;
 #endif /* HAPPYMAIL */
     /*  
      * Process command line arguments 
diff -ur qpopper4.0.8-happy-jmpl6/popper/popper.h qpopper4.0.8-happy-jmpl5/popper/popper.h
--- qpopper4.0.8-happy-jmpl6/popper/popper.h	Thu Mar  9 22:48:55 2006
+++ qpopper4.0.8-happy-jmpl5/popper/popper.h	Wed Jun  1 01:19:29 2005
@@ -685,6 +685,7 @@
     int                 happymail_sleep;        /* less than this sleep instead of error */
     int                 happymail_sleep_slice;  /* slice to sleep for */ 
     int                 happymail_delay;        /* store the total delay neccessary */					   
+    BOOL		 happymail_nomsgs;       /* Instead of producing an error, claim 0 messages */
 #endif /* HAPPYMAIL */
 
     BOOL                bUser_opts;             /* Process ~/.qpopper-options */
diff -ur qpopper4.0.8-happy/popper/pop_updt.c qpopper4.0.8-happy-jmpl6/popper/pop_updt.c
--- qpopper4.0.8-happy/popper/pop_updt.c	Thu May 26 14:45:31 2005
+++ qpopper4.0.8-happy-jmpl6/popper/pop_updt.c	Thu Mar  9 22:43:55 2006
@@ -263,6 +263,13 @@
     time_t                  my_timer    = time(0);  /*  For timing */
 
 
+    if ( !p->drop || !p->drop_name )
+#ifdef HAPPYMAIL
+	   return ( POP_SUCCESS );
+#else
+   	   return ( POP_FAILURE ); 
+#endif
+
     if ( p->bAuto_delete && p->bUpdate_on_abort == FALSE )
     {
         /* 
