There are two connected sockets. How can I interconnect them?
- Data appeared on the one socket should be written to the other.
- EOF/FIN should propogate well. If one is half-closed, the other should also be half-closed.
int client = get_connected_client_socket(); int proxy = get_connected_proxy_socket(); negotiate_with_proxy(proxy); iterconnect(client, proxy); // Now forgot about both client and proxy. // System should handle IO/shutdown/close. // Ideally even without any support of the user-space process.
Can Linux do it? Can it be done by tricking connection tracking to change tracking status of existing connection?
@related Determine how much can I write into a filehandle; copying data from one FH to the other
splice
(I only theoretically knew aboutsendfile
). I'll think and test it. – Manizales