code: public void setAddressHeader(String name, Address addr) {
  		if(logger.isDebugEnabled()) {
          	logger.debug("setAddressHeader - name=" + name + ", addr=" + addr);
          }
  		checkCommitted();
  		String hName = getFullHeaderName(name);
  
  		if (logger.isDebugEnabled())
  			logger.debug("Setting address header [" + name + "] to value ["
  					+ addr + "]");
  
  		if (isSystemHeaderAndNotGruu(getModifiableRule(hName), (Parameterable)addr.getURI())) {
  			logger.error("Error, can't set system header [" + hName + "]");
  			throw new IllegalArgumentException(
  					"Cant set system header, it is maintained by container!!");
  		}
  
  		if (hName.equalsIgnoreCase("From") || hName.equalsIgnoreCase("To")) {
  			logger.error("Error, can't set From or To header [" + hName + "]");
  			throw new IllegalArgumentException(
  					"Cant set From or To header, see JSR 289 Section 4.1.2");
  		}
  
  //		if (!isAddressTypeHeader(hName)) {
  //			logger.error("Error, set header, its not address type header ["
  //					+ hName + "]!!");
  //			throw new IllegalArgumentException(
  //					"This header is not address type header");
  //		}
  		Header h;
  		String headerNameToAdd = getCorrectHeaderName(hName);
  		try {
  			h = SipFactoryImpl.headerFactory.createHeader(headerNameToAdd, addr
  					.toString());
  			this.message.setHeader(h);
  		} catch (ParseException e) {
  			logger.error("Parsing problem while setting address header with name "
  					+ name + " and address "+ addr, e);
  		}
  	}
docs: /*
  (non-Javadoc)
  @see javax.servlet.sip.SipServletMessage#setAddressHeader(java.lang.String, javax.servlet.sip.Address)