int RASocket::svc(void) { //! Subnegotiation may differ per client - do not react on it subnegotiate(); if (send("Authentication required\r\n") == -1) return -1; if (authenticate() == -1) { (void) send("Authentication failed\r\n"); return -1; } // send motd if (send(std::string(sWorld->GetMotd()) + "\r\n") == -1) return -1; for (;;) { // show prompt if (send("TC> ") == -1) return -1; std::string line; if (recv_line(line) == -1) return -1; if (process_command(line) == -1) return -1; } return 0; }
int RASocket::svc(void) { subnegotiate(); if (send("Authentication required\r\n") == -1) return -1; if (authenticate() == -1) { (void) send("Authentication failed\r\n"); return -1; } if (send(std::string(sWorld.GetMotd()) + "\r\n") == -1) return -1; for(;;) { const char* tc_prompt = "TC> "; if (size_t(peer().send(tc_prompt, strlen(tc_prompt))) != strlen(tc_prompt)) return -1; std::string line; if (recv_line(line) == -1) return -1; if (process_command(line) == -1) return -1; } return 0; }
int RASocket::svc(void) { //! Subnegotiation may differ per client - do not react on it subnegotiate(); if (send("Authentication required\r\n") == -1) return -1; if (authenticate() == -1) { (void) send("Authentication failed\r\n"); return -1; } // send motd if (send(std::string(sWorld->GetMotd()) + "\r\n") == -1) return -1; for (;;) { // show prompt const char* tc_prompt = "SF> "; if (size_t(peer().send(tc_prompt, strlen(tc_prompt))) != strlen(tc_prompt)) return -1; std::string line; if (recv_line(line) == -1) return -1; if (process_command(line) == -1) return -1; } return 0; }