static int mi_child_init(void) { if (pua_dbf.init==0) { LM_CRIT("database not bound\n"); return -1; } /* In DB only mode do not pool the connections where possible. */ if (dbmode == PUA_DB_ONLY && pua_dbf.init2) pua_db = pua_dbf.init2(&db_url, DB_POOLING_NONE); else pua_db = pua_dbf.init(&db_url); if (!pua_db) { LM_ERR("connecting to database failed\n"); return -1; } if (pua_dbf.use_table(pua_db, &db_table) < 0) { LM_ERR("Error in use_table pua\n"); return -1; } LM_DBG("Database connection opened successfully\n"); return 0; }
static int child_init(int rank) { if (rank==PROC_INIT || rank==PROC_MAIN || rank==PROC_TCP_MAIN) return 0; /* do nothing for the main process */ if (pua_dbf.init==0) { LM_CRIT("database not bound\n"); return -1; } /* In DB only mode do not pool the connections where possible. */ if (dbmode == PUA_DB_ONLY && pua_dbf.init2) pua_db = pua_dbf.init2(&db_url, DB_POOLING_NONE); else pua_db = pua_dbf.init(&db_url); if (!pua_db) { LM_ERR("Child %d: connecting to database failed\n", rank); return -1; } if (pua_dbf.use_table(pua_db, &db_table) < 0) { LM_ERR("child %d: Error in use_table pua\n", rank); return -1; } LM_DBG("child %d: Database connection opened successfully\n", rank); return 0; }
static int mi_child_init(void) { if(library_mode) return 0; if (pa_dbf.init==0) { LM_CRIT("database not bound\n"); return -1; } /* Do not pool the connections where possible when running notifier processes. */ if (pres_notifier_processes > 0 && pa_dbf.init2) pa_db = pa_dbf.init2(&db_url, DB_POOLING_NONE); else pa_db = pa_dbf.init(&db_url); if (!pa_db) { LM_ERR("connecting database\n"); return -1; } if (pa_dbf.use_table(pa_db, &presentity_table) < 0) { LM_ERR( "unsuccessful use_table presentity_table\n"); return -1; } if (pa_dbf.use_table(pa_db, &active_watchers_table) < 0) { LM_ERR( "unsuccessful use_table active_watchers_table\n"); return -1; } if (pa_dbf.use_table(pa_db, &watchers_table) < 0) { LM_ERR( "unsuccessful use_table watchers_table\n"); return -1; } LM_DBG("Database connection opened successfully\n"); return 0; }
/** * Initialize children */ static int child_init(int rank) { if (rank==PROC_INIT || rank==PROC_TCP_MAIN) return 0; pid = my_pid(); if(library_mode) return 0; if (rank == PROC_MAIN) { int i; for (i = 0; i < pres_notifier_processes; i++) { char tmp[21]; snprintf(tmp, 21, "PRESENCE NOTIFIER %d", i); pres_notifier_id[i] = i; if (fork_basic_utimer(PROC_TIMER, tmp, 1, pres_timer_send_notify, &pres_notifier_id[i], 1000000/pres_notifier_poll_rate) < 0) { LM_ERR("Failed to start PRESENCE NOTIFIER %d\n", i); return -1; } } return 0; } if (pa_dbf.init==0) { LM_CRIT("child_init: database not bound\n"); return -1; } /* Do not pool the connections where possible when running notifier processes. */ if (pres_notifier_processes > 0 && pa_dbf.init2) pa_db = pa_dbf.init2(&db_url, DB_POOLING_NONE); else pa_db = pa_dbf.init(&db_url); if (!pa_db) { LM_ERR("child %d: unsuccessful connecting to database\n", rank); return -1; } if (pa_dbf.use_table(pa_db, &presentity_table) < 0) { LM_ERR( "child %d:unsuccessful use_table presentity_table\n", rank); return -1; } if (pa_dbf.use_table(pa_db, &active_watchers_table) < 0) { LM_ERR( "child %d:unsuccessful use_table active_watchers_table\n", rank); return -1; } if (pa_dbf.use_table(pa_db, &watchers_table) < 0) { LM_ERR( "child %d:unsuccessful use_table watchers_table\n", rank); return -1; } LM_DBG("child %d: Database connection opened successfully\n", rank); return 0; }
static int mi_child_init(void) { if (rls_dbf.init==0) { LM_CRIT("database not bound\n"); return -1; } /* In DB only mode do not pool the connections where possible. */ if (dbmode == RLS_DB_ONLY && rls_dbf.init2) rls_db = rls_dbf.init2(&db_url, DB_POOLING_NONE); else rls_db = rls_dbf.init(&db_url); if (!rls_db) { LM_ERR("Error while connecting database\n"); return -1; } else { if (rls_dbf.use_table(rls_db, &rlsubs_table) < 0) { LM_ERR("Error in use_table rlsubs_table\n"); return -1; } LM_DBG("Database connection opened successfully\n"); } if (rlpres_dbf.init==0) { LM_CRIT("database not bound\n"); return -1; } /* In DB only mode do not pool the connections where possible. */ if (dbmode == RLS_DB_ONLY && rlpres_dbf.init2) rlpres_db = rlpres_dbf.init2(&db_url, DB_POOLING_NONE); else rlpres_db = rlpres_dbf.init(&db_url); if (!rlpres_db) { LM_ERR("Error while connecting database\n"); return -1; } else { if (rlpres_dbf.use_table(rlpres_db, &rlpres_table) < 0) { LM_ERR("Error in use_table rlpres_table\n"); return -1; } LM_DBG("Database connection opened successfully\n"); } if (rls_xcap_dbf.init==0) { LM_CRIT("database not bound\n"); return -1; } rls_xcap_db = rls_xcap_dbf.init(&xcap_db_url); if (!rls_xcap_db) { LM_ERR("Error while connecting database\n"); return -1; } else { if (rls_xcap_dbf.use_table(rls_xcap_db, &rls_xcap_table) < 0) { LM_ERR("Error in use_table rls_xcap_table\n"); return -1; } LM_DBG("Database connection opened successfully\n"); } return 0; }
/** * Initialize children */ static int child_init(int rank) { if (rank==PROC_INIT || rank==PROC_TCP_MAIN) return 0; if (rank==PROC_MAIN && dbmode == RLS_DB_ONLY) { int i; for (i = 0; i < rls_notifier_processes; i++) { char tmp[16]; snprintf(tmp, 16, "RLS NOTIFIER %d", i); rls_notifier_id[i] = i; if (fork_basic_utimer(PROC_TIMER, tmp, 1, timer_send_notify, &rls_notifier_id[i], 1000000/rls_notifier_poll_rate) < 0) { LM_ERR("Failed to start RLS NOTIFIER %d\n", i); return -1; } } return 0; } LM_DBG("child [%d] pid [%d]\n", rank, getpid()); if (rls_dbf.init==0) { LM_CRIT("database not bound\n"); return -1; } /* In DB only mode do not pool the connections where possible. */ if (dbmode == RLS_DB_ONLY && rls_dbf.init2) rls_db = rls_dbf.init2(&db_url, DB_POOLING_NONE); else rls_db = rls_dbf.init(&db_url); if (!rls_db) { LM_ERR("child %d: Error while connecting database\n", rank); return -1; } else { if (rls_dbf.use_table(rls_db, &rlsubs_table) < 0) { LM_ERR("child %d: Error in use_table rlsubs_table\n", rank); return -1; } LM_DBG("child %d: Database connection opened successfully\n", rank); } if (rlpres_dbf.init==0) { LM_CRIT("database not bound\n"); return -1; } /* In DB only mode do not pool the connections where possible. */ if (dbmode == RLS_DB_ONLY && rlpres_dbf.init2) rlpres_db = rlpres_dbf.init2(&db_url, DB_POOLING_NONE); else rlpres_db = rlpres_dbf.init(&db_url); if (!rlpres_db) { LM_ERR("child %d: Error while connecting database\n", rank); return -1; } else { if (rlpres_dbf.use_table(rlpres_db, &rlpres_table) < 0) { LM_ERR("child %d: Error in use_table rlpres_table\n", rank); return -1; } LM_DBG("child %d: Database connection opened successfully\n", rank); } if (rls_xcap_dbf.init==0) { LM_CRIT("database not bound\n"); return -1; } rls_xcap_db = rls_xcap_dbf.init(&xcap_db_url); if (!rls_xcap_db) { LM_ERR("child %d: Error while connecting database\n", rank); return -1; } else { if (rls_xcap_dbf.use_table(rls_xcap_db, &rls_xcap_table) < 0) { LM_ERR("child %d: Error in use_table rls_xcap_table\n", rank); return -1; } LM_DBG("child %d: Database connection opened successfully\n", rank); } return 0; }