private static synchronized void applySendRules(TimeStampedMessage message){
		updateRules(config_filename);
		String action = "";
		if(sendRules.size() > 0){
			Rule currentRule = sendRules.get(0);
			for(int i = 0; i< sendRules.size(); i++){
				currentRule = sendRules.get(i);
				//System.out.println("checking sendRule: " + currentRule.toString());
				if(currentRule.match(message)){
					//System.out.println("Matched a sendRule: " + currentRule.toString());
					action = currentRule.getAction();
					break;
				}
				//currentRule = sendRules.get(i);
			}
		}
		if(!action.equals("")){
			//This means that the message matched a rule, so now handle one of the three possibilities appropriately
			if(action.toLowerCase().equals("drop")){
				//Don't send the message and mark all delayed messages as no longer delayed
				/*for(Message msg : outgoing_buffer){
					msg.set_delayed(false);
				}*/
				
			} else if(action.toLowerCase().equals("delay")){
				message.set_delayed(true);
				message.setTimeStamp(message.copyMsgTimeStamp());
				outgoing_buffer.addFirst(message);			
				//System.out.println("just hit a delay rule, adding to the outgoin and returning: " + message);
				return;
			} else if(action.toLowerCase().equals("duplicate")){
				//Mark all delayed messages as no longer delayed
				/*for(Message msg : outgoing_buffer){
					msg.set_delayed(false);
				}*/
				//add one copy of the message to our outgoing_buffer
				message.setTimeStamp(message.copyMsgTimeStamp());
				message.set_delayed(false);
				outgoing_buffer.addFirst(message);				
				//now add a copy of the message with duplicate set to true
				TimeStampedMessage duped = new TimeStampedMessage(message.get_dest(), message.get_kind(), message.get_data(), message.getLogStatus());
				duped.set_seqNum(local_user.getSeqNum());
				duped.set_source(local_user.getName());
				duped.set_duplicate(true);
				duped.set_delayed(false);
				duped.setTimeStamp(message.copyMsgTimeStamp());
				duped.setGroup(message.getGroup());
				outgoing_buffer.addFirst(duped);
			}
		}
		else
			outgoing_buffer.addFirst(message); //message did not match any sendRules, so just send it normally
		
		//We need to mark them as no longer delayed so that we can try sending them the next time we call send
		for(TimeStampedMessage msg : outgoing_buffer){
			msg.set_delayed(false);
			//System.out.println("Still on outgoing buffer: " + msg);
		}
		//System.out.println("Just finished send rules for non delay msg: new buffer: ");
	}