]> jfr.im git - solanum.git/blobdiff - ssld/ssld.c
Implement operspy for /LIST.
[solanum.git] / ssld / ssld.c
index b28520da8dd785e1116134fe7aebaab3666d51d1..def8ce578555f61cac8ccb9bac8ed4966b0d916b 100644 (file)
@@ -679,8 +679,16 @@ static void
 ssl_process_accept_cb(rb_fde_t *F, int status, struct sockaddr *addr, rb_socklen_t len, void *data)
 {
        conn_t *conn = data;
+       char buf[5 + RB_SSL_CERTFP_LEN];
+
        if(status == RB_OK)
        {
+               if(rb_get_ssl_certfp(F, &buf[5]))
+               {
+                       buf[0] = 'F';
+                       int32_to_buf(&buf[1], conn->id);
+                       mod_cmd_write_queue(conn->ctl, buf, sizeof buf);
+               }
                conn_mod_read_cb(conn->mod_fd, conn);
                conn_plain_read_cb(conn->plain_fd, conn);
                return;
@@ -694,8 +702,16 @@ static void
 ssl_process_connect_cb(rb_fde_t *F, int status, void *data)
 {
        conn_t *conn = data;
+       char buf[5 + RB_SSL_CERTFP_LEN];
+
        if(status == RB_OK)
        {
+               if(rb_get_ssl_certfp(F, &buf[5]))
+               {
+                       buf[0] = 'F';
+                       int32_to_buf(&buf[1], conn->id);
+                       mod_cmd_write_queue(conn->ctl, buf, sizeof buf);
+               }
                conn_mod_read_cb(conn->mod_fd, conn);
                conn_plain_read_cb(conn->plain_fd, conn);
        }