| 57 | namespace netInstStuff{ |
| 58 | |
| 59 | void InitializeServerSocket() try |
| 60 | { |
| 61 | // Create a socket |
| 62 | m_serverSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_IP); |
| 63 | |
| 64 | if (m_serverSocket < -1) |
| 65 | { |
| 66 | THROW_FORMAT("Failed to create a server socket. Error code: %u\n", errno); |
| 67 | } |
| 68 | |
| 69 | struct sockaddr_in server; |
| 70 | server.sin_family = AF_INET; |
| 71 | server.sin_port = htons(REMOTE_INSTALL_PORT); |
| 72 | server.sin_addr.s_addr = htonl(INADDR_ANY); |
| 73 | |
| 74 | if (bind(m_serverSocket, (struct sockaddr*) &server, sizeof(server)) < 0) |
| 75 | { |
| 76 | THROW_FORMAT("Failed to bind server socket. Error code: %u\n", errno); |
| 77 | } |
| 78 | |
| 79 | // Set as non-blocking |
| 80 | fcntl(m_serverSocket, F_SETFL, fcntl(m_serverSocket, F_GETFL, 0) | O_NONBLOCK); |
| 81 | |
| 82 | if (listen(m_serverSocket, 5) < 0) |
| 83 | { |
| 84 | THROW_FORMAT("Failed to listen on server socket. Error code: %u\n", errno); |
| 85 | } |
| 86 | } |
| 87 | catch (std::exception& e) |
| 88 | { |
| 89 | LOG_DEBUG("Failed to initialize server socket!\n"); |
| 90 | fprintf(stdout, "%s", e.what()); |
| 91 | |
| 92 | if (m_serverSocket != 0) |
| 93 | { |
| 94 | close(m_serverSocket); |
| 95 | m_serverSocket = 0; |
| 96 | } |
| 97 | inst::ui::mainApp->CreateShowDialog("Failed to initialize server socket!", (std::string)e.what(), {"OK"}, true); |
| 98 | } |
| 99 | |
| 100 | void OnUnwound() |
| 101 | { |