[tor-dev] [Patch] or/networkstatus.c

Gisle Vanem gvanem at broadpark.no
Sun Jul 31 11:10:58 UTC 2011


Hi list.

In or/networkstatus.c there is a "#if 0" block inside the macro 
"SMARTLIST_FOREACH_JOIN". Not all compilers handle such contructs. 

In the prosess of making solution/projects file for "MS Visual C++ 2010 Express",
I hit this problem (cl Version 16.00.30319.01). Can you please accept the 
following patch:

diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c
index 2586ce6..d8d6680 100644
--- a/src/or/networkstatus.c
+++ b/src/or/networkstatus.c
@@ -2001,19 +2001,25 @@ routers_update_status_from_consensus_networkstatus(smartlist_t *routers,

   routers_sort_by_identity(routers);

+  /* Since not all compilers handles '#' inside macros, we use a helper-macro. */
+#if 0
+  #define CHECK_ROUTER_PURPOSE() do { \
+    /* We have no routerstatus for this router. Clear flags and skip it. */ \
+    if (!authdir) { \
+      if (router->purpose == ROUTER_PURPOSE_GENERAL) \
+        router_clear_status_flags(router); \
+    } \
+   } while (0)
+#else
+  #define CHECK_ROUTER_PURPOSE()
+#endif
+
   SMARTLIST_FOREACH_JOIN(ns->routerstatus_list, routerstatus_t *, rs,
                          routers, routerinfo_t *, router,
                          tor_memcmp(rs->identity_digest,
                                router->cache_info.identity_digest, DIGEST_LEN),
+                        {  CHECK_ROUTER_PURPOSE(); })
   {
-#if 0
-    /* We have no routerstatus for this router. Clear flags and skip it. */
-    if (!authdir) {
-      if (router->purpose == ROUTER_PURPOSE_GENERAL)
-        router_clear_status_flags(router);
-    }
-#endif
-  }) {
     /* We have a routerstatus for this router. */
     const char *digest = router->cache_info.identity_digest;

------------------------

--gv


More information about the tor-dev mailing list