[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] r9206: Remove some dead code; refactor some duplicated code. (in tor/trunk: . src/or)
- To: or-cvs@xxxxxxxxxxxxx
- Subject: [or-cvs] r9206: Remove some dead code; refactor some duplicated code. (in tor/trunk: . src/or)
- From: nickm@xxxxxxxx
- Date: Thu, 28 Dec 2006 21:49:18 -0500 (EST)
- Delivered-to: archiver@seul.org
- Delivered-to: or-cvs-outgoing@seul.org
- Delivered-to: or-cvs@seul.org
- Delivery-date: Thu, 28 Dec 2006 21:49:33 -0500
- Reply-to: or-talk@xxxxxxxxxxxxx
- Sender: owner-or-cvs@xxxxxxxxxxxxx
Author: nickm
Date: 2006-12-28 21:49:12 -0500 (Thu, 28 Dec 2006)
New Revision: 9206
Modified:
tor/trunk/
tor/trunk/src/or/or.h
tor/trunk/src/or/policies.c
tor/trunk/src/or/router.c
tor/trunk/src/or/routerlist.c
tor/trunk/src/or/routerparse.c
Log:
r11737@Kushana: nickm | 2006-12-28 18:32:13 -0500
Remove some dead code; refactor some duplicated code.
Property changes on: tor/trunk
___________________________________________________________________
svk:merge ticket from /tor/trunk [r11737] on c95137ef-5f19-0410-b913-86e773d04f59
Modified: tor/trunk/src/or/or.h
===================================================================
--- tor/trunk/src/or/or.h 2006-12-29 02:47:51 UTC (rev 9205)
+++ tor/trunk/src/or/or.h 2006-12-29 02:49:12 UTC (rev 9206)
@@ -2410,6 +2410,11 @@
/********************************* policies.c ************************/
+/* (length of "accept 255.255.255.255/255.255.255.255:65535-65535\n" plus a
+ * nul.)
+ */
+#define POLICY_BUF_LEN 52
+
typedef enum {
ADDR_POLICY_ACCEPTED=0,
ADDR_POLICY_REJECTED=-1,
@@ -2439,6 +2444,7 @@
int policy_is_reject_star(addr_policy_t *policy);
int getinfo_helper_policies(control_connection_t *conn,
const char *question, char **answer);
+int policy_write_item(char *buf, size_t buflen, addr_policy_t *policy);
void addr_policy_free(addr_policy_t *p);
void policies_free_all(void);
Modified: tor/trunk/src/or/policies.c
===================================================================
--- tor/trunk/src/or/policies.c 2006-12-29 02:47:51 UTC (rev 9205)
+++ tor/trunk/src/or/policies.c 2006-12-29 02:49:12 UTC (rev 9206)
@@ -658,7 +658,70 @@
return 1;
}
+/** Write a single address policy to the buf_len byte buffer at buf. Return
+ * the number of characters written, or -1 on failure. */
int
+policy_write_item(char *buf, size_t buflen, addr_policy_t *policy)
+{
+ struct in_addr in;
+ size_t written = 0;
+ char addrbuf[INET_NTOA_BUF_LEN];
+ int result;
+
+ in.s_addr = htonl(policy->addr);
+ tor_inet_ntoa(&in, addrbuf, sizeof(addrbuf));
+ /* write accept/reject 1.2.3.4 */
+ result = tor_snprintf(buf, buflen, "%s %s",
+ policy->policy_type == ADDR_POLICY_ACCEPT ? "accept" : "reject",
+ policy->msk == 0 ? "*" : addrbuf);
+ if (result < 0)
+ return -1;
+ written += strlen(buf);
+ /* If the mask is 0xffffffff, we don't need to give it. If the mask is 0,
+ * we already wrote "*". */
+ if (policy->msk != 0xFFFFFFFFu && policy->msk != 0) {
+ int n_bits = addr_mask_get_bits(policy->msk);
+ if (n_bits >= 0) {
+ if (tor_snprintf(buf+written, buflen-written, "/%d", n_bits)<0)
+ return -1;
+ } else {
+ /* Write "/255.255.0.0" */
+ in.s_addr = htonl(policy->msk);
+ tor_inet_ntoa(&in, addrbuf, sizeof(addrbuf));
+ if (tor_snprintf(buf+written, buflen-written, "/%s", addrbuf)<0)
+ return -1;
+ }
+ written += strlen(buf+written);
+ }
+ if (policy->prt_min <= 1 && policy->prt_max == 65535) {
+ /* There is no port set; write ":*" */
+ if (written+4 > buflen)
+ return -1;
+ strlcat(buf+written, ":*", buflen-written);
+ written += 3;
+ } else if (policy->prt_min == policy->prt_max) {
+ /* There is only one port; write ":80". */
+ result = tor_snprintf(buf+written, buflen-written, ":%d", policy->prt_min);
+ if (result<0)
+ return -1;
+ written += result;
+ } else {
+ /* There is a range of ports; write ":79-80". */
+ result = tor_snprintf(buf+written, buflen-written, ":%d-%d",
+ policy->prt_min, policy->prt_max);
+ if (result<0)
+ return -1;
+ written += result;
+ }
+ if (written < buflen)
+ buf[written] = '\0';
+ else
+ return -1;
+
+ return (int)written;
+}
+
+int
getinfo_helper_policies(control_connection_t *conn,
const char *question, char **answer)
{
Modified: tor/trunk/src/or/router.c
===================================================================
--- tor/trunk/src/or/router.c 2006-12-29 02:47:51 UTC (rev 9205)
+++ tor/trunk/src/or/router.c 2006-12-29 02:49:12 UTC (rev 9206)
@@ -1086,8 +1086,6 @@
char digest[DIGEST_LEN];
char published[ISO_TIME_LEN+1];
char fingerprint[FINGERPRINT_LEN+1];
- struct in_addr in;
- char addrbuf[INET_NTOA_BUF_LEN];
size_t onion_pkeylen, identity_pkeylen;
size_t written;
int result=0;
@@ -1203,51 +1201,14 @@
tmpe = NULL;
}
for ( ; tmpe; tmpe=tmpe->next) {
- /* XXXX012 Can this move into policies.c ? */
- /* Write: "accept 1.2.3.4" */
- in.s_addr = htonl(tmpe->addr);
- tor_inet_ntoa(&in, addrbuf, sizeof(addrbuf));
- result = tor_snprintf(s+written, maxlen-written, "%s %s",
- tmpe->policy_type == ADDR_POLICY_ACCEPT ? "accept" : "reject",
- tmpe->msk == 0 ? "*" : addrbuf);
+ result = policy_write_item(s+written, maxlen-written, tmpe);
if (result < 0)
return -1;
written += result;
- if (tmpe->msk != 0xFFFFFFFFu && tmpe->msk != 0) {
- int n_bits = addr_mask_get_bits(tmpe->msk);
- if (n_bits >= 0) {
- if (tor_snprintf(s+written, maxlen-written, "/%d", n_bits)<0)
- return -1;
- } else {
- /* Write "/255.255.0.0" */
- in.s_addr = htonl(tmpe->msk);
- tor_inet_ntoa(&in, addrbuf, sizeof(addrbuf));
- if (tor_snprintf(s+written, maxlen-written, "/%s", addrbuf)<0)
- return -1;
- }
- written += strlen(s+written);
- }
- if (tmpe->prt_min <= 1 && tmpe->prt_max == 65535) {
- /* There is no port set; write ":*" */
- if (written+4 > maxlen)
- return -1;
- strlcat(s+written, ":*\n", maxlen-written);
- written += 3;
- } else if (tmpe->prt_min == tmpe->prt_max) {
- /* There is only one port; write ":80". */
- result = tor_snprintf(s+written, maxlen-written, ":%d\n", tmpe->prt_min);
- if (result<0)
- return -1;
- written += result;
- } else {
- /* There is a range of ports; write ":79-80". */
- result = tor_snprintf(s+written, maxlen-written, ":%d-%d\n",
- tmpe->prt_min, tmpe->prt_max);
- if (result<0)
- return -1;
- written += result;
- }
- } /* end for */
+ if (written < maxlen+2)
+ return -1;
+ s[written++] = '\n';
+ }
if (written+256 > maxlen) /* Not enough room for signature. */
return -1;
Modified: tor/trunk/src/or/routerlist.c
===================================================================
--- tor/trunk/src/or/routerlist.c 2006-12-29 02:47:51 UTC (rev 9205)
+++ tor/trunk/src/or/routerlist.c 2006-12-29 02:49:12 UTC (rev 9206)
@@ -1859,61 +1859,6 @@
}
}
-#if 0
- /* XXXX This block is slow, and could be smarter. All it does is ensure
- * that if we have a named server called "Foo", we will never have another
- * server called "Foo." router_get_by_nickname() already knows to prefer
- * named routers, so the problem only arises when there is a named router
- * called 'foo', but we don't have it. If, instead, we kept a
- * name-to-identity-key mapping for each named router in the networkstatus
- * list, we could eliminate this block.
- *
- * Hm. perhaps we should; I don't see how this code is non-broken wrt named
- * routers. -NM
- */
- /* XXXX012 The above is indeed implemented; remove this block. */
-
- /* If the identity key has changed, and one of the
- * routers is named, drop the unnamed ones. (If more than one are named,
- * drop the old ones.)
- */
- for (i = 0; i < smartlist_len(routerlist->routers); ++i) {
- routerinfo_t *old_router = smartlist_get(routerlist->routers, i);
- if (!memcmp(router->cache_info.identity_digest,
- old_router->cache_info.identity_digest, DIGEST_LEN)) {
-
- } else if (!strcasecmp(router->nickname, old_router->nickname)) {
- /* nicknames match, keys don't. */
- if (router->is_named) {
- /* The new named router replaces the old one; remove the
- * old one. And carry on to the end of the list, in case
- * there are more old unnamed routers with this nickname.
- */
- /* mark-for-close connections using the old key, so we can
- * make new ones with the new key.
- */
- or_connection_t *conn;
- while ((conn = connection_or_get_by_identity_digest(
- old_router->cache_info.identity_digest))) {
- log_info(LD_DIR,"Closing conn to router '%s'; there is now a named "
- "router with that name.",
- old_router->nickname);
- connection_mark_for_close(TO_CONN(conn));
- }
- routerlist_remove(routerlist, old_router, i--, 0);
- } else if (old_router->is_named) {
- /* Can't replace a named router with an unnamed one. */
- log_debug(LD_DIR, "Skipping unnamed entry for named router '%s'",
- router->nickname);
- routerinfo_free(router);
- *msg =
- "Already have named router with same nickname and different key.";
- return -2;
- }
- }
- }
-#endif
-
/* We haven't seen a router with this name before. Add it to the end of
* the list. */
routerlist_insert(routerlist, router);
Modified: tor/trunk/src/or/routerparse.c
===================================================================
--- tor/trunk/src/or/routerparse.c 2006-12-29 02:47:51 UTC (rev 9205)
+++ tor/trunk/src/or/routerparse.c 2006-12-29 02:49:12 UTC (rev 9206)
@@ -1370,10 +1370,8 @@
router_parse_addr_policy(directory_token_t *tok)
{
addr_policy_t *newe;
-// struct in_addr in;
char *arg;
-// char *address;
-// char buf[INET_NTOA_BUF_LEN];
+ char buf[POLICY_BUF_LEN];
tor_assert(tok->tp == K_REJECT || tok->tp == K_ACCEPT);
@@ -1386,10 +1384,6 @@
newe = tor_malloc_zero(sizeof(addr_policy_t));
- newe->string = tor_malloc(8+strlen(arg));
- /* XXXX012 eventually, use the code from router.c:727 to generate this */
- tor_snprintf(newe->string, 8+strlen(arg), "%s %s",
- (tok->tp == K_REJECT) ? "reject" : "accept", arg);
newe->policy_type = (tok->tp == K_REJECT) ? ADDR_POLICY_REJECT
: ADDR_POLICY_ACCEPT;
@@ -1397,21 +1391,14 @@
&newe->prt_min, &newe->prt_max))
goto policy_read_failed;
-// in.s_addr = htonl(newe->addr);
-// tor_inet_ntoa(&in, buf, sizeof(buf));
-// address = tor_strdup(buf);
-// in.s_addr = htonl(newe->msk);
-// log_fn(LOG_DEBUG,"%s %s/%s:%d-%d",
-// newe->policy_type == ADDR_POLICY_REJECT ? "reject" : "accept",
-// address, inet_ntoa(in), newe->prt_min, newe->prt_max);
-// tor_free(address);
+ if (policy_write_item(buf, sizeof(buf), newe) < 0)
+ goto policy_read_failed;
+ newe->string = tor_strdup(buf);
return newe;
policy_read_failed:
- tor_assert(newe->string);
- log_warn(LD_DIR,"Couldn't parse line %s. Dropping", escaped(newe->string));
- tor_free(newe->string);
+ log_warn(LD_DIR,"Couldn't parse line %s. Dropping", escaped(arg));
tor_free(newe);
return NULL;
}