Flush serial port before sending sync pattern
diff --git a/programs/x509/cert_write.c b/programs/x509/cert_write.c
index 506d1e3..94e88d4 100644
--- a/programs/x509/cert_write.c
+++ b/programs/x509/cert_write.c
@@ -1057,7 +1057,7 @@
size_t tx_buf_len, unsigned char * rx_buf, size_t rx_buf_len,
size_t * rx_len )
{
- char comm_name[20];
+ char c, comm_name[20];
HANDLE hComm;
DCB dcbConfig;
COMMTIMEOUTS commTimeout;
@@ -1081,11 +1081,6 @@
if( GetCommState( hComm, &dcbConfig ) )
{
- /*
- dcbConfig.fBinary = TRUE;
- dcbConfig.fParity = TRUE;
- */
-
dcbConfig.BaudRate = REMOTE_KEY_SERIAL_BAUD;
dcbConfig.Parity = NOPARITY;
dcbConfig.ByteSize = 8;
@@ -1123,6 +1118,8 @@
break;
+ /* Flush data on serial before sending sync pattern */
+ while( ReadFile( hComm, &c, sizeof(c), &xfer_len, NULL ) && xfer_len != 0 );
/* Sync with peer */
if( !WriteFile( hComm, REMOTE_KEY_MAGIC_PATTERN, strlen(REMOTE_KEY_MAGIC_PATTERN),
&xfer_len, NULL ) )
@@ -1130,8 +1127,6 @@
while( sync_pattern_idx != strlen(REMOTE_KEY_MAGIC_PATTERN) )
{
- char c;
-
if( !ReadFile( hComm, &c, sizeof(c), &xfer_len, NULL ) )
break;
if ( c == REMOTE_KEY_MAGIC_PATTERN[sync_pattern_idx] )