[pkg-fso-commits] [SCM] FSO frameworkd Debian packaging branch, master, updated. milestone4-368-g700ab82

Jan Luebbe jluebbe at debian.org
Mon Feb 2 18:51:39 UTC 2009


The following commit has been merged in the master branch:
commit 7a56ea1bfc59208072fbe9fbb4ad15389d92eb13
Author: Jan Luebbe <jluebbe at debian.org>
Date:   Wed Dec 17 21:25:48 2008 +0100

    otimed: fix blocking otimed without connectivity

diff --git a/framework/subsystems/otimed/otimed.py b/framework/subsystems/otimed/otimed.py
index ef8beee..5207190 100644
--- a/framework/subsystems/otimed/otimed.py
+++ b/framework/subsystems/otimed/otimed.py
@@ -73,21 +73,29 @@ class GPSTimeSource( TimeSource ):
 #============================================================================#
 class NTPTimeSource( TimeSource ):
 #============================================================================#
-    def __init__( self, bus, server = "134.169.172.1", interval = 70 ):
+    def __init__( self, bus, server = "134.169.172.1", interval = 600 ):
         TimeSource.__init__( self, bus )
         self.server = server
         self.interval = interval
+        self.socket = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
+        self.socket.bind( ('', 123) )
+        self.socket.setblocking( False )
         self.updateTimeout = gobject.timeout_add_seconds( self.interval, self._handleUpdateTimeout )
+        self.dataWatch = gobject.io_add_watch( self.socket.makefile(), gobject.IO_IN, self._handleData )
+        self._handleUpdateTimeout()
 
     def _handleUpdateTimeout( self ):
         logger.debug( "NTP: requesting timestamp" )
         self.offset = None
         # FIXME do everything async
-        epoch = 2208988800L
-        client = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
         data = '\x1b' + 47 * '\0'
-        client.sendto( data, ( self.server, 123 ))
-        data, address = client.recvfrom( 1024 )
+        self.socket.sendto( data, ( self.server, 123 ))
+        # reenable timeout
+        return True
+
+    def _handleData( self, source, condition ):
+        epoch = 2208988800L
+        data, address = self.socket.recvfrom( 1024 )
         if data:
             s, f = struct.unpack( '!12I', data )[10:12]
             s -= epoch
@@ -97,8 +105,6 @@ class NTPTimeSource( TimeSource ):
         else:
             self.offset = None
             logger.warning( "NTP: no timestamp received" )
-        # reenable timeout
-        return True
 
 #============================================================================#
 class Time( dbus.service.Object ):
@@ -113,7 +119,7 @@ class Time( dbus.service.Object ):
         self.sources.append( GPSTimeSource( self.bus ) )
         self.sources.append( NTPTimeSource( self.bus ) )
 
-        self.interval = 80
+        self.interval = 90
         self.updateTimeout = gobject.timeout_add_seconds( self.interval, self._handleUpdateTimeout )
 
     def _handleUpdateTimeout( self ):

-- 
FSO frameworkd Debian packaging



More information about the pkg-fso-commits mailing list