Il problema sta nel fatto che setti la variabile $esito nella funzione httpPost ( non dimenticare che con php le variabili di una funzione valgono solo nella funzione) mentre usi un'altra variabile con lo stesso nome che non ha alcun valore.
Che cosa puoi fare ?
1 - dichiarare la variabile $esito come "globale"
2 - fare un return $esito al posto del return attuale (non dimenticare di farlo quando funziona e quando non funziona). Pero' non sapendo come e dove usi la funzione potrebbe creare altri problemi.
3 - aggiungere un parametro "per riferimento" alla funzione.
function httpPost($fields, $host = 'app.smsend.it', $url ='/sms/send.php',&$esito)
Poi quando richiami la funzione aggiungi il nome della variabile che usi nella query.