peer public keys

add peer public keys to known peers in peers file
This commit is contained in:
Eitan Chatav 2016-11-05 09:32:32 -07:00
parent 3a5368434c
commit bdab9b6c05

View File

@ -458,10 +458,11 @@ let peers_file_encoding =
(req "addr" addr_encoding) (req "addr" addr_encoding)
(req "port" int31) (req "port" int31)
(opt "infos" (opt "infos"
(obj3 (obj4
(req "connections" int31) (req "connections" int31)
(req "lastSeen" float) (req "lastSeen" float)
(req "gid" string)))))) (req "gid" string)
(req "public_key" public_key_encoding))))))
(req "blacklisted" (req "blacklisted"
(list (obj2 (list (obj2
(req "addr" addr_encoding) (req "addr" addr_encoding)
@ -474,7 +475,7 @@ let peers_file_encoding =
(* Info on peers maintained between connections *) (* Info on peers maintained between connections *)
type source = type source =
{ unreachable_since : float option; { unreachable_since : float option;
connections : (int * float) option ; connections : (int * float * Crypto_box.public_key) option ;
white_listed : bool } white_listed : bool }
(* Ad hoc comparison on sources such as good source < bad source *) (* Ad hoc comparison on sources such as good source < bad source *)
@ -487,7 +488,7 @@ let compare_sources s1 s2 =
| _, _ -> | _, _ ->
match s1.connections, s2.connections with match s1.connections, s2.connections with
| Some _, None -> -1 | None, Some _ -> 1 | None, None -> 0 | Some _, None -> -1 | None, Some _ -> 1 | None, None -> 0
| Some (n1, t1), Some (n2, t2) -> | Some (n1, t1, _), Some (n2, t2, _) ->
if n1 = n2 then compare t2 t1 if n1 = n2 then compare t2 t1
else compare n2 n1 else compare n2 n1
@ -650,10 +651,10 @@ let bootstrap config limits =
connections = None ; connections = None ;
white_listed = true } in white_listed = true } in
PeerMap.update (addr, port) source r PeerMap.update (addr, port) source r
| Some (c, t, gid) -> | Some (c, t, gid, pk) ->
let source = let source =
{ unreachable_since = None ; { unreachable_since = None ;
connections = Some (c, t) ; connections = Some (c, t, pk) ;
white_listed = PointSet.mem (addr, port) white_list } in white_listed = PointSet.mem (addr, port) white_list } in
PeerMap.update (addr, port) ~gid source r) PeerMap.update (addr, port) ~gid source r)
PeerMap.empty k in PeerMap.empty k in
@ -685,7 +686,7 @@ let bootstrap config limits =
PeerMap.fold PeerMap.fold
(fun (addr, port) gid source (k, b, w) -> (fun (addr, port) gid source (k, b, w) ->
let infos = match gid, source.connections with let infos = match gid, source.connections with
| Some gid, Some (n, t) -> Some (n, t, gid) | Some gid, Some (n, t, pk) -> Some (n, t, gid, pk)
| _ -> None in | _ -> None in
((addr, port, infos) :: k, ((addr, port, infos) :: k,
b, b,
@ -891,15 +892,15 @@ let bootstrap config limits =
in update @@ in update @@
try match PeerMap.by_gid peer.gid !known_peers with try match PeerMap.by_gid peer.gid !known_peers with
| { connections = None ; white_listed } -> | { connections = None ; white_listed } ->
{ connections = Some (1, Unix.gettimeofday ()) ; { connections = Some (1, Unix.gettimeofday (), peer.public_key) ;
unreachable_since = None ; unreachable_since = None ;
white_listed } white_listed }
| { connections = Some (n, _) ; white_listed } -> | { connections = Some (n, _, _) ; white_listed } ->
{ connections = Some (n + 1, Unix.gettimeofday ()) ; { connections = Some (n + 1, Unix.gettimeofday (), peer.public_key) ;
unreachable_since = None ; unreachable_since = None ;
white_listed} white_listed}
with Not_found -> with Not_found ->
{ connections = Some (1, Unix.gettimeofday ()) ; { connections = Some (1, Unix.gettimeofday (), peer.public_key) ;
unreachable_since = None ; unreachable_since = None ;
white_listed = white_listed point } white_listed = white_listed point }
in in