Record previous mailer session state
This commit is contained in:
parent
ae21f323e1
commit
ed31cfa37f
@ -16,6 +16,8 @@ v0.71.6 02-Sep-2005
|
||||
mbcico:
|
||||
Changed compression state logic.
|
||||
Removed soft-cr filter during message import.
|
||||
Record previous session state so we can better react on failed
|
||||
sessions.
|
||||
|
||||
mbfido:
|
||||
If some newsarticles are not accepted for post, don't treat
|
||||
|
@ -90,7 +90,7 @@ zmmisc.o: ../config.h ../lib/mbselib.h ../lib/nodelist.h ttyio.h session.h zmode
|
||||
zmrle.o: ../config.h ../lib/mbselib.h ../lib/nodelist.h ttyio.h session.h zmodem.h
|
||||
zmrecv.o: ../config.h ../lib/mbselib.h ../lib/nodelist.h lutil.h ttyio.h session.h zmodem.h config.h emsi.h openfile.h filelist.h openport.h
|
||||
zmsend.o: ../config.h ../lib/mbselib.h ../lib/nodelist.h ttyio.h session.h zmodem.h lutil.h emsi.h filelist.h
|
||||
binkp.o: ../config.h ../lib/mbselib.h ../lib/users.h ../lib/nodelist.h ../lib/mbsedb.h ttyio.h session.h statetbl.h config.h emsi.h openfile.h respfreq.h filelist.h opentcp.h rdoptions.h lutil.h binkp.h config.h md5b.h inbound.h
|
||||
binkp.o: ../config.h ../lib/mbselib.h ../lib/users.h ../lib/nodelist.h ../lib/mbsedb.h ttyio.h session.h statetbl.h config.h emsi.h openfile.h respfreq.h filelist.h opentcp.h rdoptions.h lutil.h binkp.h config.h md5b.h inbound.h callstat.h
|
||||
md5b.o: ../config.h ../lib/mbselib.h ../lib/nodelist.h lutil.h md5b.h
|
||||
xmsend.o: ../config.h ../lib/mbselib.h ../lib/nodelist.h session.h ttyio.h statetbl.h xmsend.h m7send.h filelist.h filetime.h
|
||||
xmrecv.o: ../config.h ../lib/mbselib.h ../lib/nodelist.h session.h ttyio.h statetbl.h config.h lutil.h openfile.h m7recv.h xmrecv.h filelist.h filetime.h
|
||||
@ -108,7 +108,7 @@ openfile.o: ../config.h ../lib/mbselib.h config.h lutil.h openfile.h
|
||||
openport.o: ../config.h ../lib/mbselib.h ulock.h ttyio.h mbcico.h openport.h
|
||||
opentcp.o: ../config.h ../lib/mbselib.h ../lib/nodelist.h ../lib/users.h ../lib/mbsedb.h session.h ttyio.h openport.h opentcp.h
|
||||
rdoptions.o: ../config.h ../lib/mbselib.h ../lib/nodelist.h ../lib/users.h ../lib/mbsedb.h session.h config.h
|
||||
yoohoo.o: ../config.h ../lib/mbselib.h ../lib/nodelist.h ../lib/users.h ../lib/mbsedb.h statetbl.h ttyio.h session.h config.h emsi.h hydra.h rdoptions.h wazoo.h dietifna.h yoohoo.h inbound.h
|
||||
yoohoo.o: ../config.h ../lib/mbselib.h ../lib/nodelist.h ../lib/users.h ../lib/mbsedb.h statetbl.h ttyio.h session.h config.h emsi.h hydra.h rdoptions.h wazoo.h dietifna.h yoohoo.h inbound.h callstat.h
|
||||
recvbark.o: ../config.h ../lib/mbselib.h ../lib/nodelist.h ttyio.h session.h statetbl.h recvbark.h respfreq.h filelist.h
|
||||
respfreq.o: ../config.h ../lib/mbselib.h ../lib/nodelist.h ../lib/msg.h ../lib/users.h ../lib/mbsedb.h session.h lutil.h config.h atoul.h respfreq.h filelist.h
|
||||
sendbark.o: ../config.h ../lib/mbselib.h ../lib/nodelist.h ttyio.h session.h statetbl.h sendbark.h xmrecv.h
|
||||
@ -123,7 +123,7 @@ telnet.o: ../config.h ../lib/mbselib.h telnet.h
|
||||
ttyio.o: ../config.h ../lib/mbselib.h ttyio.h lutil.h
|
||||
lutil.o: ../config.h ../lib/mbselib.h lutil.h
|
||||
scanout.o: ../config.h ../lib/mbselib.h ../lib/users.h ../lib/mbsedb.h config.h scanout.h lutil.h
|
||||
emsi.o: ../config.h ../lib/mbselib.h ../lib/users.h ../lib/nodelist.h ../lib/mbsedb.h ttyio.h session.h statetbl.h config.h emsi.h emsidat.h hydra.h rdoptions.h tcp.h wazoo.h inbound.h
|
||||
emsi.o: ../config.h ../lib/mbselib.h ../lib/users.h ../lib/nodelist.h ../lib/mbsedb.h ttyio.h session.h statetbl.h config.h emsi.h emsidat.h hydra.h rdoptions.h tcp.h wazoo.h inbound.h callstat.h
|
||||
ulock.o: ../config.h ../lib/mbselib.h
|
||||
callstat.o: ../config.h ../lib/mbselib.h callstat.h
|
||||
session.o: ../config.h ../lib/mbselib.h ../lib/nodelist.h ttyio.h statetbl.h emsi.h ftsc.h session.h yoohoo.h mbcico.h binkp.h callstat.h inbound.h opentcp.h telnet.h
|
||||
|
@ -49,6 +49,7 @@
|
||||
#include "config.h"
|
||||
#include "md5b.h"
|
||||
#include "inbound.h"
|
||||
#include "callstat.h"
|
||||
|
||||
|
||||
/*
|
||||
@ -72,6 +73,7 @@ extern int Loaded;
|
||||
extern pid_t mypid;
|
||||
extern struct sockaddr_in peeraddr;
|
||||
extern int most_debug;
|
||||
extern int laststat;
|
||||
|
||||
|
||||
extern unsigned long sentbytes;
|
||||
@ -211,6 +213,7 @@ struct binkprec {
|
||||
};
|
||||
|
||||
|
||||
|
||||
#ifdef USE_EXPERIMENT
|
||||
void *z_idata = NULL; /* Data for zstream */
|
||||
void *z_odata = NULL; /* Data for zstream */
|
||||
@ -257,8 +260,8 @@ static int file_transfer(void); /* File transfer state */
|
||||
|
||||
int binkp(int role)
|
||||
{
|
||||
int rc = 0;
|
||||
|
||||
int rc = 0;
|
||||
|
||||
Syslog('+', "Binkp: start session");
|
||||
memset(&bp, 0, sizeof(bp));
|
||||
bp.Role = role;
|
||||
@ -308,6 +311,7 @@ int binkp(int role)
|
||||
#endif
|
||||
#endif
|
||||
bp.buggyIrex = FALSE;
|
||||
laststat = 0;
|
||||
|
||||
if (role == 1) {
|
||||
if (orgbinkp()) {
|
||||
@ -400,6 +404,7 @@ SM_EDECL
|
||||
unsigned long bufl;
|
||||
fa_list **tmp, *tmpa;
|
||||
faddr *fa, ra;
|
||||
callstat *cst;
|
||||
|
||||
SM_START(ConnInit)
|
||||
|
||||
@ -476,6 +481,9 @@ SM_STATE(WaitAddr)
|
||||
}
|
||||
}
|
||||
if (!dupe) {
|
||||
cst = getstatus(fa);
|
||||
if (cst->trystat)
|
||||
laststat = cst->trystat;
|
||||
*tmp = (fa_list*)malloc(sizeof(fa_list));
|
||||
(*tmp)->next = NULL;
|
||||
(*tmp)->addr = fa;
|
||||
@ -633,6 +641,7 @@ SM_STATE(WaitOk)
|
||||
|
||||
SM_STATE(Opts)
|
||||
|
||||
Syslog('b', "Binkp: last session was %d", laststat);
|
||||
IsDoing("Binkp to %s", ascfnode(remote->addr, 0xf));
|
||||
binkp_set_comp_state();
|
||||
SM_SUCCESS;
|
||||
@ -670,6 +679,7 @@ SM_EDECL
|
||||
unsigned long bufl;
|
||||
fa_list **tmp, *tmpa;
|
||||
faddr *fa;
|
||||
callstat *cst;
|
||||
|
||||
SM_START(ConnInit)
|
||||
|
||||
@ -748,6 +758,9 @@ SM_STATE(WaitAddr)
|
||||
}
|
||||
}
|
||||
if (!dupe) {
|
||||
cst = getstatus(fa);
|
||||
if (cst->trystat)
|
||||
laststat = cst->trystat;
|
||||
*tmp = (fa_list*)malloc(sizeof(fa_list));
|
||||
(*tmp)->next = NULL;
|
||||
(*tmp)->addr = fa;
|
||||
@ -927,7 +940,8 @@ SM_STATE(Opts)
|
||||
|
||||
binkp_send_comp_opts();
|
||||
binkp_set_comp_state();
|
||||
|
||||
Syslog('b', "Binkp: last session status %d", laststat);
|
||||
|
||||
SM_SUCCESS;
|
||||
|
||||
SM_END
|
||||
|
@ -53,6 +53,11 @@ callstat *getstatus(faddr *addr)
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* If sts == 0, set last status Ok.
|
||||
* if sts == -1, leave last status as it is.
|
||||
* else, store status and set random next call time.
|
||||
*/
|
||||
void putstatus(faddr *addr, int incr, int sts)
|
||||
{
|
||||
FILE *fp;
|
||||
@ -61,7 +66,7 @@ void putstatus(faddr *addr, int incr, int sts)
|
||||
|
||||
cst = getstatus(addr);
|
||||
if ((fp = fopen(stsname(addr), "w"))) {
|
||||
if (sts == 0) {
|
||||
if ((sts == 0) || (sts == -1)) {
|
||||
j = cst->tryno = 0;
|
||||
} else {
|
||||
cst->tryno += incr;
|
||||
@ -75,7 +80,8 @@ void putstatus(faddr *addr, int incr, int sts)
|
||||
Syslog('d', "Next call allowed over %d seconds", j);
|
||||
}
|
||||
|
||||
cst->trystat = sts;
|
||||
if (sts != -1)
|
||||
cst->trystat = sts;
|
||||
cst->trytime = time(NULL) + j;
|
||||
|
||||
fwrite(cst, sizeof(callstat), 1, fp);
|
||||
|
@ -44,6 +44,7 @@
|
||||
#include "tcp.h"
|
||||
#include "wazoo.h"
|
||||
#include "inbound.h"
|
||||
#include "callstat.h"
|
||||
|
||||
|
||||
#define LOCAL_PROTOS (PROT_ZMO | PROT_ZAP | PROT_HYD | PROT_TCP)
|
||||
@ -53,6 +54,7 @@ static int txemsi(void);
|
||||
static char *intro;
|
||||
static int caller;
|
||||
|
||||
extern int laststat;
|
||||
extern int most_debug;
|
||||
extern pid_t mypid;
|
||||
|
||||
@ -70,10 +72,11 @@ int emsi_akas = 0;
|
||||
|
||||
int rx_emsi(char *data)
|
||||
{
|
||||
int rc, protect = FALSE;
|
||||
fa_list *tmr;
|
||||
int denypw=0;
|
||||
|
||||
int rc, protect = FALSE;
|
||||
fa_list *tmr;
|
||||
int denypw=0;
|
||||
callstat *cst;
|
||||
|
||||
emsi_local_lcodes = LCODE_RH1;
|
||||
emsi_remote_lcodes=0;
|
||||
|
||||
@ -126,12 +129,18 @@ int rx_emsi(char *data)
|
||||
|
||||
emsi_local_password = NULL;
|
||||
|
||||
for (tmr = remote; tmr; tmr = tmr->next)
|
||||
for (tmr = remote; tmr; tmr = tmr->next) {
|
||||
if (((nlent = getnlent(tmr->addr))) && (nlent->pflag != NL_DUMMY)) {
|
||||
Syslog('+', "Remote is a listed system");
|
||||
UserCity(mypid, nlent->sysop, nlent->location);
|
||||
break;
|
||||
}
|
||||
cst = getstatus(tmr->addr);
|
||||
if (cst->trystat)
|
||||
laststat = cst->trystat;
|
||||
}
|
||||
Syslog('s', "Last connection status %d", laststat);
|
||||
|
||||
if (nlent)
|
||||
rdoptions(TRUE);
|
||||
|
||||
@ -188,8 +197,6 @@ int rx_emsi(char *data)
|
||||
return rxtcp();
|
||||
else if (emsi_local_protos & PROT_HYD)
|
||||
return hydra(0);
|
||||
// else if (emsi_local_protos & PROT_JAN)
|
||||
// return janus();
|
||||
else
|
||||
return rxwazoo();
|
||||
}
|
||||
@ -198,8 +205,8 @@ int rx_emsi(char *data)
|
||||
|
||||
int tx_emsi(char *data)
|
||||
{
|
||||
int rc;
|
||||
|
||||
int rc;
|
||||
|
||||
emsi_local_lcodes = LCODE_PUA | LCODE_RH1;
|
||||
emsi_remote_lcodes = 0;
|
||||
|
||||
|
@ -528,7 +528,7 @@ int pollnode(faddr *addr, int stop)
|
||||
(cst->trystat == MBERR_UNKNOWN_SESSION) ||
|
||||
(cst->trystat == MBERR_NO_PORT_AVAILABLE) ||
|
||||
(cst->trystat == MBERR_MODEM_ERROR)) {
|
||||
putstatus(addr, 0, 0);
|
||||
putstatus(addr, 0, -1);
|
||||
}
|
||||
CreateSema((char *)"scanout");
|
||||
}
|
||||
@ -547,7 +547,7 @@ int reset(faddr *addr)
|
||||
if (addr == NULL)
|
||||
return 0;
|
||||
|
||||
putstatus(addr, 0, 0);
|
||||
putstatus(addr, 0, -1);
|
||||
Syslog('+', "Reset try-counter for %s", ascfnode(addr, 0x1f));
|
||||
if (!do_quiet)
|
||||
printf("Reset try-counter for %s\n", ascfnode(addr, 0x1f));
|
||||
|
@ -4,7 +4,7 @@
|
||||
* Purpose ...............: Fidonet mailer
|
||||
*
|
||||
*****************************************************************************
|
||||
* Copyright (C) 1997-2004
|
||||
* Copyright (C) 1997-2005
|
||||
*
|
||||
* Michiel Broek FIDO: 2:280/2802
|
||||
* Beekmansbos 10
|
||||
@ -53,6 +53,7 @@ node *nlent = NULL;
|
||||
fa_list *remote = NULL;
|
||||
int session_flags;
|
||||
int remote_flags;
|
||||
int laststat = 0; /* Last session status with remote */
|
||||
|
||||
int tx_define_type(void);
|
||||
int rx_define_type(void);
|
||||
|
@ -52,6 +52,7 @@
|
||||
#include "dietifna.h"
|
||||
#include "yoohoo.h"
|
||||
#include "inbound.h"
|
||||
#include "callstat.h"
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------*/
|
||||
@ -113,6 +114,7 @@ typedef struct _Hello {
|
||||
|
||||
extern int Loaded;
|
||||
extern pid_t mypid;
|
||||
extern int laststat;
|
||||
|
||||
Hello hello2;
|
||||
Hello gethello2(unsigned char[]);
|
||||
@ -124,6 +126,7 @@ int rx_yoohoo(void)
|
||||
int rc, protect = FALSE;
|
||||
unsigned short capabilities,localcaps;
|
||||
char *pwd = NULL;
|
||||
callstat *cst;
|
||||
|
||||
pwd = NULL;
|
||||
y_akas = 0;
|
||||
@ -169,6 +172,11 @@ int rx_yoohoo(void)
|
||||
strncpy(history.location, nlent->location, 35);
|
||||
UserCity(mypid, nlent->sysop, nlent->location);
|
||||
}
|
||||
cst = getstatus(remote->addr);
|
||||
if (cst->trystat)
|
||||
laststat = cst->trystat;
|
||||
Syslog('s', "Last session status %d", laststat);
|
||||
|
||||
if (nlent)
|
||||
rdoptions(Loaded);
|
||||
|
||||
|
Reference in New Issue
Block a user