@Override
  protected boolean writePacketToSocket(Packet packet) {
    BoshSession session = getBoshSession(packet.getTo());

    if (session != null) {
      synchronized (session) {
        Queue<Packet> out_results = new ArrayDeque<Packet>();

        session.processPacket(packet, out_results);
        addOutPackets(out_results, session);
      }

      return true;
    } else {
      log.info("Session does not exist for packet: " + packet.toString());

      return false;
    }
  }