From 4e6faee53cbcd353b8af421a2bc510391c6d04f0 Mon Sep 17 00:00:00 2001 From: Michiel Broek Date: Sat, 12 Apr 2003 18:36:43 +0000 Subject: [PATCH] Changed mbcico raw ifcico protocol logging --- ChangeLog | 1 + mbcico/tcp.c | 121 +++++----- mbcico/tcpproto.c | 603 +++++++++++++++++++++++----------------------- 3 files changed, 365 insertions(+), 360 deletions(-) diff --git a/ChangeLog b/ChangeLog index b26e6b0f..cd0d486b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -23,6 +23,7 @@ v0.37.3 09-Apr-2003. mbcico: Removed some heavy debug code from ttyio functions to increase throughput. + Standarized raw ifcico protocol logging. lang: New language prompt number 17. diff --git a/mbcico/tcp.c b/mbcico/tcp.c index 9e29aa2f..2c53bc57 100644 --- a/mbcico/tcp.c +++ b/mbcico/tcp.c @@ -4,7 +4,7 @@ * Purpose ...............: Fidonet mailer * ***************************************************************************** - * Copyright (C) 1997-2002 + * Copyright (C) 1997-2003 * * Michiel Broek FIDO: 2:280/2802 * Beekmansbos 10 @@ -55,84 +55,81 @@ extern int made_request; int rxtcp(void) { - int rc = 0; - fa_list *eff_remote, tmpl; - file_list *tosend = NULL, **tmpfl; + int rc = 0; + fa_list *eff_remote, tmpl; + file_list *tosend = NULL, **tmpfl; - Syslog('+', "Start TCP session"); + Syslog('+', "TCP: inbound session start"); - if (emsi_remote_lcodes & LCODE_NPU) { - Syslog('+', "Remote requested \"no pickup\", no send"); - eff_remote=NULL; - } else if (emsi_remote_lcodes & LCODE_PUP) { - Syslog('+', "Remote requested \"pickup primary\""); - tmpl.addr=remote->addr; - tmpl.next=NULL; - eff_remote=&tmpl; - } else - eff_remote=remote; + if (emsi_remote_lcodes & LCODE_NPU) { + Syslog('+', "Remote requested \"no pickup\", no send"); + eff_remote=NULL; + } else if (emsi_remote_lcodes & LCODE_PUP) { + Syslog('+', "Remote requested \"pickup primary\""); + tmpl.addr=remote->addr; + tmpl.next=NULL; + eff_remote=&tmpl; + } else + eff_remote=remote; - tosend = create_filelist(eff_remote, (char *)ALL_MAIL, 0); + tosend = create_filelist(eff_remote, (char *)ALL_MAIL, 0); - if ((rc=tcprcvfiles()) == 0) { - if ((emsi_local_opts & OPT_NRQ) == 0) { - for (tmpfl = &tosend; *tmpfl; tmpfl = &((*tmpfl)->next)); - *tmpfl = respond_wazoo(); - } - - if ((tosend != NULL) || ((emsi_remote_lcodes & LCODE_NPU) == 0)) - rc = tcpsndfiles(tosend); - - if ((rc == 0) && (made_request)) { - Syslog('+', "Freq was made, trying to receive files"); - rc = tcprcvfiles(); - } + if ((rc=tcprcvfiles()) == 0) { + if ((emsi_local_opts & OPT_NRQ) == 0) { + for (tmpfl = &tosend; *tmpfl; tmpfl = &((*tmpfl)->next)); + *tmpfl = respond_wazoo(); } - tidy_filelist(tosend,(rc == 0)); + if ((tosend != NULL) || ((emsi_remote_lcodes & LCODE_NPU) == 0)) + rc = tcpsndfiles(tosend); - if (rc) - WriteError("TCP session failed: rc=%d", rc); - else - Syslog('+', "TCP session completed"); - return rc; + if ((rc == 0) && (made_request)) { + Syslog('+', "TCP: freq was made, trying to receive files"); + rc = tcprcvfiles(); + } + } + + tidy_filelist(tosend,(rc == 0)); + + if (rc) + WriteError("TCP: session failed: rc=%d", rc); + else + Syslog('+', "TCP: session completed"); + return rc; } int txtcp(void) { - int rc=0; - file_list *tosend = NULL, *respond = NULL; - char *nonhold_mail; + int rc=0; + file_list *tosend = NULL, *respond = NULL; + char *nonhold_mail; - Syslog('+', "Start TCP session"); + Syslog('+', "TCP: outbound session start"); -// if (localoptions & NOHOLD) - nonhold_mail = (char *)ALL_MAIL; -// else -// nonhold_mail = (char *)NONHOLD_MAIL; - if (emsi_remote_lcodes & LCODE_HAT) { - Syslog('+', "Remote asked to \"hold all traffic\", no send"); - tosend=NULL; - } else - tosend = create_filelist(remote,nonhold_mail,0); + nonhold_mail = (char *)ALL_MAIL; + if (emsi_remote_lcodes & LCODE_HAT) { + Syslog('+', "Remote asked to \"hold all traffic\", no send"); + tosend=NULL; + } else + tosend = create_filelist(remote,nonhold_mail,0); - if ((tosend != NULL) || ((emsi_remote_lcodes & LCODE_NPU) == 0)) - rc = tcpsndfiles(tosend); - if (rc == 0) - if ((rc = tcprcvfiles()) == 0) - if ((emsi_local_opts & OPT_NRQ) == 0) - if ((respond = respond_wazoo())) - rc = tcpsndfiles(respond); + if ((tosend != NULL) || ((emsi_remote_lcodes & LCODE_NPU) == 0)) + rc = tcpsndfiles(tosend); + if (rc == 0) + if ((rc = tcprcvfiles()) == 0) + if ((emsi_local_opts & OPT_NRQ) == 0) + if ((respond = respond_wazoo())) + rc = tcpsndfiles(respond); - tidy_filelist(tosend,(rc == 0)); - tidy_filelist(respond,0); + tidy_filelist(tosend,(rc == 0)); + tidy_filelist(respond,0); - if (rc) - WriteError("TCP session failed: rc=%d", rc); - else - Syslog('+', "TCP session completed"); - return rc; + if (rc) + WriteError("TCP: session failed: rc=%d", rc); + else + Syslog('+', "TCP: session completed"); + return rc; } diff --git a/mbcico/tcpproto.c b/mbcico/tcpproto.c index 01ed0595..e0688cdf 100644 --- a/mbcico/tcpproto.c +++ b/mbcico/tcpproto.c @@ -4,7 +4,7 @@ * Purpose ...............: Fidonet mailer * ***************************************************************************** - * Copyright (C) 1997-2001 + * Copyright (C) 1997-2003 * * Michiel Broek FIDO: 2:280/2802 * Beekmansbos 10 @@ -79,403 +79,410 @@ extern char *ttystat[]; int tcpsndfiles(file_list *lst) { - int rc = 0, maxrc = 0; - file_list *tmpf; + int rc = 0, maxrc = 0; + file_list *tmpf; - Syslog('+', "Start TCP send%s",lst?"":" (dummy)"); + Syslog('+', "TCP: start send files"); - if (getsync()) { - WriteError("Can't get synchronization"); - return MBERR_FTRANSFER; - } + if (getsync()) { + WriteError("TCP: can't get synchronization"); + return MBERR_FTRANSFER; + } - for (tmpf = lst; tmpf && (maxrc == 0); tmpf = tmpf->next) { - if (tmpf->remote) { - rc = sendtfile(tmpf->local,tmpf->remote); - rc = abs(rc); - if (rc > maxrc) - maxrc=rc; - if (rc == 0) - execute_disposition(tmpf); - } else - if (maxrc == 0) - execute_disposition(tmpf); - } - - if (maxrc < 2) { - rc = finsend(); - rc = abs(rc); - } - - if (rc > maxrc) + for (tmpf = lst; tmpf && (maxrc == 0); tmpf = tmpf->next) { + if (tmpf->remote) { + rc = sendtfile(tmpf->local,tmpf->remote); + rc = abs(rc); + if (rc > maxrc) maxrc=rc; - - if (rc) { - WriteError("TCP send error: rc=%d",maxrc); - return MBERR_FTRANSFER; + if (rc == 0) + execute_disposition(tmpf); } else - return 0; + if (maxrc == 0) + execute_disposition(tmpf); + } + + if (maxrc < 2) { + rc = finsend(); + rc = abs(rc); + } + + if (rc > maxrc) + maxrc=rc; + + if (rc) { + WriteError("TCP: send error: rc=%d",maxrc); + return MBERR_FTRANSFER; + } + + Syslog('+', "TCP: send files completed"); + return 0; } int tcprcvfiles(void) { - int rc, bufl; - long filesize, filetime; - char *filename, *p; + int rc, bufl; + long filesize, filetime; + char *filename, *p; + + Syslog('+', "TCP: start receive files"); + if (getsync()) { + WriteError("TCP: can't get synchronization"); + return MBERR_FTRANSFER; + } - Syslog('+', "Start TCP receive"); - if (getsync()) { - WriteError("Can't get synchronization"); - return MBERR_FTRANSFER; - } next: - if ((rc = tcp_rblk(rxbuf, &bufl)) == 0) { - if (strncmp(rxbuf, "SN", 2) == 0) { - rc = tcp_sblk((char *)"RN", 2, TCP_CMD); - return rc; - } else if (*rxbuf == 'S') { - p = strchr(rxbuf+2, ' '); - if (p != NULL) - *p=0; - else - return 1; - filename = xstrcpy(rxbuf+2); - p++; - filesize = strtol(p, &p, 10); - filetime = strtol(++p, (char **)NULL, 10); - } else - return rc==0?1:rc; + if ((rc = tcp_rblk(rxbuf, &bufl)) == 0) { + if (strncmp(rxbuf, "SN", 2) == 0) { + rc = tcp_sblk((char *)"RN", 2, TCP_CMD); + return rc; + } else if (*rxbuf == 'S') { + p = strchr(rxbuf+2, ' '); + if (p != NULL) + *p=0; + else + return 1; + filename = xstrcpy(rxbuf+2); + p++; + filesize = strtol(p, &p, 10); + filetime = strtol(++p, (char **)NULL, 10); + } else + return rc==0?1:rc; - if (strlen(filename) && filesize && filetime) - rc = receivefile(filename,filetime,filesize); + if (strlen(filename) && filesize && filetime) + rc = receivefile(filename,filetime,filesize); - if (fout) { - if (closeit(0)) - WriteError("Error closing file"); - (void)tcp_sblk((char *)"FERROR",6,TCP_CMD); - } else - goto next; - } - - if (rc) { - WriteError("TCP receive error: rc=%d", rc); - return MBERR_FTRANSFER; + if (fout) { + if (closeit(0)) + WriteError("TCP: error closing file"); + (void)tcp_sblk((char *)"FERROR",6,TCP_CMD); } else - return 0; + goto next; + } + + if (rc) { + WriteError("TCP: receive error: rc=%d", rc); + return MBERR_FTRANSFER; + } + + Syslog('+', "TCP: receive files completed"); + return 0; } static int sendtfile(char *ln, char *rn) { - int rc=0; - struct stat st; - struct flock fl; - int bufl, sverr; - long offset; + int rc=0; + struct stat st; + struct flock fl; + int bufl, sverr; + long offset; - fl.l_type = F_RDLCK; - fl.l_whence = 0; - fl.l_start = 0L; - fl.l_len = 0L; + fl.l_type = F_RDLCK; + fl.l_whence = 0; + fl.l_start = 0L; + fl.l_len = 0L; - if ((in = fopen(ln,"r")) == NULL) { - sverr = errno; - if ((sverr == ENOENT) || (sverr == EINVAL)) { - Syslog('+', "File %s doesn't exist, removing", MBSE_SS(ln)); - return 0; - } else { - WriteError("$tcpsend: cannot open file %s, skipping", MBSE_SS(ln)); - return 1; - } - } - - if (fcntl(fileno(in), F_SETLK, &fl) != 0) { - Syslog('+', "$tcpsend: cannot lock file %s, skipping", MBSE_SS(ln)); - fclose(in); - return 1; - } - - if (stat(ln, &st) != 0) { - Syslog('+', "$tcpsend: cannot access \"%s\", skipping", MBSE_SS(ln)); - fclose(in); - return 1; - } - - if (st.st_size > 0) { - Syslog('+', "TCP send \"%s\" as \"%s\"", MBSE_SS(ln), MBSE_SS(rn)); - Syslog('+', "TCP size %lu bytes, dated %s", (unsigned long)st.st_size, date(st.st_mtime)); - gettimeofday(&starttime, &tz); + if ((in = fopen(ln,"r")) == NULL) { + sverr = errno; + if ((sverr == ENOENT) || (sverr == EINVAL)) { + Syslog('+', "TCP: file %s doesn't exist, removing", MBSE_SS(ln)); + return 0; } else { - Syslog('+', "File \"%s\" has 0 size, skiped",ln); - return 0; - } - - sprintf(txbuf,"S %s %lu %lu",rn,(unsigned long)st.st_size,st.st_mtime+(st.st_mtime%2)); - bufl = strlen(txbuf); - rc = tcp_sblk(txbuf, bufl, TCP_CMD); - rc = tcp_rblk(rxbuf, &bufl); - - if (strncmp(rxbuf,"RS",2) == 0) { - Syslog('+', "File %s already received, skipping",rn); - return 0; - } else if (strncmp(rxbuf,"RN",2) == 0) { - Syslog('+', "Remote refused file, aborting",rn); - return 2; - } else if (strncmp(rxbuf,"ROK",3) == 0) { - if (bufl > 3 && rxbuf[3]==' ') { - offset = strtol(rxbuf+4,(char **)NULL,10); - if (fseek(in,offset,SEEK_SET) != 0) { - WriteError("$tcpsend cannot seek in file %s",ln); - return 1; - } - } else - offset = 0; - } else - return rc; - - while ((bufl = fread(&txbuf, 1, 1024, in)) != 0) { - if ((rc = tcp_sblk(txbuf, bufl, TCP_DATA)) > 0) - break; + WriteError("$TCP: can't open file %s, skipping", MBSE_SS(ln)); + return 1; } + } + if (fcntl(fileno(in), F_SETLK, &fl) != 0) { + WriteError("$TCP: can't lock file %s, skipping", MBSE_SS(ln)); fclose(in); - if (rc == 0){ - strcpy(txbuf, "EOF"); - rc = tcp_sblk(txbuf, 3, TCP_CMD); - rc = tcp_rblk(rxbuf, &bufl); - } + return 1; + } - if (rc == 0 && strncmp(rxbuf,"FOK",3) == 0) { - gettimeofday(&endtime, &tz); - Syslog('a', "st_size %d, offset %d",st.st_size,offset); - Syslog('+', "TCP: OK %s", transfertime(starttime, endtime, st.st_size-offset, TRUE)); - sentbytes += (unsigned long)st.st_size - offset; - return 0; - } else if(strncmp(rxbuf,"FERROR",6) == 0){ - WriteError("$tcpsend remote file error",ln); - return rc==0?1:rc; + if (stat(ln, &st) != 0) { + WriteError("$TCP: can't access \"%s\", skipping", MBSE_SS(ln)); + fclose(in); + return 1; + } + + if (st.st_size > 0) { + Syslog('+', "TCP: send \"%s\" as \"%s\"", MBSE_SS(ln), MBSE_SS(rn)); + Syslog('+', "TCP: size %lu bytes, dated %s", (unsigned long)st.st_size, date(st.st_mtime)); + gettimeofday(&starttime, &tz); + } else { + Syslog('+', "TCP: file \"%s\" has 0 size, skiped",ln); + return 0; + } + + sprintf(txbuf,"S %s %lu %lu",rn,(unsigned long)st.st_size,st.st_mtime+(st.st_mtime%2)); + bufl = strlen(txbuf); + rc = tcp_sblk(txbuf, bufl, TCP_CMD); + rc = tcp_rblk(rxbuf, &bufl); + + if (strncmp(rxbuf,"RS",2) == 0) { + Syslog('+', "TCP: file %s already received, skipping",rn); + return 0; + } else if (strncmp(rxbuf,"RN",2) == 0) { + Syslog('+', "TCP: remote refused file, aborting",rn); + return 2; + } else if (strncmp(rxbuf,"ROK",3) == 0) { + if (bufl > 3 && rxbuf[3]==' ') { + offset = strtol(rxbuf+4,(char **)NULL,10); + if (fseek(in,offset,SEEK_SET) != 0) { + WriteError("$TCP: can't seek offset %ld in file %s", offset, ln); + return 1; + } } else - return rc==0?1:rc; + offset = 0; + } else + return rc; + + while ((bufl = fread(&txbuf, 1, 1024, in)) != 0) { + if ((rc = tcp_sblk(txbuf, bufl, TCP_DATA)) > 0) + break; + } + + fclose(in); + if (rc == 0){ + strcpy(txbuf, "EOF"); + rc = tcp_sblk(txbuf, 3, TCP_CMD); + rc = tcp_rblk(rxbuf, &bufl); + } + + if (rc == 0 && strncmp(rxbuf,"FOK",3) == 0) { + gettimeofday(&endtime, &tz); + Syslog('a', "st_size %d, offset %d",st.st_size,offset); + Syslog('+', "TCP: OK %s", transfertime(starttime, endtime, st.st_size-offset, TRUE)); + sentbytes += (unsigned long)st.st_size - offset; + return 0; + } else if(strncmp(rxbuf,"FERROR",6) == 0){ + WriteError("TCP: remote file error",ln); + return rc==0?1:rc; + } else + return rc==0?1:rc; } static int resync(off_t off) { - sprintf(txbuf,"ROK %ld",(long)off); - return 0; + sprintf(txbuf,"ROK %ld",(long)off); + return 0; } static int closeit(int success) { - int rc; + int rc; - rc = closefile(success); - fout = NULL; - sbytes = rxbytes - sbytes; - gettimeofday(&endtime, &tz); + rc = closefile(success); + fout = NULL; + sbytes = rxbytes - sbytes; + gettimeofday(&endtime, &tz); - if (success) - Syslog('+', "TCP: OK %s", transfertime(starttime, endtime, sbytes, FALSE)); - else - Syslog('+', "TCP: dropped after %ld bytes", sbytes); - rcvdbytes += sbytes; - return rc; + if (success) + Syslog('+', "TCP: OK %s", transfertime(starttime, endtime, sbytes, FALSE)); + else + Syslog('+', "TCP: dropped after %ld bytes", sbytes); + rcvdbytes += sbytes; + return rc; } static int finsend(void) { - int rc,bufl; + int rc,bufl; - rc = tcp_sblk((char *)"SN",2,TCP_CMD); - if(rc) - return rc; + rc = tcp_sblk((char *)"SN",2,TCP_CMD); + if(rc) + return rc; - rc = tcp_rblk(rxbuf,&bufl); - if (strncmp(rxbuf, "RN", 2) == 0) - return rc; - else - return 1; + rc = tcp_rblk(rxbuf,&bufl); + if (strncmp(rxbuf, "RN", 2) == 0) + return rc; + else + return 1; } static int receivefile(char *fn, time_t ft, off_t fs) { - int rc, bufl; + int rc, bufl; - Syslog('+', "TCP receive \"%s\" (%lu bytes) dated %s",fn,fs,date(ft)); - strcpy(txbuf,"ROK"); - fout = openfile(fn, ft, fs, &rxbytes, resync); - gettimeofday(&starttime, &tz); - sbytes = rxbytes; + Syslog('+', "TCP: receive \"%s\" (%lu bytes) dated %s",fn,fs,date(ft)); + strcpy(txbuf,"ROK"); + fout = openfile(fn, ft, fs, &rxbytes, resync); + gettimeofday(&starttime, &tz); + sbytes = rxbytes; - if (fs == rxbytes) { - Syslog('+', "Skipping %s", fn); - fout = NULL; - rc = tcp_sblk((char *)"RS",2,TCP_CMD); - return rc; - } + if (fs == rxbytes) { + Syslog('+', "TCP: skipping %s", fn); + fout = NULL; + rc = tcp_sblk((char *)"RS",2,TCP_CMD); + return rc; + } - if (!fout) - return 1; + if (!fout) + return 1; - bufl = strlen(txbuf); - rc = tcp_sblk(txbuf,bufl,TCP_CMD); + bufl = strlen(txbuf); + rc = tcp_sblk(txbuf,bufl,TCP_CMD); - while ((rc = tcp_rblk(rxbuf, &bufl)) == 0) { - if (rx_type == TCP_CMD) - break; - if (fwrite(rxbuf, 1, bufl, fout) != bufl) - break; - rxbytes += bufl; - } + while ((rc = tcp_rblk(rxbuf, &bufl)) == 0) { + if (rx_type == TCP_CMD) + break; + if (fwrite(rxbuf, 1, bufl, fout) != bufl) + break; + rxbytes += bufl; + } - if (rc) - return rc; + if (rc) + return rc; - if (rx_type == TCP_CMD && bufl == 3 && strncmp(rxbuf,"EOF",3) == 0) { - if (ftell(fout) == fs) { - closeit(1); - rc = tcp_sblk((char *)"FOK",3,TCP_CMD); - return rc; - } else - return 1; - } else - return 1; + if (rx_type == TCP_CMD && bufl == 3 && strncmp(rxbuf,"EOF",3) == 0) { + if (ftell(fout) == fs) { + closeit(1); + rc = tcp_sblk((char *)"FOK",3,TCP_CMD); + return rc; + } else + return 1; + } else + return 1; } static int tcp_sblk(char *buf, int len, int typ) { - Nopper(); - if (typ == TCP_CMD) - Syslog('a', "tcp_sblk: cmd: %s", buf); - else - Syslog('a', "tcp_sblk: data: %d bytes", len); + Nopper(); + if (typ == TCP_CMD) + Syslog('a', "tcp_sblk: cmd: %s", buf); + else + Syslog('a', "tcp_sblk: data: %d bytes", len); - PUTCHAR(0xc6); - PUTCHAR(typ); - PUTCHAR((len >> 8) & 0x0ff); - PUTCHAR(len & 0x0ff); - PUT(buf, len); - PUTCHAR(0x6c); - FLUSHOUT(); - if (tty_status) - WriteError("TCP send error: %s", ttystat[tty_status]); - else - Syslog('A', "tcp_sblk: complete"); - return tty_status; + PUTCHAR(0xc6); + PUTCHAR(typ); + PUTCHAR((len >> 8) & 0x0ff); + PUTCHAR(len & 0x0ff); + PUT(buf, len); + PUTCHAR(0x6c); + FLUSHOUT(); + + if (tty_status) + WriteError("TCP: send error: %s", ttystat[tty_status]); + return tty_status; } static int tcp_rblk(char *buf, int *len) { - int c; + int c; - Syslog('A', "tcp_rblk: start"); - *len = 0; + *len = 0; - /* - * Wait up to 3 minutes for the header - */ - c = GETCHAR(180); - if (tty_status) - goto to; - if (c != 0xc6) { - WriteError("tcp_rblk: got %d instead of block header", c); - return c; - } + /* + * Wait up to 3 minutes for the header + */ + c = GETCHAR(180); + if (tty_status) + goto to; + if (c != 0xc6) { + WriteError("tcp_rblk: got %d instead of block header", c); + return c; + } - /* - * Get block type - */ - c = GETCHAR(120); - if (tty_status) - goto to; - rx_type = c; - if (c != TCP_CMD && c != TCP_DATA) { - WriteError("tcp_rblk: got %d character instead of DATA/CMD", c); - return c; - } + /* + * Get block type + */ + c = GETCHAR(120); + if (tty_status) + goto to; + rx_type = c; + if (c != TCP_CMD && c != TCP_DATA) { + WriteError("tcp_rblk: got %d character instead of DATA/CMD", c); + return c; + } - /* - * Get block length - */ - c = GETCHAR(120); - if (tty_status) - goto to; - *len = c << 8; - c = GETCHAR(120); - if (tty_status) - goto to; - *len += c; - Syslog('A', "tcp_rblk: expecting %d bytes", *len); + /* + * Get block length + */ + c = GETCHAR(120); + if (tty_status) + goto to; + *len = c << 8; + c = GETCHAR(120); + if (tty_status) + goto to; + *len += c; - /* - * Get actual data block - */ - GET(buf, *len, 120); - if (tty_status) - goto to; + if (*len > 2048) { + WriteError("TCP: remote sends too large block: %d bytes", len); + return 1; + } - /* - * Get block trailer - */ - c = GETCHAR(120); - if (tty_status) - goto to; - if (c != 0x6c) - return c; + /* + * Get actual data block + */ + GET(buf, *len, 120); + if (tty_status) + goto to; - if (rx_type == TCP_CMD) { - buf[*len] = '\0'; - Syslog('a', "tcp_rblk: cmd: %s", buf); - } else - Syslog('a', "tcp_rblk: data: %d bytes", *len); + /* + * Get block trailer + */ + c = GETCHAR(120); + if (tty_status) + goto to; + if (c != 0x6c) + return c; + + if (rx_type == TCP_CMD) { + buf[*len] = '\0'; + Syslog('a', "tcp_rblk: cmd: %s", buf); + } else + Syslog('a', "tcp_rblk: data: %d bytes", *len); to: - if (tty_status) - WriteError("TCP receive error: %s", ttystat[tty_status]); - return tty_status; + if (tty_status) + WriteError("TCP: receive error: %s", ttystat[tty_status]); + return tty_status; } static int getsync(void) { - int c; + int c; - PUTCHAR(0xaa); - PUTCHAR(0x55); - FLUSHOUT(); - Syslog('a', "getsync try to synchronize"); + PUTCHAR(0xaa); + PUTCHAR(0x55); + FLUSHOUT(); + Syslog('a', "getsync try to synchronize"); gs: + if (tty_status) { + WriteError("TCP: getsync failed %s", ttystat[tty_status]); + return 1; + } + while ((c = GETCHAR(120)) != 0xaa) if (tty_status) { - WriteError("TCP getsync failed %s", ttystat[tty_status]); - return 1; + WriteError("TCP: getsync failed: %s", ttystat[tty_status]); + return 1; } - while ((c = GETCHAR(180)) != 0xaa) - if (tty_status) { - WriteError("TCP getsync failed: %s", ttystat[tty_status]); - return 1; - } - if ((c = GETCHAR(120)) != 0x55) - goto gs; + if ((c = GETCHAR(120)) != 0x55) + goto gs; - Syslog('a', "getsync done, tty_status %s", ttystat[tty_status]); - return tty_status; + Syslog('a', "getsync done, tty_status %s", ttystat[tty_status]); + return tty_status; }