diff --git a/src/network.cpp b/src/network.cpp index b1b69e8..d313caa 100644 --- a/src/network.cpp +++ b/src/network.cpp @@ -4,6 +4,41 @@ #include // Needed for strcpy() and strlen() #include +void TestSockets(int sender_s, int receiver_s) { + char in_buf[BUF_SIZE]; // Input buffer for GET resquest + char out_buf[BUF_SIZE]; // Output buffer for HTML response + ssize_t buf_len; // Buffer length for file reads + // + // Pass GET along from browser to server + std::cout << "Attempting to send data to receiver" << std::endl; + do { + buf_len = recv(sender_s, in_buf, BUF_SIZE, 0); + if (buf_len == -1) { + std::cout << "ERROR (info) - recv" << std::endl; + } + if (buf_len == 0) { continue; } + send(receiver_s, in_buf, buf_len, 0); + std::cout << "LOG (info) - pipe packet size: " << buf_len << std::endl; + } while (buf_len > 0); + std::cout << "Sent data to receiver" << std::endl; + + // Pass response along from server to browser + std::cout << "Attempting to send to browser" << std::endl; + do { + buf_len = recv(receiver_s, out_buf, BUF_SIZE, 0); + if (buf_len == -1) { + std::cout << "ERROR (info) - recv" << std::endl; + break; + } + if (buf_len == 0) { continue; } + send(sender_s, out_buf, buf_len, 0); + std::cout << "LOG (info) - proxy packet size: " << buf_len << std::endl; + } while (buf_len > 0); + std::cout << "Sent to browser" << std::endl; + close(sender_s); + close(receiver_s); +} + void PipeSockets(int sender_s, int receiver_s) { char in_buf[BUF_SIZE]; // Input buffer for GET resquest ssize_t buf_len; // Buffer length for file reads @@ -12,13 +47,15 @@ void PipeSockets(int sender_s, int receiver_s) { std::cout << "Attempting to send data to receiver" << std::endl; do { buf_len = recv(sender_s, in_buf, BUF_SIZE, 0); + std::cout << "LOG (info) - pipe packet recv size: " << buf_len << std::endl; if (buf_len == -1) { std::cout << "ERROR (info) - recv" << std::endl; - std::terminate(); + return; } - send(receiver_s, in_buf, buf_len, 0); - std::cout << "LOG (info) - pipe packet size: " << buf_len << std::endl; - } while (buf_len > 0); + if (buf_len == 0) { break; } + buf_len = send(receiver_s, in_buf, buf_len, 0); + std::cout << "LOG (info) - pipe packet send size: " << buf_len << std::endl; + } while (buf_len < BUF_SIZE); std::cout << "Sent data to receiver" << std::endl; } @@ -31,13 +68,15 @@ void ProxySockets(int sender_s, int receiver_s) { std::cout << "Attempting to send to browser" << std::endl; do { buf_len = recv(sender_s, out_buf, BUF_SIZE, 0); + std::cout << "LOG (info) - proxy packet recv size: " << buf_len << std::endl; if (buf_len == -1) { std::cout << "ERROR (info) - recv" << std::endl; - std::terminate(); + return; } - send(receiver_s, out_buf, buf_len, 0); - std::cout << "LOG (info) - proxy packet size: " << buf_len << std::endl; - } while (buf_len > 0); + if (buf_len == 0) { break; } + buf_len = send(receiver_s, out_buf, buf_len, 0); + std::cout << "LOG (info) - proxy packet send size: " << buf_len << std::endl; + } while (buf_len < BUF_SIZE); std::cout << "Sent to browser" << std::endl; close(sender_s); close(receiver_s); diff --git a/src/network.hpp b/src/network.hpp index d5c2000..bcab3d9 100644 --- a/src/network.hpp +++ b/src/network.hpp @@ -10,6 +10,7 @@ #define kWebserverIP "127.0.0.1" #define kWebserverPort 7080 +void TestSockets(int sender_s, int receiver_s); void PipeSockets(int sender_s, int receiver_s); void ProxySockets(int sender_s, int receiver_s); diff --git a/src/proxy.cpp b/src/proxy.cpp index acc3dae..980c8f8 100644 --- a/src/proxy.cpp +++ b/src/proxy.cpp @@ -35,7 +35,12 @@ int main(void) auto newThreadRequest2 = std::async(std::launch::async, ProxySockets, webserver.socketFD, browser.socketFD); pending_futures.push_back(std::move(newThreadRequest1)); pending_futures.push_back(std::move(newThreadRequest2)); + /* + auto newThreadRequest = std::async(std::launch::async, TestSockets, browser.socketFD, webserver.socketFD); + pending_futures.push_back(std::move(newThreadRequest)); std::cout << "Returned from creating threads, continuing..." << std::endl; + */ + //TestSockets(browser.socketFD, webserver.socketFD); } proxy.Close(); return 0;