Socket config, and no need to awaken_sel()

This commit is contained in:
dcp1990 2005-06-20 02:06:45 +00:00
parent 2574cfd9ed
commit 8d2903d415
6 changed files with 30 additions and 5 deletions

View file

@ -18,6 +18,7 @@ extern pthread_mutex_t cfmx;
main return MAIN; main return MAIN;
loglevel pthread_mutex_lock(&cfmx); cf.loglevels = LL_CRITICAL|LL_FATAL; pthread_mutex_unlock(&cfmx); return LLEVEL; loglevel pthread_mutex_lock(&cfmx); cf.loglevels = LL_CRITICAL|LL_FATAL; pthread_mutex_unlock(&cfmx); return LLEVEL;
database return DB; database return DB;
socket return SOCK;
all yylval.number = LL_ALL; return LNUML; all yylval.number = LL_ALL; return LNUML;
debug yylval.number = LL_DEBUG; return LNUML; debug yylval.number = LL_DEBUG; return LNUML;
info yylval.number = LL_INFO; return LNUML; info yylval.number = LL_INFO; return LNUML;

View file

@ -34,7 +34,7 @@ int yywrap(void)
} }
%} %}
%token NOTIFY OBRACE CBRACE SCOLON QUOTE MODDEV MAIN LLEVEL OR %token NOTIFY OBRACE CBRACE SCOLON QUOTE MODDEV MAIN LLEVEL OR
%token FILTERS ACTION NAME PHNUM FILTER FLAGS DB %token FILTERS ACTION NAME PHNUM FILTER FLAGS DB SOCK
/* HANGUP IGNOREIT PLAY RECORD */ /* HANGUP IGNOREIT PLAY RECORD */
%token <number> LNUML ACTN FLAG %token <number> LNUML ACTN FLAG
%token <string> IPADDR PATH REGEX FNAME %token <string> IPADDR PATH REGEX FNAME
@ -66,6 +66,8 @@ directive:
loglevel loglevel
| |
database database
|
socket
; ;
notify: notify:
NOTIFY iplist NOTIFY iplist
@ -84,6 +86,18 @@ ipadr:
addtoaddrs($1); addtoaddrs($1);
} }
; ;
socket:
SOCK sockpath
;
sockpath:
QUOTE PATH QUOTE
{
lprintf(debug, "Socket path == %s\n", $2);
pthread_mutex_lock(&cfmx);
cf.sockfile = $2;
pthread_mutex_unlock(&cfmx);
}
;
database: database:
DB dbpath DB dbpath
; ;

View file

@ -30,8 +30,10 @@ void shutd(whatdone)
int whatdone; int whatdone;
{ {
lprintf(fatal, "phoned shutting down (th %s)...\n", pthread_equal(pthread_self(), networkth) ? "network" : (pthread_equal(pthread_self(), modemth) ? "modem" : "other/main")); lprintf(fatal, "phoned shutting down (th %s)...\n", pthread_equal(pthread_self(), networkth) ? "network" : (pthread_equal(pthread_self(), modemth) ? "modem" : "other/main"));
awaken_sel(); /* awaken_sel(); */
unlink(SOCKETFILE); pthread_mutex_lock(&cfmx);
unlink(cf.sockfile);
pthread_mutex_unlock(&cfmx);
if(whatdone & WD_MODEM) modem_wake(); if(whatdone & WD_MODEM) modem_wake();
flush_lists(); flush_lists();
flush_logins(); flush_logins();

View file

@ -43,6 +43,7 @@ int main(argc, argv)
cf.cfile = CONFIGFILE; cf.cfile = CONFIGFILE;
cf.dbfile = DBFILE; cf.dbfile = DBFILE;
cf.logfile = LOGFILE; cf.logfile = LOGFILE;
cf.sockfile = SOCKETFILE;
#define OPTSTRING "dhc:l:" #define OPTSTRING "dhc:l:"
while((c = getopt(argc, argv, OPTSTRING)) != -1) while((c = getopt(argc, argv, OPTSTRING)) != -1)
switch(c) { switch(c) {

View file

@ -2,6 +2,7 @@ main {
modemdev "/dev/cuaa2"; modemdev "/dev/cuaa2";
loglevel all; loglevel all;
database "./phoned.db"; database "./phoned.db";
socket "/tmp/phoned1.sock";
}; };
filters { filters {
filter test1 { filter test1 {

View file

@ -49,6 +49,8 @@
extern pthread_mutex_t modemmx; extern pthread_mutex_t modemmx;
extern pthread_mutex_t buffermx; extern pthread_mutex_t buffermx;
extern pthread_mutex_t cfmx;
extern struct conf cf;
pthread_t networkth; pthread_t networkth;
int selpipes[2]; int selpipes[2];
pthread_mutex_t spipsmx; pthread_mutex_t spipsmx;
@ -97,7 +99,9 @@ void *network(b)
pthread_mutex_lock(&spipsmx); pthread_mutex_lock(&spipsmx);
pipe(selpipes); pipe(selpipes);
pthread_mutex_unlock(&spipsmx); pthread_mutex_unlock(&spipsmx);
strcpy(it.sun_path, SOCKETFILE); pthread_mutex_lock(&cfmx);
strcpy(it.sun_path, cf.sockfile);
pthread_mutex_unlock(&cfmx);
it.sun_family = AF_LOCAL; it.sun_family = AF_LOCAL;
if(bind(s, (struct sockaddr *)&it, 1 + strlen(it.sun_path) + if(bind(s, (struct sockaddr *)&it, 1 + strlen(it.sun_path) +
sizeof(it.sun_family)) == -1) { sizeof(it.sun_family)) == -1) {
@ -146,6 +150,8 @@ void *network(b)
if(*cbuf != 0) break; if(*cbuf != 0) break;
} }
close(s); close(s);
unlink(SOCKETFILE); pthread_mutex_lock(&cfmx);
unlink(cf.sockfile);
pthread_mutex_unlock(&cfmx);
pthread_exit(NULL); pthread_exit(NULL);
} }