Improved performance

* Replaced overshooting loop with simple recv loop
* Use sendall and allow lower level to push efficiently