libpurple/stun.c

changeset 39822
2b8005b0a78c
parent 39464
e8cb99e0d91f
child 40611
22d3e966281b
--- a/libpurple/stun.c	Tue Sep 10 06:18:45 2019 +0000
+++ b/libpurple/stun.c	Tue Sep 10 02:49:09 2019 -0400
@@ -119,7 +119,7 @@
 		/* set unknown */
 		nattype.status = PURPLE_STUN_STATUS_UNKNOWN;
 
-		nattype.lookup_time = time(NULL);
+		nattype.lookup_time = g_get_monotonic_time();
 
 		/* callbacks */
 		do_callbacks();
@@ -217,7 +217,7 @@
 		purple_debug_info("stun", "got public ip %s\n", nattype.publicip);
 		nattype.status = PURPLE_STUN_STATUS_DISCOVERED;
 		nattype.type = PURPLE_STUN_NAT_TYPE_UNKNOWN_NAT;
-		nattype.lookup_time = time(NULL);
+		nattype.lookup_time = g_get_monotonic_time();
 
 		/* is it a NAT? */
 
@@ -269,7 +269,7 @@
 
 	if(fd < 0) {
 		nattype.status = PURPLE_STUN_STATUS_UNKNOWN;
-		nattype.lookup_time = time(NULL);
+		nattype.lookup_time = g_get_monotonic_time();
 		do_callbacks();
 		g_resolver_free_addresses(ld->addresses);
 		g_free(ld);
@@ -306,7 +306,7 @@
 			(struct sockaddr *)&(sc->addr),
 			sizeof(struct sockaddr_in)) < (gssize)sizeof(struct stun_header)) {
 		nattype.status = PURPLE_STUN_STATUS_UNKNOWN;
-		nattype.lookup_time = time(NULL);
+		nattype.lookup_time = g_get_monotonic_time();
 		do_callbacks();
 		close_stun_conn(sc);
 		return;
@@ -328,7 +328,7 @@
 			res, &error);
 	if(error != NULL) {
 		nattype.status = PURPLE_STUN_STATUS_UNDISCOVERED;
-		nattype.lookup_time = time(NULL);
+		nattype.lookup_time = g_get_monotonic_time();
 
 		do_callbacks();
 
@@ -339,7 +339,7 @@
 	ld->port = GPOINTER_TO_INT(data);
 	if (!purple_network_listen_range(12108, 12208, AF_UNSPEC, SOCK_DGRAM, TRUE, hbn_listen_cb, ld)) {
 		nattype.status = PURPLE_STUN_STATUS_UNKNOWN;
-		nattype.lookup_time = time(NULL);
+		nattype.lookup_time = g_get_monotonic_time();
 
 		do_callbacks();
 
@@ -411,8 +411,9 @@
 
 		/* If we don't have a successful status and it has been 5
 		   minutes since we last did a lookup, redo the lookup */
-		if (nattype.status != PURPLE_STUN_STATUS_DISCOVERED
-				&& (time(NULL) - nattype.lookup_time) > 300) {
+		if (nattype.status != PURPLE_STUN_STATUS_DISCOVERED &&
+		    (g_get_monotonic_time() - nattype.lookup_time) >
+		            300 * G_USEC_PER_SEC) {
 			use_cached_result = FALSE;
 		}
 
@@ -425,7 +426,7 @@
 
 	if(!servername || (strlen(servername) < 2)) {
 		nattype.status = PURPLE_STUN_STATUS_UNKNOWN;
-		nattype.lookup_time = time(NULL);
+		nattype.lookup_time = g_get_monotonic_time();
 		if(cb)
 			g_timeout_add(10, call_callback, cb);
 		return &nattype;

mercurial