aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/tor-spec.txt6
-rw-r--r--src/common/log.h11
-rw-r--r--src/or/routers.c14
3 files changed, 20 insertions, 11 deletions
diff --git a/doc/tor-spec.txt b/doc/tor-spec.txt
index 26836823f..e4637b851 100644
--- a/doc/tor-spec.txt
+++ b/doc/tor-spec.txt
@@ -487,6 +487,12 @@ which reveals the downstream node.
cells, echo their contents to the corresponding TCP stream.
[XXX Mention zlib encoding. -NM]
+5.2. Closing connections
+
+ [Note -- TCP streams can only be half-closed for reading. Our
+ Bickford's conversation was incorrect. -NM]
+
+
When one side of the TCP stream is closed, the corresponding edge
node sends a RELAY_END cell along the circuit; upon receiving a
RELAY_END cell, the edge node closes its side of the corresponding
diff --git a/src/common/log.h b/src/common/log.h
index d8311d20f..5669a511a 100644
--- a/src/common/log.h
+++ b/src/common/log.h
@@ -13,10 +13,13 @@
void log(int severity, const char *format, ...);
#ifdef __GNUC__
-#define log_fn(severity, format) \
- log((severity), "%s(): " format , __PRETTY_FUNCTION__)
-#define log_fnf(severity, format, args...) \
- log((severity), "%s(): " format , __PRETTY_FUNCTION__ , ##args)
+#ifdef __APPLE_CPP__
+#define log_fn(severity, args...) \
+ log((severity), __PRETTY_FUNCTION__ "(): " args)
+#else
+#define log_fn(severity, format, args...) \
+ log((severity), "%s(): " format, __PRETTY_FUNCTION__ , ##args)
+#endif
#else
#define log_fn log
#define log_fnf log
diff --git a/src/or/routers.c b/src/or/routers.c
index 6a47e7f74..0f6156cdf 100644
--- a/src/or/routers.c
+++ b/src/or/routers.c
@@ -47,7 +47,7 @@ int learn_my_address(struct sockaddr_in *me) {
log_fn(LOG_ERR,"Error obtaining local hostname");
return -1;
}
- log_fnf(LOG_DEBUG,"localhostname is '%s'.",localhostname);
+ log_fn(LOG_DEBUG,"localhostname is '%s'.",localhostname);
localhost = gethostbyname(localhostname);
if (!localhost) {
log_fn(LOG_ERR,"Error obtaining local host info.");
@@ -57,7 +57,7 @@ int learn_my_address(struct sockaddr_in *me) {
me->sin_family = AF_INET;
memcpy((void *)&me->sin_addr,(void *)localhost->h_addr,sizeof(struct in_addr));
me->sin_port = htons(options.ORPort);
- log_fnf(LOG_DEBUG,"chose address as '%s'.",inet_ntoa(me->sin_addr));
+ log_fn(LOG_DEBUG,"chose address as '%s'.",inet_ntoa(me->sin_addr));
return 0;
}
@@ -69,7 +69,7 @@ void router_retry_connections(void) {
for (i=0;i<directory->n_routers;i++) {
router = directory->routers[i];
if(!connection_exact_get_by_addr_port(router->addr,router->or_port)) { /* not in the list */
- log_fnf(LOG_DEBUG,"connecting to OR %s:%u.",router->address,router->or_port);
+ log_fn(LOG_DEBUG,"connecting to OR %s:%u.",router->address,router->or_port);
connection_or_connect(router);
}
}
@@ -199,26 +199,26 @@ int router_get_list_from_file(char *routerfile)
assert(routerfile);
if (strcspn(routerfile,CONFIG_LEGAL_FILENAME_CHARACTERS) != 0) {
- log_fnf(LOG_ERR,"Filename %s contains illegal characters.",routerfile);
+ log_fn(LOG_ERR,"Filename %s contains illegal characters.",routerfile);
return -1;
}
if(stat(routerfile, &statbuf) < 0) {
- log_fnf(LOG_ERR,"Could not stat %s.",routerfile);
+ log_fn(LOG_ERR,"Could not stat %s.",routerfile);
return -1;
}
/* open the router list */
fd = open(routerfile,O_RDONLY,0);
if (fd<0) {
- log_fnf(LOG_ERR,"Could not open %s.",routerfile);
+ log_fn(LOG_ERR,"Could not open %s.",routerfile);
return -1;
}
string = tor_malloc(statbuf.st_size+1);
if(read(fd,string,statbuf.st_size) != statbuf.st_size) {
- log_fnf(LOG_ERR,"Couldn't read all %d bytes of file '%s'.",statbuf.st_size,routerfile);
+ log_fn(LOG_ERR,"Couldn't read all %d bytes of file '%s'.",statbuf.st_size,routerfile);
free(string);
close(fd);
return -1;