windows driver now operational, linux driver broken

This commit is contained in:
2022-01-12 17:23:02 -05:00
parent 089b8e15c7
commit fbe2120bb3
2 changed files with 28 additions and 4 deletions

View File

@@ -35,6 +35,12 @@ static void enable_tty_raw() {
// Do nothing on windows.
}
static std::string winsock_error_string(int errcode) {
std::ostringstream oss;
oss << "error " << errcode;
return oss.str();
}
static PADDRINFOA find_good_addr(PADDRINFOA addrinfo) {
for (PADDRINFOA addr = addrinfo; addr != nullptr; addr = addr->ai_next) {
if (addr->ai_family == AF_INET) {
@@ -117,6 +123,7 @@ SOCKET listen_on_port(int port, std::string &err) {
goto error;
}
set_nonblocking(sock);
std::cerr << "listening socket is " << sock << std::endl;
return sock;
error:
@@ -128,6 +135,7 @@ static SOCKET accept_on_socket(SOCKET listen_socket, std::string &err) {
SOCKET chsock = accept(listen_socket, nullptr, nullptr);
if (chsock != INVALID_SOCKET) {
set_nonblocking(chsock);
std::cerr << "accepted socket is " << chsock << std::endl;
return chsock;
} else {
int errcode = WSAGetLastError();
@@ -182,13 +190,25 @@ static int socket_close(SOCKET socket) {
static int socket_poll(PollVector &pollvec, int mstimeout, std::string &err) {
int status = WSAPoll(&pollvec[0], pollvec.size(), mstimeout);
if (status < 0) {
WSAGetLastError();
err = "poll failed";
err = winsock_error_string(WSAGetLastError());
return -1;
}
return status;
}
static void socket_init() {
WSADATA data;
int errcode = WSAStartup(2, &data);
if (errcode != 0) {
fprintf(stderr, "Winsock didn't initalize, error %d", errcode);
exit(1);
}
}
static void socket_uninit() {
// Nothing needed.
}
static int console_write(const char *bytes, int nbytes) {
if (nbytes == 0) return 0;
HANDLE hstdout = GetStdHandle(STD_OUTPUT_HANDLE);