22 #include <stringprep.h>
46 log_write(sm->
log, LOG_NOTICE,
"HUP handled. reloading modules...");
86 if((f = fopen(pidfile,
"w+")) == NULL) {
87 log_write(sm->
log, LOG_ERR,
"couldn't open %s for writing: %s", pidfile, strerror(errno));
91 if(fprintf(f,
"%d", pid) < 0) {
92 log_write(sm->
log, LOG_ERR,
"couldn't write to %s: %s", pidfile, strerror(errno));
99 log_write(sm->
log, LOG_INFO,
"process id is %d, written to %s", pid, pidfile);
137 if(strcmp(str,
"file") == 0)
139 else if(strcmp(str,
"syslog") == 0)
178 for(i = 0; i < elem->
nvalues; i++) {
180 strncpy(
id, elem->
values[i], 1024);
182 if (stringprep_nameprep(
id, 1024) != 0) {
183 log_write(sm->
log, LOG_ERR,
"cannot stringprep id %s, aborting",
id);
199 if(errno == ECONNREFUSED)
211 JABBER_MAIN(
"jabberd2sm",
"Jabber 2 Session Manager",
"Jabber Open Source Server: Session Manager",
"jabberd2router\0")
217 time_t pool_time = 0;
219 const char *cli_id = 0;
222 umask((mode_t) 0027);
227 #ifdef HAVE_WINSOCK2_H
230 WORD wVersionRequested;
234 wVersionRequested = MAKEWORD( 2, 2 );
236 err = WSAStartup( wVersionRequested, &wsaData );
256 sm = (
sm_t) calloc(1,
sizeof(
struct sm_st));
264 while((optchar = getopt(argc, argv,
"Dc:hi:?")) >= 0)
275 printf(
"WARN: Debugging not enabled. Ignoring -D.\n");
281 case 'h':
case '?':
default:
283 "sm - jabberd session manager (" VERSION
")\n"
284 "Usage: sm <options>\n"
286 " -c <config> config file to use [default: " CONFIG_DIR
"/sm.xml]\n"
287 " -i id Override <id> config element\n"
289 " -D Show debug output\n"
301 fputs(
"sm: couldn't load config, aborting\n", stderr);
313 strncpy(
id, sm->
id, 1024);
314 id[
sizeof(id)-1] =
'\0';
315 if (stringprep_nameprep(
id, 1024) != 0) {
316 log_write(sm->
log, LOG_ERR,
"cannot stringprep id %s, aborting", sm->
id);
327 if (sm->
st == NULL) {
328 log_write(sm->
log, LOG_ERR,
"failed to initialise one or more storage drivers, aborting");
375 log_write(sm->
log, LOG_ERR,
"failed to load SSL pemfile, SSL disabled");
384 log_write(sm->
log, LOG_ERR,
"failed to initialise SASL context, aborting");
435 if(time(NULL) > pool_time + 60) {
437 pool_time = time(NULL);
458 storage_free(sm->
st);
483 #ifdef HAVE_WINSOCK2_H