diff -r c312ceab2bef include/h.h
--- a/include/h.h	Sun May 19 23:24:12 2013 +0000
+++ b/include/h.h	Sun May 19 19:13:48 2013 -0600
@@ -271,7 +271,6 @@
                                   char *, ...) __attribute__((format(printf,4,5)));
 extern void sendto_channel_butserv_butone(aChannel *chptr, aClient *from, aClient *one,
                                           char *pattern, ...) __attribute__((format(printf,4,5)));
-extern void sendto_serv_butone(aClient *, char *, ...) __attribute__((format(printf,2,3)));
 extern void sendto_common_channels(aClient *, char *, ...) __attribute__((format(printf,2,3)));
 extern void sendto_common_channels_local_butone(aClient *, int, char *, ...) __attribute__((format(printf,3,4)));
 extern void sendto_channel_butserv(aChannel *, aClient *, char *, ...) __attribute__((format(printf,3,4)));
diff -r c312ceab2bef src/channel.c
--- a/src/channel.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/channel.c	Sun May 19 19:13:48 2013 -0600
@@ -1430,7 +1430,7 @@
 		{		/* ban. */
 			ircsprintf(mask, "*!*@%s", GetHost(sptr));
 			add_listmode(&chptr->banlist, &me, chptr, mask);
-			sendto_serv_butone(&me, ":%s MODE %s +b %s 0",
+			sendto_server(&me, 0, 0, ":%s MODE %s +b %s 0",
 			    me.name, chptr->chname, mask);
 			sendto_channel_butserv(chptr, &me,
 			    ":%s MODE %s +b %s", me.name, chptr->chname, mask);
@@ -1438,7 +1438,7 @@
 		sendto_channel_butserv(chptr, &me,
 		    ":%s KICK %s %s :%s", me.name,
 		    chptr->chname, sptr->name, comment);
-		sendto_serv_butone(cptr, ":%s KICK %s %s :%s",
+		sendto_server(cptr, 0, 0, ":%s KICK %s %s :%s",
 		   me.name, chptr->chname, sptr->name, comment);
 		remove_user_from_channel(sptr, chptr);
 		return 1;
@@ -1660,7 +1660,7 @@
 			mode = get_chanbitbychar(e->m);
 			if (e->chptr->mode.mode & mode)
 			{
-				sendto_serv_butone(&me, ":%s MODE %s -%c 0", me.name, e->chptr->chname, e->m);
+				sendto_server(&me, 0, 0, ":%s MODE %s -%c 0", me.name, e->chptr->chname, e->m);
 				sendto_channel_butserv(e->chptr, &me, ":%s MODE %s -%c", me.name, e->chptr->chname, e->m);
 				e->chptr->mode.mode &= ~mode;
 			}
@@ -1759,7 +1759,7 @@
 		sendto_channelprefix_butone(NULL, &me, chptr,
 			PREFIX_HALFOP|PREFIX_OP|PREFIX_ADMIN|PREFIX_OWNER,
 			":%s NOTICE %s :%s", me.name, target, comment);
-		sendto_serv_butone(&me, ":%s MODE %s +%c 0", me.name, chptr->chname, m);
+		sendto_server(&me, 0, 0, ":%s MODE %s +%c 0", me.name, chptr->chname, m);
 		sendto_channel_butserv(chptr, &me, ":%s MODE %s +%c", me.name, chptr->chname, m);
 		chptr->mode.mode |= modeflag;
 		if (chptr->mode.floodprot->r[what]) /* Add remove-chanmode timer... */
@@ -1786,8 +1786,8 @@
 
 	if (propagate)
 	{
-		sendto_serv_butone(cptr, ":%s MLOCK %lu %s :%s",
-					 cptr->name, chptr->creationtime, chptr->chname,
-					 BadPtr(chptr->mode_lock) ? "" : chptr->mode_lock);
+		sendto_server(cptr,0, 0, ":%s MLOCK %lu %s :%s",
+			      cptr->name, chptr->creationtime, chptr->chname,
+			      BadPtr(chptr->mode_lock) ? "" : chptr->mode_lock);
 	}
 }
diff -r c312ceab2bef src/extcmodes.c
--- a/src/extcmodes.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/extcmodes.c	Sun May 19 19:13:48 2013 -0600
@@ -237,7 +237,7 @@
 			/* Unset channel mode and send MODE -<char> to other servers */
 			sendto_channel_butserv(chptr, &me, ":%s MODE %s -%c",
 				me.name, chptr->chname, cmode->flag);
-			sendto_serv_butone(NULL, ":%s MODE %s -%c 0",
+			sendto_server(NULL, 0, 0, ":%s MODE %s -%c 0",
 				me.name, chptr->chname, cmode->flag);
 			chptr->mode.extmode &= ~cmode->mode;
 		}	
diff -r c312ceab2bef src/ircd.c
--- a/src/ircd.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/ircd.c	Sun May 19 19:13:48 2013 -0600
@@ -655,7 +655,7 @@
 					sendto_realops
 					    ("No response from %s, closing link",
 					    get_client_name(cptr, FALSE));
-					sendto_serv_butone(&me,
+					sendto_server(&me, 0, 0,
 					    ":%s GLOBOPS :No response from %s, closing link",
 					    me.name, get_client_name(cptr,
 					    FALSE));
@@ -1149,7 +1149,8 @@
 			  bootopt |= BOOT_QUICK;
 			  break;
 		  case 'd':
-			  (void)setuid((uid_t) uid);
+			  if (setuid((uid_t) uid) == -1)
+			      printf("WARNING: Could not drop privileges: %s\n", strerror(errno));
 #else
 		  case 'd':
 #endif
@@ -1166,7 +1167,9 @@
 			  else
 			       printf("ERROR: Command line config with a setuid/setgid ircd is not allowed");
 #else
-			  (void)setuid((uid_t) uid);
+			  if (setuid((uid_t) uid) == -1)
+			      printf("WARNING: could not drop privileges: %s\n", strerror(errno));
+
 			  configfile = p;
 #endif
 			  break;
@@ -1234,7 +1237,9 @@
 			  break;
 #ifndef _WIN32
 		  case 't':
-			  (void)setuid((uid_t) uid);
+			  if (setuid((uid_t) uid) == -1)
+			      printf("WARNING: Could not drop privileges: %s\n", strerror(errno));
+
 			  bootopt |= BOOT_TTY;
 			  break;
 		  case 'v':
@@ -1253,7 +1258,8 @@
 		  case 'x':
 #ifdef	DEBUGMODE
 # ifndef _WIN32
-			  (void)setuid((uid_t) uid);
+			  if (setuid((uid_t) uid) == -1)
+			      printf("WARNING: Could not drop privileges: %s\n", strerror(errno));
 # endif
 			  debuglevel = atoi(p);
 			  debugmode = *p ? p : "0";
diff -r c312ceab2bef src/modules/m_adminchat.c
--- a/src/modules/m_adminchat.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_adminchat.c	Sun May 19 19:13:48 2013 -0600
@@ -107,7 +107,7 @@
 		sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
 		return 0;
 	}
-	sendto_serv_butone(IsServer(cptr) ? cptr : NULL, ":%s ADCHAT :%s",
+	sendto_server(IsServer(cptr) ? cptr : NULL, 0, 0, ":%s ADCHAT :%s",
    	    parv[0], message);	
 #ifdef ADMINCHAT
 	sendto_umode(UMODE_ADMIN, "*** AdminChat -- from %s: %s",
diff -r c312ceab2bef src/modules/m_away.c
--- a/src/modules/m_away.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_away.c	Sun May 19 19:13:48 2013 -0600
@@ -108,7 +108,7 @@
                         MyFree(away);
                         sptr->user->away = NULL;
 			/* Only send this if they were actually away -- codemastr */
-	                sendto_serv_butone(cptr, ":%s AWAY", parv[0]);
+	                sendto_server(cptr, 0, 0, ":%s AWAY", parv[0]);
 	                hash_check_watch(cptr, RPL_NOTAWAY);
 
 			sendto_common_channels_local_butone(sptr, PROTO_AWAY_NOTIFY, ":%s AWAY", sptr->name);
@@ -151,7 +151,7 @@
 
 	sptr->user->lastaway = TStime();
 	
-        sendto_serv_butone(cptr, ":%s AWAY :%s", parv[0], awy2);
+        sendto_server(cptr, 0, 0, ":%s AWAY :%s", parv[0], awy2);
 
 	if (away)
 	{
diff -r c312ceab2bef src/modules/m_chatops.c
--- a/src/modules/m_chatops.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_chatops.c	Sun May 19 19:13:48 2013 -0600
@@ -98,7 +98,7 @@
 		return 0;
 	}
 
-	sendto_serv_butone(IsServer(cptr) ? cptr : NULL, ":%s CHATOPS :%s",
+	sendto_server(IsServer(cptr) ? cptr : NULL, 0, 0, ":%s CHATOPS :%s",
 	    parv[0], message);
 	sendto_umode(UMODE_OPER, "*** ChatOps -- from %s: %s", parv[0], message);
 	sendto_umode(UMODE_LOCOP, "*** ChatOps -- from %s: %s", parv[0], message);
diff -r c312ceab2bef src/modules/m_chghost.c
--- a/src/modules/m_chghost.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_chghost.c	Sun May 19 19:13:48 2013 -0600
@@ -188,7 +188,7 @@
                   
 		acptr->umodes |= UMODE_HIDE;
 		acptr->umodes |= UMODE_SETHOST;
-		sendto_serv_butone(cptr, ":%s CHGHOST %s %s",
+		sendto_server(cptr, 0, 0, ":%s CHGHOST %s %s",
 		    sptr->name, acptr->name, parv[2]);
 		if (acptr->user->virthost)
 		{
diff -r c312ceab2bef src/modules/m_chgident.c
--- a/src/modules/m_chgident.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_chgident.c	Sun May 19 19:13:48 2013 -0600
@@ -195,7 +195,7 @@
 
 
 
-		sendto_serv_butone(cptr, ":%s CHGIDENT %s %s",
+		sendto_server(cptr, 0, 0, ":%s CHGIDENT %s %s",
 		    sptr->name, acptr->name, parv[2]);
 		ircsprintf(acptr->user->username, "%s", parv[2]);
 		if (UHOST_ALLOWED == UHALLOW_REJOIN)
diff -r c312ceab2bef src/modules/m_chgname.c
--- a/src/modules/m_chgname.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_chgname.c	Sun May 19 19:13:48 2013 -0600
@@ -161,7 +161,7 @@
 		}
 
 
-		sendto_serv_butone(cptr, ":%s CHGNAME %s :%s",
+		sendto_server(cptr, 0, 0, ":%s CHGNAME %s :%s",
 		    sptr->name, acptr->name, parv[2]);
 		return 0;
 	}
diff -r c312ceab2bef src/modules/m_connect.c
--- a/src/modules/m_connect.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_connect.c	Sun May 19 19:13:48 2013 -0600
@@ -182,7 +182,7 @@
 	 */
 	if (!IsAnOper(cptr))
 	{
-		sendto_serv_butone(&me,
+		sendto_server(&me, 0, 0,
 		    ":%s GLOBOPS :Remote CONNECT %s %s from %s",
 		    me.name, parv[1], parv[2] ? parv[2] : "",
 		    get_client_name(sptr, FALSE));
diff -r c312ceab2bef src/modules/m_eos.c
--- a/src/modules/m_eos.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_eos.c	Sun May 19 19:13:48 2013 -0600
@@ -91,7 +91,7 @@
 	ircd_log(LOG_ERROR, "[EOSDBG] m_eos: got sync from %s (path:%s)", sptr->name, cptr->name);
 	ircd_log(LOG_ERROR, "[EOSDBG] m_eos: broadcasting it back to everyone except route from %s", cptr->name);
 #endif
-	sendto_serv_butone(cptr, ":%s EOS", parv[0]);
+	sendto_server(cptr, 0, 0, ":%s EOS", parv[0]);
 
 	return 0;
 }
diff -r c312ceab2bef src/modules/m_globops.c
--- a/src/modules/m_globops.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_globops.c	Sun May 19 19:13:48 2013 -0600
@@ -96,7 +96,7 @@
 		sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
 		return 0;
 	}
-	sendto_serv_butone(IsServer(cptr) ? cptr : NULL, ":%s GLOBOPS :%s",
+	sendto_server(IsServer(cptr) ? cptr : NULL, 0, 0, ":%s GLOBOPS :%s",
 	    parv[0], message);
 	sendto_failops_whoare_opers("from %s: %s", parv[0], message);
 	return 0;
diff -r c312ceab2bef src/modules/m_join.c
--- a/src/modules/m_join.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_join.c	Sun May 19 19:13:48 2013 -0600
@@ -347,7 +347,7 @@
 		if (chptr->creationtime == 0)
 		{
 			chptr->creationtime = TStime();
-			sendto_serv_butone(cptr, ":%s MODE %s + %lu",
+			sendto_server(cptr, 0, 0, ":%s MODE %s + %lu",
 			    me.name, chptr->chname, chptr->creationtime);
 		}
 		del_invite(sptr, chptr);
@@ -409,7 +409,7 @@
 			*modebuf = *parabuf = 0;
 			channel_modes(sptr, modebuf, parabuf, chptr);
 			/* This should probably be in the SJOIN stuff */
-			sendto_serv_butone(&me, ":%s MODE %s %s %s %lu",
+			sendto_server(&me, 0, 0, ":%s MODE %s %s %s %lu",
 			    me.name, chptr->chname, modebuf, parabuf, chptr->creationtime);
 			sendto_one(sptr, ":%s MODE %s %s %s", me.name, chptr->chname, modebuf, parabuf);
 		}
@@ -540,7 +540,7 @@
 					RunHook4(HOOKTYPE_LOCAL_PART, cptr, sptr, chptr, "Left all channels");
 				remove_user_from_channel(sptr, chptr);
 			}
-			sendto_serv_butone(cptr, ":%s JOIN 0", parv[0]);
+			sendto_server(cptr, 0, 0, ":%s JOIN 0", parv[0]);
 			continue;
 		}
 
diff -r c312ceab2bef src/modules/m_kick.c
--- a/src/modules/m_kick.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_kick.c	Sun May 19 19:13:48 2013 -0600
@@ -318,7 +318,7 @@
 						    parv[0], chptr->chname, who->name, comment);
 					}
 				}
-				sendto_serv_butone(cptr, ":%s KICK %s %s :%s",
+				sendto_server(cptr, 0, 0, ":%s KICK %s %s :%s",
 				    parv[0], chptr->chname, who->name, comment);
 				if (lp)
 				{
diff -r c312ceab2bef src/modules/m_kill.c
--- a/src/modules/m_kill.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_kill.c	Sun May 19 19:13:48 2013 -0600
@@ -263,7 +263,7 @@
 		 */
 		if (!MyConnect(acptr) || !MyConnect(sptr) || !IsAnOper(sptr))
 		{
-			sendto_serv_butone(cptr, ":%s KILL %s :%s!%s",
+			sendto_server(cptr, 0, 0, ":%s KILL %s :%s!%s",
 			    parv[0], acptr->name, inpath, path);
 			if (chasing && IsServer(cptr))
 				sendto_one(cptr, ":%s KILL %s :%s!%s",
diff -r c312ceab2bef src/modules/m_message.c
--- a/src/modules/m_message.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_message.c	Sun May 19 19:13:48 2013 -0600
@@ -792,7 +792,7 @@
 		sendto_umode(UMODE_VICTIM,
 		    "%s tried to send forbidden file %s (%s) to %s (is blocked now)",
 		    sptr->name, displayfile, fl->reason, target);
-		sendto_serv_butone(NULL, ":%s SMO v :%s tried to send forbidden file %s (%s) to %s (is blocked now)",
+		sendto_server(NULL, 0, 0, ":%s SMO v :%s tried to send forbidden file %s (%s) to %s (is blocked now)",
 			me.name, sptr->name, displayfile, fl->reason, target);
 		sptr->flags |= FLAGS_DCCBLOCK;
 		return 0; /* block */
diff -r c312ceab2bef src/modules/m_mode.c
--- a/src/modules/m_mode.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_mode.c	Sun May 19 19:13:48 2013 -0600
@@ -505,11 +505,11 @@
 	{
 		if (tschange || isbounce) {	/* relay bounce time changes */
 			if (chptr->creationtime)
-				sendto_serv_butone(cptr, ":%s MODE %s %s+ %lu",
+				sendto_server(cptr, 0, 0, ":%s MODE %s %s+ %lu",
 				    me.name, chptr->chname, isbounce ? "&" : "",
 				    chptr->creationtime);
 			else
-				sendto_serv_butone(cptr, ":%s MODE %s %s+",
+				sendto_server(cptr, 0, 0, ":%s MODE %s %s+",
 				    me.name, chptr->chname, isbounce ? "&" : "");
 		return;		/* nothing to send */
 		}
@@ -538,7 +538,7 @@
 		return;
 	if (IsPerson(sptr) && samode && MyClient(sptr))
 	{
-		sendto_serv_butone(NULL,
+		sendto_server(NULL, 0, 0,
 		    ":%s GLOBOPS :%s used SAMODE %s (%s%s%s)", me.name, sptr->name,
 		    chptr->chname, modebuf, *parabuf ? " " : "", parabuf);
 		sendto_failops_whoare_opers
@@ -552,14 +552,14 @@
 	sendto_channel_butserv(chptr, sptr, ":%s MODE %s %s %s",
 	    sptr->name, chptr->chname, modebuf, parabuf);
 	if (IsServer(sptr) && sendts != -1)
-		sendto_serv_butone(cptr, ":%s MODE %s %s%s %s%lu",
+		sendto_server(cptr, 0, 0, ":%s MODE %s %s%s %s%lu",
 		    sptr->name, chptr->chname, isbounce ? "&" : "",
 		    modebuf, parabuf, sendts);
 	else if (samode && IsMe(sptr)) /* SAMODE is a special case: always send a TS of 0 (omitting TS==desynch) */
-		sendto_serv_butone(cptr, ":%s MODE %s %s %s 0",
+		sendto_server(cptr, 0, 0, ":%s MODE %s %s %s 0",
 		    sptr->name, chptr->chname, modebuf, parabuf);
 	else
-		sendto_serv_butone(cptr, ":%s MODE %s %s%s %s",
+		sendto_server(cptr, 0, 0, ":%s MODE %s %s%s %s",
 		    sptr->name, chptr->chname, isbounce ? "&" : "",
 		    modebuf, parabuf);
 	/* tell them it's not a timestamp, in case the last param
@@ -2109,7 +2109,7 @@
 		  case 'O':
 			  if(sptr->from->flags & FLAGS_QUARANTINE)
 			  {
-			    sendto_serv_butone(NULL, ":%s KILL %s :%s (Quarantined: no global oper privileges allowed)", me.name, sptr->name, me.name);
+			    sendto_server(NULL, 0, 0, ":%s KILL %s :%s (Quarantined: no global oper privileges allowed)", me.name, sptr->name, me.name);
 			    return exit_client(cptr, sptr, &me, "Quarantined: no global oper privileges allowed");
 			  }
 			  /* A local user trying to set himself +o/+O is denied here.
diff -r c312ceab2bef src/modules/m_nachat.c
--- a/src/modules/m_nachat.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_nachat.c	Sun May 19 19:13:48 2013 -0600
@@ -106,7 +106,7 @@
 		return 0;
 	}
 
-	sendto_serv_butone(IsServer(cptr) ? cptr : NULL, ":%s NACHAT :%s",
+	sendto_server(IsServer(cptr) ? cptr : NULL, 0, 0, ":%s NACHAT :%s",
 	    parv[0], message);
 #ifdef ADMINCHAT
 	sendto_umode(UMODE_NETADMIN, "*** NetAdmin.Chat -- from %s: %s",
diff -r c312ceab2bef src/modules/m_netinfo.c
--- a/src/modules/m_netinfo.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_netinfo.c	Sun May 19 19:13:48 2013 -0600
@@ -140,7 +140,7 @@
 		sendto_realops
 		    ("Possible negative TS split at link %s (%li - %li = %li)%s",
 		    cptr->name, (xx), (endsync), (xx - endsync), emsg);
-		sendto_serv_butone(&me,
+		sendto_server(&me, 0, 0,
 		    ":%s SMO o :\2(sync)\2 Possible negative TS split at link %s (%li - %li = %li)%s",
 		    me.name, cptr->name, (xx), (endsync), (xx - endsync), emsg);
 	}
@@ -149,7 +149,7 @@
 	    cptr->name, me.name, (TStime() - endsync), sptr->receiveK,
 	    sptr->receiveB, sptr->sendK, sptr->sendB);
 
-	sendto_serv_butone(&me,
+	sendto_server(&me, 0, 0,
 	    ":%s SMO o :\2(sync)\2 Link %s -> %s is now synced [secs: %li recv: %ld.%hu sent: %ld.%hu]",
 	    me.name, cptr->name, me.name, (TStime() - endsync), sptr->receiveK,
 	    sptr->receiveB, sptr->sendK, sptr->sendB);
@@ -158,7 +158,7 @@
 	{
 		sendto_realops("Network name mismatch from link %s (%s != %s)",
 		    cptr->name, parv[8], ircnetwork);
-		sendto_serv_butone(&me,
+		sendto_server(&me, 0, 0,
 		    ":%s SMO o :\2(sync)\2 Network name mismatch from link %s (%s != %s)",
 		    me.name, cptr->name, parv[8], ircnetwork);
 	}
@@ -168,7 +168,7 @@
 		sendto_realops
 		    ("Link %s is running Protocol u%li while we are running %d!",
 		    cptr->name, protocol, UnrealProtocol);
-		sendto_serv_butone(&me,
+		sendto_server(&me, 0, 0,
 		    ":%s SMO o :\2(sync)\2 Link %s is running u%li while %s is running %d!",
 		    me.name, cptr->name, protocol, me.name, UnrealProtocol);
 
diff -r c312ceab2bef src/modules/m_nick.c
--- a/src/modules/m_nick.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_nick.c	Sun May 19 19:13:48 2013 -0600
@@ -168,7 +168,7 @@
 			    nick, cptr->name);
 			if (sptr != cptr)
 			{	/* bad nick change */
-				sendto_serv_butone(cptr,
+				sendto_server(cptr, 0, 0,
 				    ":%s KILL %s :%s (%s <- %s!%s@%s)",
 				    me.name, parv[0], me.name,
 				    get_client_name(cptr, FALSE),
@@ -472,7 +472,7 @@
 		if (!(parc > 3) || (acptr->lastnick == lastnick))
 		{
 			ircstp->is_kill++;
-			sendto_serv_butone(NULL,
+			sendto_server(NULL, 0, 0,
 			    ":%s KILL %s :%s (Nick Collision)",
 			    me.name, acptr->name, me.name);
 			acptr->flags |= FLAGS_KILLED;
@@ -485,7 +485,7 @@
 		    (!differ && (acptr->lastnick < lastnick)) || acptr->from == cptr)	/* we missed a QUIT somewhere ? */
 		{
 			ircstp->is_kill++;
-			sendto_serv_butone(cptr,
+			sendto_server(cptr, 0, 0,
 			    ":%s KILL %s :%s (Nick Collision)",
 			    me.name, acptr->name, me.name);
 			acptr->flags |= FLAGS_KILLED;
@@ -531,10 +531,10 @@
 		if (!(parc > 2) || lastnick == acptr->lastnick)
 		{
 			ircstp->is_kill += 2;
-			sendto_serv_butone(NULL,	/* First kill the new nick. */
+			sendto_server(NULL, 0, 0, /* First kill the new nick. */
 			    ":%s KILL %s :%s (Self Collision)",
 			    me.name, acptr->name, me.name);
-			sendto_serv_butone(cptr,	/* Tell my servers to kill the old */
+			sendto_server(cptr, 0, 0, /* Tell my servers to kill the old */
 			    ":%s KILL %s :%s (Self Collision)",
 			    me.name, sptr->name, me.name);
 			sptr->flags |= FLAGS_KILLED;
@@ -548,7 +548,7 @@
 		{
 			/* sptr (their user) won, let's kill acptr (our user) */
 			ircstp->is_kill++;
-			sendto_serv_butone(cptr,
+			sendto_server(cptr, 0, 0,
 			    ":%s KILL %s :%s (Nick collision: %s <- %s)",
 			    me.name, acptr->name, me.name,
 			    acptr->from->name, sptr->from->name);
@@ -564,7 +564,7 @@
 			 */
 			ircstp->is_kill++;
 			/* Kill the user trying to change their nick. */
-			sendto_serv_butone(cptr,
+			sendto_server(cptr, 0, 0,
 			    ":%s KILL %s :%s (Nick collision: %s <- %s)",
 			    me.name, sptr->name, me.name,
 			    sptr->from->name, acptr->from->name);
@@ -687,7 +687,7 @@
 		}
 		add_history(sptr, 1);
 		sendto_common_channels(sptr, ":%s NICK :%s", parv[0], nick);
-		sendto_serv_butone(cptr, ":%s NICK %s %ld",
+		sendto_server(cptr, 0, 0, ":%s NICK %s %ld",
 		    parv[0], nick, sptr->lastnick);
 		if (removemoder)
 			sptr->umodes &= ~UMODE_REGNICK;
@@ -1181,6 +1181,7 @@
 
 	hash_check_watch(sptr, RPL_LOGON);	/* Uglier hack */
 	send_umode(NULL, sptr, 0, SEND_UMODES|UMODE_SERVNOTICE, buf);
+
 	/* NICKv2 Servers ! */
 	sendto_serv_butone_nickcmd(cptr, sptr, nick,
 	    sptr->hopcount + 1, sptr->lastnick, user->username, user->realhost,
diff -r c312ceab2bef src/modules/m_oper.c
--- a/src/modules/m_oper.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_oper.c	Sun May 19 19:13:48 2013 -0600
@@ -144,7 +144,7 @@
 		vhost =	c+1;
 		strncpy(sptr->user->username, host, c-host);
 		sptr->user->username[c-host] = 0;
-		sendto_serv_butone(NULL, ":%s SETIDENT %s",
+		sendto_server(NULL, 0, 0, ":%s SETIDENT %s",
 		    sptr->name, sptr->user->username);
 	}
 	iNAH_host(sptr, vhost);
@@ -269,7 +269,7 @@
 				MyFree(sptr->user->swhois);
 			sptr->user->swhois = MyMalloc(strlen(aconf->swhois) +1);
 			strcpy(sptr->user->swhois, aconf->swhois);
-			sendto_serv_butone(cptr, ":%s SWHOIS %s :%s",
+			sendto_server(cptr, 0, 0, ":%s SWHOIS %s :%s",
 			    me.name, sptr->name, aconf->swhois);
 		}
 
diff -r c312ceab2bef src/modules/m_part.c
--- a/src/modules/m_part.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_part.c	Sun May 19 19:13:48 2013 -0600
@@ -199,10 +199,10 @@
 
 		/* Send to other servers... */
 		if (!comment)
-			sendto_serv_butone(cptr, ":%s PART %s",
+			sendto_server(cptr, 0, 0, ":%s PART %s",
 			    parv[0], chptr->chname);
 		else
-			sendto_serv_butone(cptr, ":%s PART %s :%s",
+			sendto_server(cptr, 0, 0, ":%s PART %s :%s",
 			    parv[0], chptr->chname, comment);
 
 		if (1)
diff -r c312ceab2bef src/modules/m_sajoin.c
--- a/src/modules/m_sajoin.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_sajoin.c	Sun May 19 19:13:48 2013 -0600
@@ -174,7 +174,7 @@
 							 "Left all channels");
 					remove_user_from_channel(acptr, chptr);
 				}
-				sendto_serv_butone(acptr, ":%s JOIN 0", acptr->name);
+				sendto_server(acptr, 0, 0, ":%s JOIN 0", acptr->name);
 				strcpy(jbuf, "0");
 				i = 1;
 				continue;
@@ -202,7 +202,7 @@
 			sendnotice(acptr, "*** You were forced to join %s", jbuf);
 			sendto_realops("%s used SAJOIN to make %s join %s", sptr->name, acptr->name,
 				       jbuf);
-			sendto_serv_butone(&me, ":%s GLOBOPS :%s used SAJOIN to make %s join %s",
+			sendto_server(&me, 0, 0, ":%s GLOBOPS :%s used SAJOIN to make %s join %s",
 					   me.name, sptr->name, acptr->name, jbuf);
 			/* Logging function added by XeRXeS */
 			ircd_log(LOG_SACMDS,"SAJOIN: %s used SAJOIN to make %s join %s",
diff -r c312ceab2bef src/modules/m_sapart.c
--- a/src/modules/m_sapart.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_sapart.c	Sun May 19 19:13:48 2013 -0600
@@ -160,7 +160,7 @@
 			    parv[1], commentx);
 			sendto_realops("%s used SAPART to make %s part %s (%s)", sptr->name, parv[0],
 				parv[1], comment);
-			sendto_serv_butone(&me, ":%s GLOBOPS :%s used SAPART to make %s part %s (%s)",
+			sendto_server(&me, 0, 0, ":%s GLOBOPS :%s used SAPART to make %s part %s (%s)",
 				me.name, sptr->name, parv[0], parv[1], comment);
 			/* Logging function added by XeRXeS */
 			ircd_log(LOG_SACMDS,"SAPART: %s used SAPART to make %s part %s (%s)",
@@ -172,7 +172,7 @@
 			    "*** You were forced to part %s", parv[1]);
 			sendto_realops("%s used SAPART to make %s part %s", sptr->name, parv[0],
 				parv[1]);
-			sendto_serv_butone(&me, ":%s GLOBOPS :%s used SAPART to make %s part %s",
+			sendto_server(&me, 0, 0, ":%s GLOBOPS :%s used SAPART to make %s part %s",
 				me.name, sptr->name, parv[0], parv[1]);
 			/* Logging function added by XeRXeS */
 			ircd_log(LOG_SACMDS,"SAPART: %s used SAPART to make %s part %s",
diff -r c312ceab2bef src/modules/m_sasl.c
--- a/src/modules/m_sasl.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_sasl.c	Sun May 19 19:13:48 2013 -0600
@@ -176,7 +176,7 @@
 	}
 
 	/* not for us; propagate. */
-	sendto_serv_butone(cptr, ":%s SVSLOGIN %s %s %s",
+	sendto_server(cptr, 0, 0, ":%s SVSLOGIN %s %s %s",
 	    parv[0], parv[1], parv[2], parv[3]);
 
 	return 0;
@@ -233,7 +233,7 @@
 	}
 
 	/* not for us; propagate. */
-	sendto_serv_butone(cptr, ":%s SASL %s %s %c %s %s",
+	sendto_server(cptr, 0, 0, ":%s SASL %s %s %c %s %s",
 	    parv[0], parv[1], parv[2], *parv[3], parv[4], parc > 5 ? parv[5] : "");
 
 	return 0;
@@ -269,10 +269,10 @@
 		agent_p = find_client(sptr->sasl_agent, NULL);
 
 	if (agent_p == NULL)
-		sendto_serv_butone(NULL, ":%s SASL %s %s S %s",
+		sendto_server(NULL, 0, 0, ":%s SASL %s %s S %s",
 		    me.name, SASL_SERVER, encode_puid(sptr), parv[1]);
 	else
-		sendto_serv_butone(NULL, ":%s SASL %s %s C %s",
+		sendto_server(NULL, 0, 0, ":%s SASL %s %s C %s",
 		    me.name, AGENT_SID(agent_p), encode_puid(sptr), parv[1]);
 
 	sptr->sasl_out++;
@@ -294,13 +294,13 @@
 
 		if (agent_p != NULL)
 		{
-			sendto_serv_butone(NULL, ":%s SASL %s %s D A",
+			sendto_server(NULL, 0, 0, ":%s SASL %s %s D A",
 			    me.name, AGENT_SID(agent_p), encode_puid(cptr));
 			return 0;
 		}
 	}
 
-	sendto_serv_butone(NULL, ":%s SASL * %s D A", me.name, encode_puid(cptr));
+	sendto_server(NULL, 0, 0, ":%s SASL * %s D A", me.name, encode_puid(cptr));
 	return 0;
 }
 
diff -r c312ceab2bef src/modules/m_sdesc.c
--- a/src/modules/m_sdesc.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_sdesc.c	Sun May 19 19:13:48 2013 -0600
@@ -117,7 +117,7 @@
 
 	ircsprintf(sptr->srvptr->info, "%s", parv[1]);
 
-	sendto_serv_butone(cptr, ":%s SDESC :%s", sptr->name, parv[1]);
+	sendto_server(cptr, 0, 0, ":%s SDESC :%s", sptr->name, parv[1]);
 
 	if (MyConnect(sptr))
 		sendto_one(sptr,
diff -r c312ceab2bef src/modules/m_sendsno.c
--- a/src/modules/m_sendsno.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_sendsno.c	Sun May 19 19:13:48 2013 -0600
@@ -101,7 +101,7 @@
 	msg = parv[2];
 
 	/* Forward to others... */
-	sendto_serv_butone(cptr, ":%s SENDSNO %s :%s", sptr->name, parv[1], parv[2]);
+	sendto_server(cptr, 0, 0, ":%s SENDSNO %s :%s", sptr->name, parv[1], parv[2]);
 
 	for (p = sno; *p; p++)
 	{
diff -r c312ceab2bef src/modules/m_sendumode.c
--- a/src/modules/m_sendumode.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_sendumode.c	Sun May 19 19:13:48 2013 -0600
@@ -114,7 +114,7 @@
 		return 0;
 	}
 
-	sendto_serv_butone(IsServer(cptr) ? cptr : NULL,
+	sendto_server(IsServer(cptr) ? cptr : NULL, 0, 0,
 	    ":%s SMO %s :%s", parv[0], parv[1], message);
 
 	for (p = parv[1]; *p; p++)
diff -r c312ceab2bef src/modules/m_server.c
--- a/src/modules/m_server.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_server.c	Sun May 19 19:13:48 2013 -0600
@@ -643,7 +643,7 @@
 #ifdef USE_SSL
 	if (IsSecure(cptr))
 	{
-		sendto_serv_butone(&me, ":%s SMO o :(\2link\2) Secure link %s -> %s established (%s)",
+		sendto_server(&me, 0, 0, ":%s SMO o :(\2link\2) Secure link %s -> %s established (%s)",
 			me.name,
 			me.name, inpath, (char *) ssl_get_cipher((SSL *)cptr->ssl));
 		sendto_realops("(\2link\2) Secure link %s -> %s established (%s)",
@@ -652,7 +652,7 @@
 	else
 #endif
 	{
-		sendto_serv_butone(&me, ":%s SMO o :(\2link\2) Link %s -> %s established",
+		sendto_server(&me, 0, 0, ":%s SMO o :(\2link\2) Link %s -> %s established",
 			me.name,
 			me.name, inpath);
 		sendto_realops("(\2link\2) Link %s -> %s established",
diff -r c312ceab2bef src/modules/m_sethost.c
--- a/src/modules/m_sethost.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_sethost.c	Sun May 19 19:13:48 2013 -0600
@@ -221,7 +221,7 @@
 		}
 		sptr->user->virthost = strdup(vhost);
 		/* spread it out */
-		sendto_serv_butone(cptr, ":%s SETHOST %s", sptr->name, parv[1]);
+		sendto_server(cptr, 0, 0, ":%s SETHOST %s", sptr->name, parv[1]);
 
 		if (UHOST_ALLOWED == UHALLOW_REJOIN)
 			rejoin_dojoinandmode(sptr);
diff -r c312ceab2bef src/modules/m_setident.c
--- a/src/modules/m_setident.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_setident.c	Sun May 19 19:13:48 2013 -0600
@@ -213,7 +213,7 @@
 		/* get it in */
 		ircsprintf(sptr->user->username, "%s", vident);
 		/* spread it out */
-		sendto_serv_butone(cptr, ":%s SETIDENT %s", sptr->name, parv[1]);
+		sendto_server(cptr, 0, 0, ":%s SETIDENT %s", sptr->name, parv[1]);
 
 		if (UHOST_ALLOWED == UHALLOW_REJOIN)
 			rejoin_dojoinandmode(sptr);
diff -r c312ceab2bef src/modules/m_setname.c
--- a/src/modules/m_setname.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_setname.c	Sun May 19 19:13:48 2013 -0600
@@ -122,7 +122,7 @@
 		return exit_client(cptr, sptr, &me,
 		                   "Your GECOS (real name) is banned from this server");
 
-	sendto_serv_butone(cptr, ":%s SETNAME :%s", sptr->name, parv[1]);
+	sendto_server(cptr, 0, 0, ":%s SETNAME :%s", sptr->name, parv[1]);
 
 	if (MyConnect(sptr))
 		sendnotice(sptr, "Your \"real name\" is now set to be %s - you have to set it manually to undo it",
diff -r c312ceab2bef src/modules/m_silence.c
--- a/src/modules/m_silence.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_silence.c	Sun May 19 19:13:48 2013 -0600
@@ -126,7 +126,7 @@
 			sendto_prefix_one(sptr, sptr, ":%s SILENCE %c%s",
 			    parv[0], c, cp);
 			if (c == '-')
-				sendto_serv_butone(NULL, ":%s SILENCE * -%s",
+				sendto_server(NULL, 0, 0, ":%s SILENCE * -%s",
 				    sptr->name, cp);
 		}
 	}
@@ -141,7 +141,7 @@
 		if (c == '-')
 		{
 			if (!del_silence(sptr, parv[2] + 1))
-				sendto_serv_butone(cptr, ":%s SILENCE %s :%s",
+				sendto_server(cptr, 0, 0, ":%s SILENCE %s :%s",
 				    parv[0], parv[1], parv[2]);
 		}
 		else
diff -r c312ceab2bef src/modules/m_squit.c
--- a/src/modules/m_squit.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_squit.c	Sun May 19 19:13:48 2013 -0600
@@ -163,7 +163,7 @@
 
 		sendto_locfailops("Received SQUIT %s from %s (%s)",
 		    acptr->name, get_client_name(sptr, FALSE), comment);
-		sendto_serv_butone(&me,
+		sendto_server(&me, 0, 0,
 		    ":%s GLOBOPS :Received SQUIT %s from %s (%s)", me.name,
 		    server, get_client_name(sptr, FALSE), comment);
 	}
@@ -176,14 +176,14 @@
 			sendto_ops
 			    ("%s tried to do a fake kill using SQUIT (%s (%s))",
 			    sptr->name, acptr->name, comment);
-			sendto_serv_butone(&me,
+			sendto_server(&me, 0, 0,
 			    ":%s GLOBOPS :%s tried to fake kill using SQUIT (%s (%s))",
 			    me.name, sptr->name, acptr->name, comment);
 			return 0;
 		}
 		sendto_locfailops("Received SQUIT %s from %s (%s)",
 		    acptr->name, get_client_name(sptr, FALSE), comment);
-		sendto_serv_butone(&me,
+		sendto_server(&me, 0, 0,
 		    ":%s GLOBOPS :Received SQUIT %s from %s (%s)", me.name,
 		    acptr->name, get_client_name(sptr, FALSE), comment);
 	}
diff -r c312ceab2bef src/modules/m_svsfline.c
--- a/src/modules/m_svsfline.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_svsfline.c	Sun May 19 19:13:48 2013 -0600
@@ -93,7 +93,7 @@
 		  if (!Find_deny_dcc(parv[2]))
 			  DCCdeny_add(parv[2], parv[3], DCCDENY_HARD, CONF_BAN_TYPE_AKILL);
 		  if (IsULine(sptr))
-			  sendto_serv_butone(cptr, ":%s SVSFLINE + %s :%s",
+			  sendto_server(cptr, 0, 0, ":%s SVSFLINE + %s :%s",
 			      sptr->name, parv[2], parv[3]);
 		  break;
 	  }
@@ -107,7 +107,7 @@
 		  if (!(deny = Find_deny_dcc(parv[2])))
 			break;
 		  DCCdeny_del(deny);
-		  sendto_serv_butone(cptr, ":%s SVSFLINE %s", sptr->name, parv[2]);
+		  sendto_server(cptr, 0, 0, ":%s SVSFLINE %s", sptr->name, parv[2]);
 		  break;
 	  }
 	  case '*':
@@ -115,7 +115,7 @@
 		  if (!IsULine(sptr))
 			  return 0;
 		  dcc_wipe_services();
-		  sendto_serv_butone(cptr, ":%s SVSFLINE *", sptr->name);
+		  sendto_server(cptr, 0, 0, ":%s SVSFLINE *", sptr->name);
 		  break;
 	  }
 
diff -r c312ceab2bef src/modules/m_svskill.c
--- a/src/modules/m_svskill.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_svskill.c	Sun May 19 19:13:48 2013 -0600
@@ -107,7 +107,7 @@
 	if (!(acptr = find_person(parv[1], NULL)))
 		return 0;
 
-	sendto_serv_butone(cptr, ":%s SVSKILL %s :%s", parv[0], parv[1], comment);
+	sendto_server(cptr, 0, 0, ":%s SVSKILL %s :%s", parv[0], parv[1], comment);
 
 	acptr->flags |= FLAGS_KILLED;
 
diff -r c312ceab2bef src/modules/m_svsmode.c
--- a/src/modules/m_svsmode.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_svsmode.c	Sun May 19 19:13:48 2013 -0600
@@ -370,7 +370,7 @@
 	if (*parabuf) {
 		sendto_channel_butserv(chptr, sptr, ":%s MODE %s %s %s", sptr->name, chptr->chname, 
 			modebuf, parabuf);
-		sendto_serv_butone(NULL, ":%s MODE %s %s %s", sptr->name, chptr->chname, modebuf, parabuf);
+		sendto_server(NULL, 0, 0, ":%s MODE %s %s %s", sptr->name, chptr->chname, modebuf, parabuf);
 
 		/* Activate this hook just like m_mode.c */
 		RunHook7(HOOKTYPE_REMOTE_CHANMODE, cptr, sptr, chptr, modebuf, parabuf, ts, 0);
@@ -557,11 +557,11 @@
 		} /*switch*/
 
 	if (parc > 3)
-		sendto_serv_butone(cptr, ":%s %s %s %s %s",
+		sendto_server(cptr, 0, 0, ":%s %s %s %s %s",
 		    parv[0], show_change ? "SVS2MODE" : "SVSMODE",
 		    parv[1], parv[2], parv[3]);
 	else
-		sendto_serv_butone(cptr, ":%s %s %s %s",
+		sendto_server(cptr, 0, 0,  ":%s %s %s %s",
 		    parv[0], show_change ? "SVS2MODE" : "SVSMODE",
 		    parv[1], parv[2]);
 
@@ -644,7 +644,7 @@
 	if (send) {
 		sendto_channel_butserv(chptr, from, ":%s MODE %s %s %s",
 			from->name, chptr->chname, modebuf, parabuf);
-		sendto_serv_butone(NULL, ":%s MODE %s %s %s", from->name, chptr->chname, modebuf, parabuf);
+		sendto_server(NULL, 0, 0, ":%s MODE %s %s %s", from->name, chptr->chname, modebuf, parabuf);
 		send = 0;
 		*parabuf = 0;
 		modes = modebuf;
diff -r c312ceab2bef src/modules/m_svsmotd.c
--- a/src/modules/m_svsmotd.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_svsmotd.c	Sun May 19 19:13:48 2013 -0600
@@ -120,9 +120,9 @@
                   return 0;
         }
         if (parv[2])
-                sendto_serv_butone(cptr, ":%s SVSMOTD %s :%s", parv[0], parv[1], parv[2]);
+                sendto_server(cptr, 0, 0, ":%s SVSMOTD %s :%s", parv[0], parv[1], parv[2]);
         else
-                sendto_serv_butone(cptr, ":%s SVSMOTD %s", parv[0], parv[1]);
+                sendto_server(cptr, 0, 0, ":%s SVSMOTD %s", parv[0], parv[1]);
 
         if (conf == NULL)
         {
diff -r c312ceab2bef src/modules/m_svsnick.c
--- a/src/modules/m_svsnick.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_svsnick.c	Sun May 19 19:13:48 2013 -0600
@@ -112,7 +112,7 @@
 	acptr->lastnick = atol(parv[3]);
 	sendto_common_channels(acptr, ":%s NICK :%s", parv[1], parv[2]);
 	add_history(acptr, 1);
-	sendto_serv_butone(NULL, ":%s NICK %s :%ld", parv[1], parv[2], atol(parv[3]));
+	sendto_server(NULL, 0, 0, ":%s NICK %s :%ld", parv[1], parv[2], atol(parv[3]));
 
 	(void)del_from_client_hash_table(acptr->name, acptr);
 	hash_check_watch(acptr, RPL_LOGOFF);
diff -r c312ceab2bef src/modules/m_svsnline.c
--- a/src/modules/m_svsnline.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_svsnline.c	Sun May 19 19:13:48 2013 -0600
@@ -142,7 +142,7 @@
 		  } 
 		 
 		  if (IsULine(sptr))
-			sendto_serv_butone(cptr, ":%s SVSNLINE + %s :%s",
+			sendto_server(cptr, 0, 0, ":%s SVSNLINE + %s :%s",
 			    sptr->name, parv[2], parv[3]);
 		  break;
 	  }
@@ -173,7 +173,7 @@
 		  	MyFree(bconf);
 		  	
 		  }
-		  sendto_serv_butone(cptr, ":%s SVSNLINE - %s", sptr->name, parv[2]);
+		  sendto_server(cptr, 0, 0, ":%s SVSNLINE - %s", sptr->name, parv[2]);
 		  break;
 	  }
 	  case '*':
@@ -181,7 +181,7 @@
 		  if (!IsULine(sptr))
 			  return 0;
 	          wipe_svsnlines();
-		  sendto_serv_butone(cptr, ":%s SVSNLINE *", sptr->name);
+		  sendto_server(cptr, 0, 0, ":%s SVSNLINE *", sptr->name);
 		  break;
 	  }
 
diff -r c312ceab2bef src/modules/m_svssilence.c
--- a/src/modules/m_svssilence.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_svssilence.c	Sun May 19 19:13:48 2013 -0600
@@ -99,7 +99,7 @@
 	if (parc < 3 || BadPtr(parv[2]) || !(acptr = find_person(parv[1], NULL)))
 		return 0;
 	
-	sendto_serv_butone(sptr, ":%s SVSSILENCE %s :%s", parv[0], parv[1], parv[2]);
+	sendto_server(sptr, 0, 0, ":%s SVSSILENCE %s :%s", parv[0], parv[1], parv[2]);
 
 	mine = MyClient(acptr) ? 1 : 0;
 
diff -r c312ceab2bef src/modules/m_swhois.c
--- a/src/modules/m_swhois.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_swhois.c	Sun May 19 19:13:48 2013 -0600
@@ -98,6 +98,6 @@
                 MyFree(acptr->user->swhois);
         acptr->user->swhois = MyMalloc(strlen(parv[2]) + 1);
         strcpy(acptr->user->swhois, parv[2]);
-        sendto_serv_butone(cptr, ":%s SWHOIS %s :%s", sptr->name, parv[1], parv[2]);
+        sendto_server(cptr, 0, 0, ":%s SWHOIS %s :%s", sptr->name, parv[1], parv[2]);
         return 0;
 }
diff -r c312ceab2bef src/modules/m_tkl.c
--- a/src/modules/m_tkl.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_tkl.c	Sun May 19 19:13:48 2013 -0600
@@ -323,7 +323,7 @@
 					acptr->name, acptr->user->username, acptr->user->realhost,
 					sptr->name, comment);
 				sendto_snomask(SNO_TKL, "%s", buf);
-				sendto_serv_butone(NULL, ":%s SENDSNO G :%s", me.name, buf);
+				sendto_server(NULL, 0, 0, ":%s SENDSNO G :%s", me.name, buf);
 			}
 		} else {
 			if (!IsShunned(acptr))
@@ -335,7 +335,7 @@
 					acptr->name, acptr->user->username, acptr->user->realhost,
 					sptr->name);
 				sendto_snomask(SNO_TKL, "%s", buf);
-				sendto_serv_butone(NULL, ":%s SENDSNO G :%s", me.name, buf);
+				sendto_server(NULL, 0, 0, ":%s SENDSNO G :%s", me.name, buf);
 			}
 		}
 	}
@@ -1445,7 +1445,7 @@
 				unreal_decodespace(tk->ptr.spamf->tkl_reason));
 
 			sendto_snomask(SNO_SPAMF, "%s", buf);
-			sendto_serv_butone(NULL, ":%s SENDSNO S :%s", me.name, buf);
+			sendto_server(NULL, 0, 0, ":%s SENDSNO S :%s", me.name, buf);
 			ircd_log(LOG_SPAMFILTER, "%s", buf);
 			RunHook6(HOOKTYPE_LOCAL_SPAMFILTER, acptr, spamfilter_user, spamfilter_user, SPAMF_USER, NULL, tk);
 			matches++;
@@ -2018,7 +2018,7 @@
 				 			tk->ptr.spamf->tkl_reason, tk->reason);
 				 	} 
 					else if (type & TKL_GLOBAL)
-				 		sendto_serv_butone(cptr,
+				 		sendto_server(cptr, 0, 0,
 				 			":%s TKL %s %s %s %s %s %ld %ld :%s", sptr->name,
 				 			parv[1], parv[2], parv[3], parv[4],
 				 			tk->setby, tk->expire_at, tk->set_at, tk->reason);
@@ -2148,7 +2148,7 @@
 					parv[1], parv[2], parv[3], parv[4], parv[5],
 					parv[6], parv[7], parv[10]);
 			} else
-				sendto_serv_butone(cptr,
+				sendto_server(cptr, 0, 0,
 					":%s TKL %s %s %s %s %s %s %s :%s", sptr->name,
 					parv[1], parv[2], parv[3], parv[4], parv[5],
 					parv[6], parv[7], parv[8]);
@@ -2289,11 +2289,11 @@
 					  if (type & TKL_GLOBAL)
 					  {
 					 	  if (parc < 8)
-							  sendto_serv_butone(cptr,
+							  sendto_server(cptr, 0, 0,
 							      ":%s TKL %s %s %s %s %s",
 							      sptr->name, parv[1], parv[2], parv[3], parv[4], parv[5]);
 						  else
-							  sendto_serv_butone(cptr,
+							  sendto_server(cptr, 0, 0,
 							      ":%s TKL %s %s %s %s %s %s %s :%s",
 							      sptr->name, parv[1], parv[2], parv[3], parv[4], parv[5],
 							      parv[6], parv[7], reason);
@@ -2541,7 +2541,7 @@
 				unreal_decodespace(tk->ptr.spamf->tkl_reason));
 
 			sendto_snomask(SNO_SPAMF, "%s", buf);
-			sendto_serv_butone(NULL, ":%s SENDSNO S :%s", me.name, buf);
+			sendto_server(NULL, 0, 0, ":%s SENDSNO S :%s", me.name, buf);
 			ircd_log(LOG_SPAMFILTER, "%s", buf);
 			RunHook6(HOOKTYPE_LOCAL_SPAMFILTER, sptr, str, str_in, type, target, tk);
 
@@ -2571,7 +2571,7 @@
 							/* free away & broadcast the unset */
 							MyFree(sptr->user->away);
 							sptr->user->away = NULL;
-							sendto_serv_butone(sptr, ":%s AWAY", sptr->name);
+							sendto_server(sptr, 0, 0, ":%s AWAY", sptr->name);
 						}
 						break;
 					case SPAMF_TOPIC:
diff -r c312ceab2bef src/modules/m_topic.c
--- a/src/modules/m_topic.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_topic.c	Sun May 19 19:13:48 2013 -0600
@@ -212,7 +212,7 @@
 
 				chptr->topic_time = ttime;
 				RunHook4(HOOKTYPE_TOPIC, cptr, sptr, chptr, topic);
-				sendto_serv_butone(cptr, ":%s TOPIC %s %s %lu :%s",
+				sendto_server(cptr, 0, 0, ":%s TOPIC %s %s %lu :%s",
 				    parv[0], chptr->chname, chptr->topic_nick,
 				    chptr->topic_time, chptr->topic);
 				sendto_channel_butserv(chptr, sptr,
@@ -320,7 +320,7 @@
 				chptr->topic_time = ttime;
 			else
 				chptr->topic_time = TStime();
-			sendto_serv_butone(cptr, ":%s TOPIC %s %s %lu :%s",
+			sendto_server(cptr, 0, 0, ":%s TOPIC %s %s %lu :%s",
 			    parv[0], chptr->chname, chptr->topic_nick,
 			    chptr->topic_time, chptr->topic);
 			sendto_channel_butserv(chptr, sptr,
diff -r c312ceab2bef src/modules/m_tsctl.c
--- a/src/modules/m_tsctl.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_tsctl.c	Sun May 19 19:13:48 2013 -0600
@@ -150,7 +150,7 @@
 				  sendto_ops
 				      ("TS Control - %s set TStime() to be diffed +%li",
 				      sptr->name, timediff);
-				  sendto_serv_butone(&me,
+				  sendto_server(&me, 0, 0,
 				      ":%s GLOBOPS :TS Control - %s set TStime to be diffed +%li",
 				      me.name, sptr->name, timediff);
 				  break;
@@ -162,7 +162,7 @@
 				  sendto_ops
 				      ("TS Control - %s set TStime() to be diffed -%li",
 				      sptr->name, timediff);
-				  sendto_serv_butone(&me,
+				  sendto_server(&me, 0, 0,
 				      ":%s GLOBOPS :TS Control - %s set TStime to be diffed -%li",
 				      me.name, sptr->name, timediff);
 				  break;
@@ -183,7 +183,7 @@
 			    ":%s NOTICE %s :*** Server=%s TStime=%li time()=%li TSoffset=%li",
 			    me.name, sptr->name, me.name, TStime(), time(NULL),
 			    TSoffset);
-			sendto_serv_butone(cptr, ":%s TSCTL alltime",
+			sendto_server(cptr, 0, 0, ":%s TSCTL alltime",
 			    sptr->name);
 			return 0;
 
@@ -210,7 +210,7 @@
 			sendto_ops
 			    ("TS Control - U:line set time to be %li (timediff: %li)",
 			    atol(parv[2]), timediff);
-			sendto_serv_butone(cptr, ":%s TSCTL svstime %li",
+			sendto_server(cptr, 0, 0, ":%s TSCTL svstime %li",
 			    sptr->name, atol(parv[2]));
 			return 0;
 		}
diff -r c312ceab2bef src/modules/m_vhost.c
--- a/src/modules/m_vhost.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/modules/m_vhost.c	Sun May 19 19:13:48 2013 -0600
@@ -167,12 +167,12 @@
 		if (vhost->virtuser) {
 			strcpy(olduser, sptr->user->username);
 			strlcpy(sptr->user->username, vhost->virtuser, USERLEN);
-			sendto_serv_butone(cptr, ":%s SETIDENT %s", sptr->name,
+			sendto_server(cptr, 0, 0, ":%s SETIDENT %s", sptr->name,
 			    sptr->user->username);
 		}
 		sptr->umodes |= UMODE_HIDE;
 		sptr->umodes |= UMODE_SETHOST;
-		sendto_serv_butone(cptr, ":%s SETHOST %s", sptr->name, sptr->user->virthost);
+		sendto_server(cptr, 0, 0, ":%s SETHOST %s", sptr->name, sptr->user->virthost);
 		sendto_one(sptr, ":%s MODE %s :+tx",
 		    sptr->name, sptr->name);
 		if (vhost->swhois) {
@@ -180,7 +180,7 @@
 				MyFree(sptr->user->swhois);
 			sptr->user->swhois = MyMalloc(strlen(vhost->swhois) +1);
 			strcpy(sptr->user->swhois, vhost->swhois);
-			sendto_serv_butone(cptr, ":%s SWHOIS %s :%s", me.name,
+			sendto_server(cptr, 0, 0, ":%s SWHOIS %s :%s", me.name,
 			    sptr->name, vhost->swhois);
 		}
 		sendto_one(sptr,
diff -r c312ceab2bef src/parse.c
--- a/src/parse.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/parse.c	Sun May 19 19:13:48 2013 -0600
@@ -471,110 +471,7 @@
 
 static int cancel_clients(aClient *cptr, aClient *sptr, char *cmd)
 {
-	/*
-	 * kill all possible points that are causing confusion here,
-	 * I'm not sure I've got this all right...
-	 * - avalon
-	 * No you didn't...
-	 * - Run
-	 */
-	/* This little bit of code allowed paswords to nickserv to be 
-	 * seen.  A definite no-no.  --Russell
-	 sendto_ops("Message (%s) for %s[%s!%s@%s] from %s", cmd,
-	 sptr->name, sptr->from->name, sptr->from->username,
-	 sptr->from->sockhost, get_client_name(cptr, TRUE));*/
-	/*
-	 * Incorrect prefix for a server from some connection.  If it is a
-	 * client trying to be annoying, just QUIT them, if it is a server
-	 * then the same deal.
-	 */
-	if (IsServer(sptr) || IsMe(sptr))
-	{
-		/*
-		 * First go at tracking down what really causes the
-		 * dreaded Fake Direction error.  It should not be possible
-		 * ever to happen.  Assume nothing here since this is an
-		 * impossibility.
-		 *
-		 * Check for valid fields, then send out globops with
-		 * the msg command recieved, who apperently sent it,
-		 * where it came from, and where it was suppose to come
-		 * from.  We send the msg command to find out if its some
-		 * bug somebody found with an old command, maybe some
-		 * weird thing like, /ping serverto.* serverfrom.* and on
-		 * the way back, fake direction?  Don't know, maybe this
-		 * will tell us.  -Cabal95
-		 *
-		 * Take #2 on Fake Direction.  Most of them seem to be
-		 * numerics.  But sometimes its getting fake direction on
-		 * SERVER msgs.. HOW??  Display the full message now to
-		 * figure it out... -Cabal95
-		 *
-		 * Okay I give up.  Can't find it.  Seems like it will
-		 * exist untill ircd is completely rewritten. :/ For now
-		 * just completely ignore them.  Needs to be modified to
-		 * send these messages to a special oper channel. -Cabal95
-		 *
-		 aClient *from;
-		 char   *fromname=NULL, *sptrname=NULL, *cptrname=NULL, *s;
-
-		 while (*cmd == ' ')
-		 cmd++;
-		 if (s = index(cmd, ' '))
-		 *s++ = '\0';
-		 if (!strcasecmp(cmd, "PRIVMSG") ||
-		 !strcasecmp(cmd, "NOTICE") ||
-		 !strcasecmp(cmd, "PASS"))
-		 s = NULL;
-		 if (sptr && sptr->name)
-		 sptrname = sptr->name;
-		 if (cptr && cptr->name)
-		 cptrname = cptr->name;
-		 if (sptr && sptr->from && sptr->from->name)
-		 fromname = sptr->from->name;
-
-		 sendto_serv_butone(NULL, ":%s GLOBOPS :"
-		 "Fake Direction: Message[%s %s] from %s via %s "
-		 "instead of %s (Tell Cabal95)", me.name, cmd,
-		 (s ? s : ""),
-		 (sptr->name!=NULL)?sptr->name:"<unknown>",
-		 (cptr->name!=NULL)?cptr->name:"<unknown>",
-		 (fromname!=NULL)?fromname:"<unknown>");
-		 sendto_ops(
-		 "Fake Direction: Message[%s %s] from %s via %s "
-		 "instead of %s (Tell Cabal95)", cmd,
-		 (s ? s : ""),
-		 (sptr->name!=NULL)?sptr->name:"<unknown>",
-		 (cptr->name!=NULL)?cptr->name:"<unknown>",
-		 (fromname!=NULL)?fromname:"<unknown>");
-
-		 * We don't drop the server anymore.  Just ignore
-		 * the message and go about your business.  And hope
-		 * we don't get flooded. :-)  -Cabal95
-		 sendto_ops("Dropping server %s", cptr->name);
-		 return exit_client(cptr, cptr, &me, "Fake Direction");
-		 */
-		return 0;
-	}
-	/*
-	 * Ok, someone is trying to impose as a client and things are
-	 * confused.  If we got the wrong prefix from a server, send out a
-	 * kill, else just exit the lame client.
-	 */
-	if (IsServer(cptr))
-	{
-		/*
-		   ** It is NOT necessary to send a KILL here...
-		   ** We come here when a previous 'NICK new'
-		   ** nick collided with an older nick, and was
-		   ** ignored, and other messages still were on
-		   ** the way (like the following USER).
-		   ** We simply ignore it all, a purge will be done
-		   ** automatically by the server 'cptr' as a reaction
-		   ** on our 'NICK older'. --Run
-		 */
-		return 0;	/* On our side, nothing changed */
-	}
+	if (IsServer(cptr) || IsServer(sptr) || IsMe(sptr)) return 0;
 	return exit_client(cptr, cptr, &me, "Fake prefix");
 }
 
diff -r c312ceab2bef src/s_misc.c
--- a/src/s_misc.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/s_misc.c	Sun May 19 19:13:48 2013 -0600
@@ -716,7 +716,7 @@
 		if ((sptr->flags & FLAGS_KILLED) == 0)
 		{
 			if (split == 0)
-				sendto_serv_butone(cptr, ":%s QUIT :%s", sptr->name, comment);
+				sendto_server(cptr, 0, 0, ":%s QUIT :%s", sptr->name, comment);
 			else
 				/*
 				 * Then this is a split, only old (stupid)
@@ -1119,7 +1119,7 @@
 				sendto_channel_butserv(chptr, &me, ":%s KICK %s %s :%s", me.name, chptr->chname, cptr->name, comment);
 			}
 
-			sendto_serv_butone(&me, ":%s KICK %s %s :%s", me.name, chptr->chname, cptr->name, comment);
+			sendto_server(&me, 0, 0, ":%s KICK %s %s :%s", me.name, chptr->chname, cptr->name, comment);
 
 			remove_user_from_channel(cptr, chptr);
 		}
diff -r c312ceab2bef src/s_serv.c
--- a/src/s_serv.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/s_serv.c	Sun May 19 19:13:48 2013 -0600
@@ -501,14 +501,14 @@
 		return 0;
 	if (cptr == sptr)
 	{
-		sendto_serv_butone(&me, ":%s GLOBOPS :ERROR from %s -- %s",
+		sendto_server(&me, 0, 0, ":%s GLOBOPS :ERROR from %s -- %s",
 		    me.name, get_client_name(cptr, FALSE), para);
 		sendto_locfailops("ERROR :from %s -- %s",
 		    get_client_name(cptr, FALSE), para);
 	}
 	else
 	{
-		sendto_serv_butone(&me,
+		sendto_server(&me, 0, 0,
 		    ":%s GLOBOPS :ERROR from %s via %s -- %s", me.name,
 		    sptr->name, get_client_name(cptr, FALSE), para);
 		sendto_ops("ERROR :from %s via %s -- %s", sptr->name,
@@ -554,9 +554,14 @@
 	if (!tunefile)
 		return;
 	fprintf(stderr, "* Loading tunefile..\n");
-	fgets(buf, 1023, tunefile);
+	if (!fgets(buf, sizeof(buf), tunefile))
+	    fprintf(stderr, "Warning: error while reading the timestamp offset from the tunefile%s%s\n",
+		errno? ": ": "", errno? strerror(errno): "");
 	TSoffset = atol(buf);
-	fgets(buf, 1023, tunefile);
+
+	if (!fgets(buf, sizeof(buf), tunefile))
+	    fprintf(stderr, "Warning: error while reading the peak user count from the tunefile%s%s\n",
+		errno? ": ": "", errno? strerror(errno): "");
 	IRCstats.me_max = atol(buf);
 	fclose(tunefile);
 }
@@ -648,7 +653,7 @@
 					me.name, sptr->name);
 				return 0;
 			}
-			sendto_serv_butone(&me,
+			sendto_server(&me, 0, 0,
 			    ":%s GLOBOPS :%s is remotely rehashing server config file",
 			    me.name, sptr->name);
 			sendto_ops
@@ -739,7 +744,7 @@
 				    cptr != sptr ? "Remotely " : "",
 				    sptr->name);
 				if (cptr != sptr)
-					sendto_serv_butone(&me, ":%s GLOBOPS :%s is remotely rehashing OperMOTD", me.name, sptr->name);
+					sendto_server(&me, 0, 0, ":%s GLOBOPS :%s is remotely rehashing OperMOTD", me.name, sptr->name);
 				read_motd(conf_files->opermotd_file, &opermotd);
 				RunHook3(HOOKTYPE_REHASHFLAG, cptr, sptr, parv[1]);
 				return 0;
@@ -751,7 +756,7 @@
 				    cptr != sptr ? "Remotely " : "",
 				    sptr->name);
 				if (cptr != sptr)
-					sendto_serv_butone(&me, ":%s GLOBOPS :%s is remotely rehashing BotMOTD", me.name, sptr->name);
+					sendto_server(&me, 0, 0, ":%s GLOBOPS :%s is remotely rehashing BotMOTD", me.name, sptr->name);
 				read_motd(conf_files->botmotd_file, &botmotd);
 				RunHook3(HOOKTYPE_REHASHFLAG, cptr, sptr, parv[1]);
 				return 0;
@@ -764,7 +769,7 @@
 				    cptr != sptr ? "Remotely " : "",
 				    sptr->name);
 				if (cptr != sptr)
-					sendto_serv_butone(&me, ":%s GLOBOPS :%s is remotely rehashing all MOTDs and RULES", me.name, sptr->name);
+					sendto_server(&me, 0, 0, ":%s GLOBOPS :%s is remotely rehashing all MOTDs and RULES", me.name, sptr->name);
 				rehash_motdrules();
 				RunHook3(HOOKTYPE_REHASHFLAG, cptr, sptr, parv[1]);
 				return 0;
diff -r c312ceab2bef src/s_user.c
--- a/src/s_user.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/s_user.c	Sun May 19 19:13:48 2013 -0600
@@ -80,7 +80,7 @@
 	}
 	sptr->user->virthost = strdup(host);
 	if (MyConnect(sptr))
-		sendto_serv_butone(&me, ":%s SETHOST :%s", sptr->name, sptr->user->virthost);
+		sendto_server(&me, 0, 0, ":%s SETHOST :%s", sptr->name, sptr->user->virthost);
 	sptr->umodes |= UMODE_SETHOST;
 
 	if (UHOST_ALLOWED == UHALLOW_REJOIN)
diff -r c312ceab2bef src/send.c
--- a/src/send.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/send.c	Sun May 19 19:13:48 2013 -0600
@@ -429,30 +429,6 @@
 	va_end(vl);
 }
 
-/*
- * sendto_server_butone
- *
- * Send a message to all connected servers except the client 'one'.
- */
-void sendto_serv_butone(aClient *one, char *pattern, ...)
-{
-	va_list vl;
-	aClient *cptr;
-
-	va_start(vl, pattern);
-
-	list_for_each_entry(cptr, &server_list, special_node)
-	{
-		if (one && cptr == one->from)
-			continue;
-
-		if (IsServer(cptr))
-			vsendto_one(cptr, pattern, vl);
-	}
-
-	va_end(vl);
-	return;
-}
 
 /*
  * sendto_server
@@ -928,7 +904,7 @@
 			*p++ = Snomask_Table[i].flag;
 	*p = '\0';
 
-	sendto_serv_butone(&me, ":%s SENDSNO %s :%s", me.name, "%s :%s", snobuf, nbuf);
+	sendto_server(&me, 0, 0, ":%s SENDSNO %s :%s", me.name, snobuf, nbuf);
 }
 
 /** Send to specified snomask - local.
@@ -979,7 +955,7 @@
 			*p++ = Snomask_Table[i].flag;
 	*p = '\0';
 
-	sendto_serv_butone(&me, ":%s SENDSNO %s :%s", me.name, "%s :%s", snobuf, nbuf);
+	sendto_server(&me, 0, 0, ":%s SENDSNO %s :%s", me.name, snobuf, nbuf);
 }
 
 
diff -r c312ceab2bef src/ssl.c
--- a/src/ssl.c	Sun May 19 23:24:12 2013 +0000
+++ b/src/ssl.c	Sun May 19 19:13:48 2013 -0600
@@ -677,7 +677,7 @@
 		 * send a closing link error...
 		 */
 		sendto_locfailops("Lost connection to %s: %s: %d (%s)", get_client_name(sptr, FALSE), ssl_func, ssl_error, ssl_errstr);
-		sendto_serv_butone(&me, ":%s GLOBOPS :Lost connection to server %s: %s: %d (%s)",
+		sendto_server(&me, 0, 0, ":%s GLOBOPS :Lost connection to server %s: %s: %d (%s)",
 		  me.name, get_client_name(sptr, FALSE), ssl_func, ssl_error, ssl_errstr);
 		/* sendto_failops_whoare_opers("Closing link: %s: %s - %s", ssl_func, ssl_errstr, get_client_name(sptr, FALSE)); */
 	}
