dprintf ("No match found for ident = 0x%04x, seq = %i\n",
                                ident, seq);
        }
+       
+       ptr->recv_ttl = ip_hdr->ip_ttl;
 
        return (ptr);
 }
        dprintf ("Read %zi bytes from fd = %i\n", payload_buffer_len, fd);
 
        /* Iterate over all auxiliary data in msghdr */
-       family = -1;
+       family = ph->addrfamily;
        recv_ttl = -1;
        for (cmsg = CMSG_FIRSTHDR (&msghdr); /* {{{ */
                        cmsg != NULL;
                        (int) diff.tv_sec,
                        (int) diff.tv_usec);
 
+       if (recv_ttl >= 0)
+               host->recv_ttl = recv_ttl;
+
        host->latency  = ((double) diff.tv_usec) / 1000.0;
        host->latency += ((double) diff.tv_sec)  * 1000.0;
 
-       host->recv_ttl = recv_ttl;
-
        timerclear (host->timer);
 
        return (0);