]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
fix user-mode PPS end of line timestamp, and use wait I/O
authorDave Hart <hart@ntp.org>
Sun, 19 Feb 2012 16:30:28 +0000 (16:30 +0000)
committerDave Hart <hart@ntp.org>
Sun, 19 Feb 2012 16:30:28 +0000 (16:30 +0000)
  completion timestamp not read completion.

bk: 4f4123a4s9ifns6WnPiMvbWskhefqQ

ports/winnt/ntpd/ntp_iocompletionport.c

index 6a21105ba764affd4bcea22009a409a70aea26a2..cbec92e364d87f3c6336b472ae5f0721690efd27 100644 (file)
@@ -625,6 +625,8 @@ OnSerialWaitComplete(
                lpo->flTsFlag = 1;
                QueueSerialRead(rio, buff, lpo);
        } else if (EV_RXCHAR & lpo->com_events) {       /* raw discipline */
+               lpo->FlagTime = lpo->RecvTime;
+               lpo->flTsFlag = 1;
                QueueRawSerialRead(rio, buff, lpo);
        } else {                                        /* idle... */
                QueueSerialWait(rio, buff, lpo);
@@ -656,7 +658,7 @@ QueueSerialRead(
 {
        BOOL   rc;
 
-       lpo->onIoDone = OnSerialReadComplete;
+       lpo->onIoDone = &OnSerialReadComplete;
        lpo->recv_buf = buff;
        lpo->flRawMem = 0;
        lpo->rio      = rio;
@@ -763,6 +765,7 @@ OnSerialReadWorker(void * ctx)
                        obuf->receiver    = &process_refclock_packet;
                        obuf->dstadr      = NULL;
                        obuf->recv_peer   = rio->srcclock;
+                       set_serial_recv_time(obuf, lpo);
 
                        /*
                         * Copy data to new buffer, convert CR to LF on
@@ -875,9 +878,9 @@ OnRawSerialReadComplete(
        if (lpo->byteCount > 0) {
                buff->recv_length = (int)lpo->byteCount;
                buff->dstadr      = NULL;
-               buff->recv_time   = lpo->RecvTime;
                buff->receiver    = process_refclock_packet;
                buff->recv_peer   = rio->srcclock;
+               set_serial_recv_time(buff, lpo);
                add_full_recv_buffer(buff);
                SetEvent(WaitableIoEventHandle);
                buff = get_free_recv_buffer_alloc();