*/
/********************************************************/
/* */
+/* Procedure to merge current log within current */
+/* daily logs. */
+/* */
+/********************************************************/
+static _Bool mergelog(const char *logname)
+
+{
+#define OPEP "devlog.c:mergelog"
+#define UFTIME "%Y%m%d"
+#define EVENT "logevent"
+
+_Bool status;
+time_t curtime;
+char *event;
+char daily[200];
+char asctemps[100];
+int phase;
+int proceed;
+
+status=true;
+curtime=time((time_t)0);
+(void) strftime(asctemps,sizeof(asctemps),UFTIME,localtime(&curtime));
+event=(char *)0;
+(void) strcpy(daily,"");
+phase=0;
+proceed=true;
+while (proceed==true) {
+ (void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase);
+ switch (phase) {
+ case 0 : //do we have a log name?
+ if (logname==(char *)0) {
+ (void) rou_alert(0,"%s logname is missing (Bug!?)",OPEP);
+ phase=999;
+ }
+ break;
+ case 1 : //duplicat logname
+ (void) strncpy(daily,logname,sizeof(daily));
+ if (strlen(daily)>0) {
+ char *ptr;
+
+ if ((ptr=strrchr(daily,'/'))!=(char *)0)
+ *ptr='\000';
+ }
+ (void) rou_asprintf(&event,"%s/event-%s.jrl",daily,asctemps);
+ break;
+ case 2 : //locking access to event file
+ if (prc_locking(EVENT,true,5)==false) {
+ (void) rou_alert(0,"%s Unable to log event (Timing!?)",OPEP);
+ phase=999; //Trouble trouble
+ }
+ break;
+ case 3 : //merging file
+ (void) rou_alert(0,"%s JMPDBG merging file=<%s>",OPEP,event);
+ (void) prc_locking(EVENT,false,1);
+ break;
+ default : //SAFE guard
+ event=rou_freestr(event);
+ proceed=false;
+ break;
+ }
+ phase++;
+ }
+return status;
+#undef UFTIME
+#undef OPEP
+}
+/*
+^L
+*/
+/********************************************************/
+/* */
/* Procedure to open a session log to collect all */
/* exchange with remote SMTP client. */
/* return a NULL file pointeur if trouble. */
phase=0;
proceed=true;
while (proceed==true) {
+ (void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase);
switch (phase) {
case 0 : //do we have a log name?
if (logname==(char *)0) {
phase=0;
proceed=true;
while (proceed==true) {
+ (void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase);
switch (phase) {
case 0 : //do we have a log reference?
if (log==(LOGTYP *)0)
phase=999;
}
break;
+ case 2 : //merging current log
+ if (mergelog(log->filename)==false)
+ phase=999;
+ break;
+ case 3 : //removing logfile
+ break;
default : //SAFE guard
logptr=freelog(log);
proceed=false;
phase=0;
proceed=true;
while (proceed==true) {
+ //(void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase);
switch (phase) {
case 0 : //do we have a log name?
if (log==(LOGTYP *)0) {
phase=0;
proceed=true;
while (proceed==true) {
+ //(void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase);
switch (phase) {
case 0 : //is the connect still active
if (soc->connected==false) //no!, no need to shutdown
- phase++;
+ phase=999; //no need to go further
break;
case 1 : //shutting down the link
if (shutdown(soc->handle,SHUT_RDWR)<0) {
phase=0;
proceed=true;
while (proceed==true) {
- (void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase);
+ //(void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase);
switch (phase) {
case 0 : //sanity check
if (soc==(SOCTYP *)0) {
if ((polling[0].revents&POLLHUP)==POLLHUP) {
(void) close(soc->handle);
soc->handle=-1;
+ soc->connected=false;
status=0;
}
if ((polling[0].revents&POLLERR)==POLLERR) {
phase=0;
proceed=true;
while (proceed==true) {
- (void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase);
+ //(void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase);
switch (phase) {
case 0 : //checking if soc is available
if (soc==(SOCTYP *)0) {
attend.tv_sec=delay;
attend.tv_nsec=0;
status=tcp_getline(contact->socptr,&attend,&line);
- (void) rou_alert(0,"%s, JMPDBG tcp_getline status='%d'",OPEP,status);
+ //(void) rou_alert(0,"%s, JMPDBG tcp_getline status='%d'",OPEP,status);
if (status<=0) { //timeout or trouble?
(void) log_fprintlog(contact->logptr,false,"%s","Lost contact with remote");
(void) rou_alert(0,"%s, JMPDBG lost contact",OPEP);
phase=0;
proceed=true;
while (proceed==true) {
- (void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase);
+ //(void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase);
switch (phase) {
case 0 : //waiting contact
if ((contact=eml_getcontact(socptr,pos))==(CONTYP *)0)
phase=0;
proceed=true;
while (proceed==true) {
- (void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase);
+ //(void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase);
switch (phase) {
case 0 : //Opening logs
(void) closelog();
phase=0;
proceed=true;
while (proceed==true) {
- (void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase);
+ //(void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase);
switch (phase) {
case 0 : //preparing iteration
if ((nbrbind=prepbinding(&bindings,argc,argv))==0) {
}
break;
case 4 : //relax time
+ (void) sleep(2);
if ((hangup==false)&&(reload==false))
phase=0; //Normal process, lets restart
break;
//version definition
#define VERSION "0.6"
-#define RELEASE "18"
+#define RELEASE "19"
//Public variables
PUBLIC int debug=0; //debug level
/********************************************************/
PUBLIC void rou_valert(const int dlevel,const char *fmt,va_list ap)
-#define DEBMAX 120
+#define DEBMAX 140
{
if (debug>=dlevel)
time_t curtime;
char asctemps[100];
-
-
sesid=(char *)0;
curtime=time((time_t)0);
(void) strftime(asctemps,sizeof(asctemps),UFTIME,localtime(&curtime));