]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
daemon/worker: separate counter for TLS sendings
authorGrigorii Demidov <grigorii.demidov@nic.cz>
Fri, 13 Apr 2018 15:42:55 +0000 (17:42 +0200)
committerPetr Špaček <petr.spacek@nic.cz>
Thu, 19 Apr 2018 12:01:21 +0000 (14:01 +0200)
daemon/bindings.c
daemon/worker.c
daemon/worker.h

index e3dd725849a5d69c55a6402830f16b60637508f9..bcb9daa2141b16b6f2cc5b68e04ca372ba650e4b 100644 (file)
@@ -1598,6 +1598,8 @@ static int wrk_stats(lua_State *L)
        lua_setfield(L, -2, "udp");
        lua_pushnumber(L, worker->stats.tcp);
        lua_setfield(L, -2, "tcp");
+       lua_pushnumber(L, worker->stats.tls);
+       lua_setfield(L, -2, "tls");
        lua_pushnumber(L, worker->stats.ipv6);
        lua_setfield(L, -2, "ipv6");
        lua_pushnumber(L, worker->stats.ipv4);
index f91b95cf75c86c7fde17d16df2d0e2bee157e0e6..6edd39baf95757f882024a9d39849df463374c8b 100644 (file)
@@ -946,6 +946,16 @@ ssize_t worker_gnutls_push(gnutls_transport_ptr_t h, const void *buf, size_t len
        if (res == 0) {
                if (task) {
                        qr_task_ref(task); /* Pending ioreq on current task */
+                       struct request_ctx *ctx = task->ctx;
+                       if (ctx && ctx->source.session &&
+                           t->session->handle != ctx->source.session->handle) {
+                               struct sockaddr *addr = &t->session->peer.ip;
+                               worker->stats.tls += 1;
+                               if (addr->sa_family == AF_INET6)
+                                       worker->stats.ipv6 += 1;
+                               else if (addr->sa_family == AF_INET)
+                                       worker->stats.ipv4 += 1;
+                       }
                }
                if (worker->too_many_open &&
                    worker->stats.rconcurrent <
@@ -953,12 +963,6 @@ ssize_t worker_gnutls_push(gnutls_transport_ptr_t h, const void *buf, size_t len
                        worker->too_many_open = false;
                }
                ret = len;
-               struct sockaddr *addr = &t->session->peer.ip;
-               worker->stats.tcp += 1;
-               if (addr->sa_family == AF_INET6)
-                       worker->stats.ipv6 += 1;
-               else if (addr->sa_family == AF_INET)
-                       worker->stats.ipv4 += 1;
        } else {
                VERBOSE_MSG(NULL,"[%s] uv_write: %s\n",
                            t->client_side ? "tls_client" : "tls", uv_strerror(res));
index ec3e0f8857481988bf5625faa696b37d59a3ad71..c65528b1d98099a3bb8db6f2399056670dbdffb8 100644 (file)
@@ -138,6 +138,7 @@ struct worker_ctx {
                size_t rconcurrent;
                size_t udp;
                size_t tcp;
+               size_t tls;
                size_t ipv4;
                size_t ipv6;
                size_t queries;