private boolean sendLoginRequest(String userName, String password) throws Exception {
    boolean result = false;

    try {
      sslsocket = (SSLSocket) factory.createSocket(BURRITOPOS_SERVER_IP, BURRITOPOS_SERVER_PORT);
      in = new ObjectInputStream(sslsocket.getInputStream());
      out = new ObjectOutputStream(sslsocket.getOutputStream());

      String str = (String) in.readObject();
      dLog.trace("Got : " + str);
      out.writeObject(userName);
      str = (String) in.readObject();
      dLog.trace("Got : " + str);
      out.writeObject(password);
      str = (String) in.readObject();
      dLog.trace("Got : " + str);
      dLog.trace("good? " + str.split(" ")[0]);

      // check our input
      if (str.split(" ")[0].equals("OK")) {
        result = true;
      }

      out.writeObject("exit");
    } catch (Exception e1) {
      dLog.error("Exception in sendLoginRequest", e1);
    } finally {
      try {
        dLog.trace("Trying to close input stream");
        if (in != null) {
          in.close();
        }
        dLog.trace("Trying to close output stream");
        if (out != null) {
          out.close();
        }
        dLog.trace("Trying to close socket");
        if (sslsocket != null) {
          sslsocket.close();
        }
      } catch (Exception e2) {
        dLog.error("Exception closing socket", e2);
        throw (e2);
      }
    }

    dLog.trace("Returning result: " + result);
    return result;
  }
 public void close() throws IOException {
   if (in != null) {
     in.close();
   }
   if (out != null) {
     out.close();
   }
   if (socket != null && !socket.isClosed()) {
     socket.close();
   }
 }
  @Override
  public void run() {
    SOCKET_PORT = String.valueOf(socket.getRemoteSocketAddress());
    dLog.trace("Starting to run server");
    // get all users
    try {
      users = userSvc.getAllUsers();
    } catch (Exception e2) {
      dLog.error("Unable to get all users", e2);
    }
    dLog.trace("Got " + users.size() + " users");

    try {
      while (!exit) {
        out = new ObjectOutputStream(socket.getOutputStream());
        in = new ObjectInputStream(socket.getInputStream());
        dLog.trace("Successfully got input/output streams");

        String inputStr = "";
        out.writeObject("Burrito POS Server Connected. Enter Username: "******"OUTPUT | Burrito POS Server Connected. Enter Username: "******"OUTPUT | Burrito POS Server Connected. Enter Username: "******"INPUT | " + inputStr);
        parent.updateStatus(appendInfo("INPUT | " + inputStr));

        while (!inputStr.equals("exit") && !this.exit) {
          dLog.trace("Exit? " + exit);
          if (tUser.getUserName() == null) {
            tUser.setUserName(inputStr);
            out.writeObject("OK User " + inputStr + ", enter password: "******"OUTPUT | OK User " + inputStr + ", enter password: "******"OUTPUT | Burrito POS Server Connected. Enter Username: "******"Username: "******" | Password: "******"Stored user: "******" | stored pass: "******"OK User verified. Enter command: ");
              dLog.trace("OUTPUT | OK User verified. Enter command: ");
              parent.updateStatus(appendInfo("OUTPUT | OK User verified. Enter command: "));
              auth = true;
            } else {
              tUser.setUserName(null);
              tUser.setPassword(null);
              out.writeObject("ERROR Invalid Credentials. Enter Username: "******"OUTPUT | ERROR Invalid Credentials. Enter Username: "******"OUTPUT | ERROR Invalid Credentials. Enter Username: "******"exit")) {
              out.writeObject("OK Command " + inputStr + " entered. Enter command: ");
              dLog.trace("OUTPUT | OK Command " + inputStr + " entered. Enter command: ");
              parent.updateStatus(
                  appendInfo("OUTPUT | OK Command " + inputStr + " entered. Enter command: "));
            }
          }

          inputStr = (String) in.readObject();
          dLog.trace("INPUT | " + inputStr);
          parent.updateStatus(appendInfo("INPUT | " + inputStr));
        }

        exit = true;
        try {
          dLog.trace("Closing the socket");
          auth = false;
          out.writeObject("Exiting");
          dLog.trace("Exiting");
          parent.updateStatus(appendInfo("Exiting"));
          this.close();
        } catch (Exception e1) {
          dLog.error("Exception in closing socket", e1);
        }
      }
    } catch (Exception e) {
      dLog.error("Exception in SocketManager run", e);
    }
  }