Paul Brook wrote:
I've seen socat, and I could use it as you described. My only objection to this solution is that there is an unneeded process in the middle that just pipes data around... (Instead of socat, I think it would be more efficient to just write a simple application that uses the "new" Linux syscall "splice" that I've just found by mistake yesterday...)In that case you need to fix socat to use splice() when available. I have a hard time believing socat adds measurable overhead, especially if you're already tunnelling over ssh.
splice() doesn't really buy you anything when copying from a socket to another socket. The data is going to get copied just like it would if you dropped to userspace. It's useful if you introduce pipe-to-pipe copies because they'll be eliminated but if you're going from socket -> pipe -> socket it'll be the same as using socat.
Regards, Anthony Liguori
Paul