Я освобождаю только pbuf, если по соединению какая то беда... Ну и закрываю соединение.
По тайм ауту делаю tcp close
По потере линка eth делаю tcp abort