code: public boolean replyToNotify(RequestEvent reqevent, Response response) {
      initErrorInfo();
  
      if ((reqevent == null) || (reqevent.getRequest() == null) || (response == null)) {
        setErrorMessage("Cannot send reply, request or response info is null");
        setReturnCode(SipSession.INVALID_ARGUMENT);
        return false;
      }
  
      try {
        if (reqevent.getServerTransaction() == null) {
          // 1st NOTIFY received before 1st response
          LOG.trace("Informational : no UAS transaction available for received NOTIFY");
  
          // send response statelessly
          ((SipProvider) reqevent.getSource()).sendResponse(response);
        } else {
          reqevent.getServerTransaction().sendResponse(response);
        }
      } catch (Exception e) {
        setException(e);
        setErrorMessage("Exception: " + e.getClass().getName() + ": " + e.getMessage());
        setReturnCode(SipSession.EXCEPTION_ENCOUNTERED);
        return false;
      }
  
      LOG.trace("Sent response message to received NOTIFY, status code : {}, reason : {}",
          response.getStatusCode(), response.getReasonPhrase());
  
      return true;
    }
docs: This method sends the given response to the network in reply to the given request that was
  previously received. Call this method after processNotify() has handled the received request.
  
  @param reqevent The object returned by waitNotify().
  @param response The object returned by processNotify(), or a user-modified version of it.
  @return true if the response is successfully sent out, false otherwise.