peer public keys
add peer public keys to known peers in peers file
This commit is contained in:
parent
3a5368434c
commit
bdab9b6c05
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user