--- src/modules/m_invite.c	2011-11-05 05:25:24.000000000 -0400
+++ src/modules/m_invite.c	2011-11-26 22:13:08.000000000 -0500
@@ -105,6 +105,8 @@
         aClient *acptr;
         aChannel *chptr;
         short over = 0;
+	Link *lp;
+	short alreadyinvited = 0;
 
 	if (parc == 1)
 		return send_invite_list(sptr);
@@ -320,6 +322,15 @@
 		    || IsOper(sptr)
 #endif
 		    )) {
+
+		        for (lp = acptr->user->invited; lp; lp = lp->next)
+		                if (lp->value.chptr == chptr)
+                	        {
+                                        alreadyinvited = 1;
+		                        break;
+		                }
+
+
 		        if (over == 1)
                 		sendto_channelprefix_butone(NULL, &me, chptr, PREFIX_OP|PREFIX_ADMIN|PREFIX_OWNER,
 		                  ":%s NOTICE @%s :OperOverride -- %s invited him/herself into the channel.",
@@ -332,7 +343,7 @@
 		        add_invite(acptr, chptr);
 			}
 	}
-	if (!is_silenced(sptr, acptr))
+	if ((!is_silenced(sptr, acptr)) && (alreadyinvited == 0))
 		sendto_prefix_one(acptr, sptr, ":%s INVITE %s :%s", parv[0],
 			acptr->name, ((chptr) ? (chptr->chname) : parv[2]));
 
