{
geoip_client_action_t act =
is_v3 ? GEOIP_CLIENT_NETWORKSTATUS : GEOIP_CLIENT_NETWORKSTATUS_V2;
-
- if (tor_addr_family(&conn->_base.addr) == AF_INET) {
- uint32_t addr = tor_addr_to_ipv4h(&conn->_base.addr);
-
- if (conn->_base.linked_conn) {
- connection_t *c = conn->_base.linked_conn;
- if (c->type == CONN_TYPE_EXIT) {
- circuit_t *circ = TO_EDGE_CONN(c)->on_circuit;
- if (! CIRCUIT_IS_ORIGIN(circ)) {
- or_connection_t *orconn = TO_OR_CIRCUIT(circ)->p_conn;
- if (tor_addr_family(&conn->_base.addr) == AF_INET)
- addr = tor_addr_to_ipv4h(&orconn->_base.addr);
- else
- addr = 0;
- }
- }
- }
- if (addr)
- geoip_note_client_seen(act, addr, time(NULL));
- }
+ struct in_addr in;
+ if (!tor_inet_aton((TO_CONN(conn))->address, &in))
+ geoip_note_client_seen(act, ntohl(in.s_addr), time(NULL));
}
#endif