void passThroughAllBits() {
        try {
            Socket destinationHost = new Socket(host, port);
            byte[] buf = new byte[1024];
            boolean didNothing = true;
            while(!this.sock.isClosed() && !destinationHost.isClosed()) {
                didNothing = true;
                if (sock.getInputStream().available() > 0) {
                    int b = sock.getInputStream().read(buf);
                    destinationHost.getOutputStream().write(buf, 0, b);
                    didNothing = false;
                }
                if (destinationHost.getInputStream().available() > 0) {
                    int b = destinationHost.getInputStream().read(buf);
                    sock.getOutputStream().write(buf, 0, b);
                    didNothing = false;
                }
                if (didNothing) {
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException ex) {
                        Logger.getLogger(HttpRequest.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            }
            this.sock.close();
            destinationHost.close();
        } catch (UnknownHostException ex) {
            Logger.getLogger(HttpRequest.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(HttpRequest.class.getName()).log(Level.SEVERE, null, ex);
        }
    }