mirror of https://github.com/wb2osz/direwolf.git
Merge branch 'fix/kissattach_issue' of git://github.com/la5nta/direwolf into la5nta-fix/kissattach_issue
This commit is contained in:
commit
958f210843
23
kiss.c
23
kiss.c
|
@ -884,25 +884,28 @@ static int kiss_get (/* MYFDTYPE fd*/ void )
|
||||||
#else /* Linux/Cygwin version */
|
#else /* Linux/Cygwin version */
|
||||||
|
|
||||||
int n = 0;
|
int n = 0;
|
||||||
|
fd_set fd_in;
|
||||||
|
int rc;
|
||||||
|
|
||||||
while ( n == 0 ) {
|
while ( n == 0 ) {
|
||||||
|
/* Reading from master fd of the pty before the client has connected leads to trouble with kissattach. */
|
||||||
|
/* Use select to check if the slave has sent any data before trying to read from it. */
|
||||||
|
FD_ZERO(&fd_in);
|
||||||
|
rc = select(pt_master_fd + 1, &fd_in, NULL, &fd_in, NULL);
|
||||||
|
|
||||||
n = read(pt_master_fd, &ch, (size_t)1);
|
if (rc == 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (n != 1) {
|
if (rc == MYFDERROR
|
||||||
|
|| (n = read(pt_master_fd, &ch, (size_t)1)) != 1)
|
||||||
|
{
|
||||||
|
|
||||||
text_color_set(DW_COLOR_ERROR);
|
text_color_set(DW_COLOR_ERROR);
|
||||||
dw_printf ("\nError receiving kiss message from client application. Closing %s.\n\n", pt_slave_name);
|
dw_printf ("\nError receiving kiss message from client application. Closing %s.\n\n", pt_slave_name);
|
||||||
perror ("");
|
perror ("");
|
||||||
|
|
||||||
/* Message added between 1.1 beta test and final version 1.1 */
|
|
||||||
|
|
||||||
/* TODO: Determine root cause and find proper solution. */
|
|
||||||
|
|
||||||
dw_printf ("This is a known problem that sometimes shows up when using with kissattach.\n");
|
|
||||||
dw_printf ("There are a couple work-arounds described in the Dire Wolf User Guide\n");
|
|
||||||
dw_printf ("and the Raspberry Pi APRS documents.\n");
|
|
||||||
|
|
||||||
close (pt_master_fd);
|
close (pt_master_fd);
|
||||||
|
|
||||||
pt_master_fd = MYFDERROR;
|
pt_master_fd = MYFDERROR;
|
||||||
|
|
Loading…
Reference in New Issue