Loggers: no blocks flag

A logger's lines are written by a thread of its own, its clients only
queueing them, so a logger whose writes wait cannot hold a client's
thread or a loop: its blocks flag, giving its services a thread for each
client, is gone. ODBC was the logger setting it; its services are served
on loops now too. Only a logger whose thread could not be started is
written by its clients themselves, as before.

Plugins: struct logtype loses its last member, blocks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Vladimir Dubrovin 2026-10-27 15:28:57 +03:00
parent e09e20e71c
commit 270b02293e
3 changed files with 1 additions and 3 deletions

View File

@ -652,7 +652,6 @@ static int srvprepare(struct srvstart *s, int argc, char **argv){
other client */ other client */
if(srv->o_nsfd >= 0) srv->threadperclient = 1; if(srv->o_nsfd >= 0) srv->threadperclient = 1;
#endif #endif
if(srv->logger && srv->logger->type && srv->logger->type->blocks) srv->threadperclient = 1;
#ifndef STDMAIN #ifndef STDMAIN
if(sysresolves(srv->resolvmode)) srv->threadperclient = 1; if(sysresolves(srv->resolvmode)) srv->threadperclient = 1;
#endif #endif

View File

@ -132,7 +132,7 @@ static void odbcclose(struct logger *lg){
} }
const struct logtype logtype_odbc = { const struct logtype logtype_odbc = {
"odbc", odbcmatch, odbcinit, odbcformat, odbcwrite, odbcclose, NULL, LOGSTACKSIZE, 0, 0, 1, 1 "odbc", odbcmatch, odbcinit, odbcformat, odbcwrite, odbcclose, NULL, LOGSTACKSIZE, 0, 0, 1
}; };
#endif #endif

View File

@ -668,7 +668,6 @@ struct logtype {
int standard; /* kept open for the life of the process */ int standard; /* kept open for the life of the process */
int text; /* writes a line of text: errors can go there */ int text; /* writes a line of text: errors can go there */
int params; /* the string after a comma is parameters */ int params; /* the string after a comma is parameters */
int blocks; /* waits for its writes other than in sockpoll() */
}; };
/* What a log's queue holds: a line (log.c's struct logslot, of which this /* What a log's queue holds: a line (log.c's struct logslot, of which this