]> git.meshlink.io Git - utcp/blobdiff - utcp.c
Add a function to check for active connections.
[utcp] / utcp.c
diff --git a/utcp.c b/utcp.c
index e8755ed14470577b6baafbab0d127476454e4dba..c63def15cfc7845ce324d8b2ec36f6a0455ed280 100644 (file)
--- a/utcp.c
+++ b/utcp.c
@@ -1154,6 +1154,17 @@ struct timeval utcp_timeout(struct utcp *utcp) {
        return diff;
 }
 
+bool utcp_is_active(struct utcp *utcp) {
+       if(!utcp)
+               return false;
+
+       for(int i = 0; i < utcp->nconnections; i++)
+               if(utcp->connections[i]->state != CLOSED && utcp->connections[i]->state != TIME_WAIT)
+                       return true;
+
+       return false;
+}
+
 struct utcp *utcp_init(utcp_accept_t accept, utcp_pre_accept_t pre_accept, utcp_send_t send, void *priv) {
        struct utcp *utcp = calloc(1, sizeof *utcp);
        if(!utcp)
@@ -1256,3 +1267,10 @@ void utcp_set_poll_cb(struct utcp_connection *c, utcp_poll_t poll) {
        if(c)
                c->poll = poll;
 }
+
+void utcp_set_accept_cb(struct utcp *utcp, utcp_accept_t accept, utcp_pre_accept_t pre_accept) {
+       if(utcp) {
+               utcp->accept = accept;
+               utcp->pre_accept = pre_accept;
+       }
+}