summaryrefslogtreecommitdiff
path: root/src/or/directory.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/or/directory.c')
-rw-r--r--src/or/directory.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/or/directory.c b/src/or/directory.c
index e753df85eb..bc3cac13ee 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -2484,6 +2484,26 @@ directory_handle_command_get(dir_connection_t *conn, const char *headers,
goto done;
}
+#ifdef ENABLE_GEOIP_STATS
+ {
+ geoip_client_action_t act =
+ is_v3 ? GEOIP_CLIENT_NETWORKSTATUS : GEOIP_CLIENT_NETWORKSTATUS_V2;
+ uint32_t addr = 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;
+ addr = orconn->_base.addr;
+ }
+ }
+ }
+ geoip_note_client_seen(act, addr, time(NULL));
+ }
+#endif
+
// note_request(request_type,dlen);
(void) request_type;
write_http_response_header(conn, -1, compressed,