prefork
Greg Banks
gnb at fastmail.fm
Sun Oct 23 23:39:20 EDT 2011
G'day,
On 30/09/11 19:38, Zbierski Christophe wrote:
> Hi, I continued to analyze the problem :
>
> In master.c (main() function)
>
> masterconf_getsection("START", &add_start, NULL);
> masterconf_getsection("SERVICES", &add_service, NULL);
> masterconf_getsection("EVENTS", &add_event, NULL);
>
> /* set signal handlers */
> sighandler_setup();
>
> /* initialize services */
> for (i = 0; i < nservices; i++) {
> service_create(&Services[i]);
> if (verbose > 2)
> syslog(LOG_DEBUG, "init: service %s socket %d pipe %d %d",
> Services[i].name, Services[i].socket,
> Services[i].stat[0], Services[i].stat[1]);
> }
>
> There is 2 actions, one to read the configuration (add_service()), and another to create services (service_create()).
> nservices contains the number of services, it's updated in add_service(), but service_create() function also updates this variable :
>
> if (s == &service) {
> if (nservices == allocservices) {
> if (allocservices > SERVICE_MAX - 5)
> fatal("out of service structures, please restart", EX_UNAVAILABLE);
> Services = xrealloc(Services,
> (allocservices+=5) * sizeof(struct service));
> if (!Services) fatal("out of memory", EX_UNAVAILABLE);
> }
> memcpy(&Services[nservices++], s, sizeof(struct service));
> }
>
> I do not understand this part of code.
Christophe, did you get further in your analysis? If not, can you
please create a Bugzilla ticket? I may have some time soon to poke
around in the master process.
--
Greg.
More information about the Cyrus-devel
mailing list