$ git clone https://socialnetwork.ion.nu/socialnetwork.git
commit aa851309627c4202a828609f53ae4b5ccd76ae74
Author: Alicia <...>
Date:   Wed Jan 11 20:43:09 2017 +0100

    Added peer_findbyid() to get a peer we're already connected to.

diff --git a/peer.c b/peer.c
index 6cd23de..d19eb54 100644
--- a/peer.c
+++ b/peer.c
@@ -278,7 +278,6 @@ static void generatecert(gnutls_certificate_credentials_t cred)
 {
   // Generate the certificate
   gnutls_x509_crt_t cert;
-  gnutls_datum_t certdata;
   gnutls_x509_crt_init(&cert);
   gnutls_x509_crt_set_key(cert, privkey);
   gnutls_x509_crt_set_serial(cert, "", 1);
@@ -493,3 +492,14 @@ void peer_findpeer(const unsigned char id[20])
   memcpy(data+20, &ttl, sizeof(ttl));
   peer_sendcmd(0, "findpeer", data, len);
 }
+
+struct peer* peer_findbyid(const unsigned char id[20])
+{
+  unsigned int i;
+  for(i=0; i<peercount; ++i)
+  {
+    if(!peers[i]->handshake){continue;}
+    if(!memcmp(peers[i]->id, id, 20)){return peers[i];}
+  }
+  return 0;
+}
diff --git a/peer.h b/peer.h
index e104462..9caabca 100644
--- a/peer.h
+++ b/peer.h
@@ -49,3 +49,4 @@ extern void peer_handlesocket(int sock); // Incoming data
 extern void peer_sendcmd(struct peer* peer, const char* cmd, void* data, uint32_t len);
 extern void peer_disconnect(struct peer* peer, char cleanly);
 extern void peer_findpeer(const unsigned char id[20]); // Find and ask a peer to connect to us
+extern struct peer* peer_findbyid(const unsigned char id[20]);