aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2003-09-25 10:42:07 +0000
committerRoger Dingledine <arma@torproject.org>2003-09-25 10:42:07 +0000
commit3b5191d36dd62af1a7c6e08ce3a171d189870b64 (patch)
tree8852c3a4b57e7c464e656c6a278bfe2fd2f5d862 /src
parent3d4ccb781ae5d74f0e16a63c89e08459d15cccf1 (diff)
downloadtor-3b5191d36dd62af1a7c6e08ce3a171d189870b64.tar
tor-3b5191d36dd62af1a7c6e08ce3a171d189870b64.tar.gz
various bugfixes and updates
redo all the config files for the new format (we'll redo them again soon) fix (another! yuck) segfault in log_fn when input is too large tor_tls_context_new() returns -1 for error, not NULL fix segfault in check_conn_marked() on conn's that die during tls handshake make ORs also initialize conn from router when we're the receiving node make non-dirserver ORs upload descriptor to every dirserver on startup add our local address to the descriptor add Content-Length field to POST command revert the Content-Length search in fetch_from_buf_http() to previous code fix segfault in memmove in fetch_from_buf_http() raise maximum allowed headers/body size in directory.c svn:r484
Diffstat (limited to 'src')
-rw-r--r--src/common/log.c10
-rw-r--r--src/common/tortls.c2
-rw-r--r--src/config/dirservers94
-rw-r--r--src/config/httpaprc13
-rw-r--r--src/config/moria1-orrc5
-rw-r--r--src/config/moria1-private15
-rw-r--r--src/config/moria1-public5
-rw-r--r--src/config/moria2-orrc5
-rw-r--r--src/config/moria2-private15
-rw-r--r--src/config/moria2-public5
-rw-r--r--src/config/moria3-orrc5
-rw-r--r--src/config/moria3-private15
-rw-r--r--src/config/moria3-public5
-rw-r--r--src/config/routers.or107
-rw-r--r--src/config/smtpaprc13
-rw-r--r--src/config/ts4-orrc17
-rw-r--r--src/config/ts4-private15
-rw-r--r--src/or/buffers.c20
-rw-r--r--src/or/connection.c11
-rw-r--r--src/or/connection_or.c19
-rw-r--r--src/or/directory.c11
-rw-r--r--src/or/main.c23
-rw-r--r--src/or/or.h9
-rw-r--r--src/or/routers.c18
24 files changed, 199 insertions, 258 deletions
diff --git a/src/common/log.c b/src/common/log.c
index 0f75237c6..0b8a0bb38 100644
--- a/src/common/log.c
+++ b/src/common/log.c
@@ -54,17 +54,19 @@ static INLINE void format_msg(char *buf, size_t buf_len,
".%.3ld [%s] ",
(long)now.tv_usec / 1000, sev_to_string(severity));
if(n > buf_len)
- n = buf_len; /* the *nprintf funcs return how many bytes they
- * _would_ print, if the output is truncated */
+ n = buf_len-1; /* the *nprintf funcs return how many bytes they
+ * _would_ print, if the output is truncated.
+ * Subtract one because the count doesn't include the \0 */
+
if (funcname) {
n += snprintf(buf+n, buf_len-n, "%s(): ", funcname);
if(n > buf_len)
- n = buf_len;
+ n = buf_len-1;
}
n += vsnprintf(buf+n,buf_len-n,format,ap);
if(n > buf_len)
- n = buf_len;
+ n = buf_len-1;
buf[n]='\n';
buf[n+1]='\0';
}
diff --git a/src/common/tortls.c b/src/common/tortls.c
index a1d5b2c5e..1046b4981 100644
--- a/src/common/tortls.c
+++ b/src/common/tortls.c
@@ -215,7 +215,7 @@ tor_tls_context_new(crypto_pk_env_t *rsa,
cert = tor_tls_create_certificate(rsa, nickname);
if (!cert) {
log(LOG_ERR, "Error creating certificate");
- return NULL;
+ return -1;
}
}
diff --git a/src/config/dirservers b/src/config/dirservers
index 0f9b5c884..e8b6fbbd3 100644
--- a/src/config/dirservers
+++ b/src/config/dirservers
@@ -1,49 +1,81 @@
-# List of directory servers.
-# Line format : address ORPort OPPort APPort DirPort bandwidth(bytes/s)
-# followed by the routers public key.
-# ORport is where the router listens for routers/clients (speaking cells)
-# APPort is where the router listens for applications (speaking socks)
-# DirPort is where the router listens for directory download requests
+# This is no longer a manually-editable file. It's just a
+# concatenation of a bunch of signed router descriptors.
-# Router 1
-router moria.mit.edu 9001 9021 9031 1000000
+router moria.mit.edu 9001 9021 9031 800000
+onion-key
-----BEGIN RSA PUBLIC KEY-----
-MIGJAoGBAMBBuk1sYxEg5jLAJy86U3GGJ7EGMSV7yoA6mmcsEVU3pwTUrpbpCmwS
-7BvovoY3z4zk63NZVBErgKQUDkn3pp8n83xZgEf4GI27gdWIIwaBjEimuJlEY+7K
-nZ7kVMRoiXCbjL6VAtNa4Zy1Af/GOm0iCIDpholeujQ95xew7rQnAgMA//8=
+MIGJAoGBANoIvHieyHUTzIacbnWOnyTyzGrLOdXqbcjz2GGMxyHEd5K1bO1ZBNHP
+9i5qLQpN5viFk2K2rEGuG8tFgDEzSWZEtBqv3NVfUdiumdERWMBwlaQ0MVK4C+jf
+y5gZ8KI3o9ZictgPS1AQF+Kk932/vIHTuRIUKb4ILTnQilNvID0NAgMBAAE=
+-----END RSA PUBLIC KEY-----
+link-key
+-----BEGIN RSA PUBLIC KEY-----
+MIGJAoGBAPt97bGDd9siVjPd7Xuq2s+amMEOLIj9961aSdP6/OT+BS1Q4TX2dNOX
+ZNAl63Z2fQISsR81+nfoqRLYCKxhajsD7LRvRTaRwUrWemVqFevmZ4nJrHw6FoU3
+xNUIHRMA8X2DZ+l5qgnWZb7JU50ohhX5OpMSyysXnik51J8hD5mBAgMBAAE=
-----END RSA PUBLIC KEY-----
signing-key
-----BEGIN RSA PUBLIC KEY-----
-MIGJAoGBAMBBuk1sYxEg5jLAJy86U3GGJ7EGMSV7yoA6mmcsEVU3pwTUrpbpCmwS
-7BvovoY3z4zk63NZVBErgKQUDkn3pp8n83xZgEf4GI27gdWIIwaBjEimuJlEY+7K
-nZ7kVMRoiXCbjL6VAtNa4Zy1Af/GOm0iCIDpholeujQ95xew7rQnAgMA//8=
+MIGJAoGBAMHa0ZC/jo2Q2DrwKYF/6ZbmZ27PFYG91u4gUzzmZ/VXLpZ8wNzEV3oW
+nt+I61048fBiC1frT1/DZ351n2bLSk9zJbB6jyGZJn0380FPRX3+cXyXS0Gq8Ril
+xkhMQf5XuNFUb8UmYPSOH4WErjvYjKvU+gfjbK/82Jo9SuHpYz+BAgMBAAE=
-----END RSA PUBLIC KEY-----
+router-signature
+-----BEGIN SIGNATURE-----
+fYcz+14lf2kilu0zGrkyAvfjNk2GfL5QClhdCiBuqy5fIkUS/969WZSWg9BXi7pK
+5+EgR9hvY4nAtJ2SBoE+lyOx7miuT/uGfH68wNkC0Le2gULcprDYFKAEc5i1o/aS
+Y/kuZIFDm2FXQPrYM88CIHAq8/3amUCskf2vC7l2eNE=
+-----END SIGNATURE-----
-
-# Router 2
-router moria.mit.edu 9002 9022 9032 1000000
+router moria.mit.edu 9002 9022 9032 800000
+onion-key
+-----BEGIN RSA PUBLIC KEY-----
+MIGJAoGBAM4Cc/npgYC54XrYLC+grVxJp7PDmNO2DRRJOxKttBBtvLpnR1UaueTi
+kyknT5kmlx+ihgZF/jmye//2dDUp2+kK/kSkpRV4xnDLXZmed+sNSQxqmm9TtZQ9
+/hjpxhp5J9HmUTYhntBs+4E4CUKokmrI6oRLoln4SA39AX9QLPcnAgMBAAE=
+-----END RSA PUBLIC KEY-----
+link-key
-----BEGIN RSA PUBLIC KEY-----
-MIGJAoGBANX/HHRuudz274MFSQ4manX8DhtsIuogNUyco9/0dr+XsfioTGd3RgMj
-aSWlD87arkZO4hHBPHe0q89Z3s1UtUsyQ/VmsxSv9g2OCnF/dU2Nz4h6+Al3iNJF
-1UlWR4eiqBx3djxdIl/t+Nidw++YGc8QqRqkg0EhQCJ2fnOtHn9bAgMA//8=
+MIGJAoGBAN7JVeCIJ7+0ZJew5ScOU58rTUqjGt1Z1Rkursc7WabEb8jno45VZwIs
+dkjnl31i36KHyyS7kQdHgkvG5EiyZiRipFAcoTaYv3Gvf1No9cXL6IhT3y/37dJ/
+kFPEMb/G2wdkJCC+D8fMwHBwMuqAg0JGuhoBOz0ArCgK3fq0BLilAgMBAAE=
-----END RSA PUBLIC KEY-----
signing-key
-----BEGIN RSA PUBLIC KEY-----
-MIGJAoGBANX/HHRuudz274MFSQ4manX8DhtsIuogNUyco9/0dr+XsfioTGd3RgMj
-aSWlD87arkZO4hHBPHe0q89Z3s1UtUsyQ/VmsxSv9g2OCnF/dU2Nz4h6+Al3iNJF
-1UlWR4eiqBx3djxdIl/t+Nidw++YGc8QqRqkg0EhQCJ2fnOtHn9bAgMA//8=
+MIGJAoGBAOcrht/y5rkaahfX7sMe2qnpqoPibsjTSJaDvsUtaNP/Bq0MgNDGOR48
+rtwfqTRff275Edkp/UYw3G3vSgKCJr76/bqOHCmkiZrnPV1zxNfrK18gNw2Cxre0
+nTA+fD8JQqpPtb8b0SnG9kwy75eS//sRu7TErie2PzGMxrf9LH0LAgMBAAE=
-----END RSA PUBLIC KEY-----
+router-signature
+-----BEGIN SIGNATURE-----
+Hyx1fJFJaR9j7OpEg4qdxKo+AMXIZl6250AuiYmvdcwWD2VBJyhSbptB/vMLQGrU
+/PGWLlZus90xD/mKesc4b0CkwKD6eWI90Wn34JwBUGHalN/qm42tMMoq3slOWae0
+Da9JmxiYqApXwwaHWR9WwNHmkXkWfvTmZDSFkdEMgV0=
+-----END SIGNATURE-----
-# Router 3
-router moria.mit.edu 9003 9023 9033 1000000
+router moria.mit.edu 9003 9023 9033 800000
+onion-key
+-----BEGIN RSA PUBLIC KEY-----
+MIGJAoGBANS6J/Er9fYo03fjUUVesc7We9Z6xIevyDJH39pYS4NUlcr5ExYgSVFJ
+95aLCNx1x8Rf5YtiBKYuT3plBO/+rfuX+0iAGNkz/y3SlJVGz6aeptU3wN8CkvCL
+zATEcnl4QSPhHX0wFB9A3t7wZ+Bat1PTI029lax/BkoS9JG5onHPAgMBAAE=
+-----END RSA PUBLIC KEY-----
+link-key
-----BEGIN RSA PUBLIC KEY-----
-MIGJAoGBAJfkNWCaNkYIRwfHT06KBU6dz8W1xDpW5ezGJwAOoxCX3/ZNoUicb/1V
-oB3OzW6VxWIiht3da/3K0ywiBOOCcf6BabKoMdiPpH7NIeu6XRmBYK2uqW13gBgh
-xJbQBb58Nx8Fr05XkvLG6i+vTDY3MZOW3E2/DwSe/jFzuHSD5b3nAgMA//8=
+MIGJAoGBAKUMY8p+7LBu7dEJnOR9HqbfcD6c4/f9GqJt3o29uu4XJPD8z2XGVBik
+pZBLijhYS6U7GFg0NLR4zBlsLyB8TxHeaz5KJidJjy+BfC01jz1xwVTYDlmGVpc1
+0mw0Ag0ND6aOQKKhelxhTI3Bf0R9olEXuSUKEWx3EMIz2qhLd9oDAgMBAAE=
-----END RSA PUBLIC KEY-----
signing-key
-----BEGIN RSA PUBLIC KEY-----
-MIGJAoGBAJfkNWCaNkYIRwfHT06KBU6dz8W1xDpW5ezGJwAOoxCX3/ZNoUicb/1V
-oB3OzW6VxWIiht3da/3K0ywiBOOCcf6BabKoMdiPpH7NIeu6XRmBYK2uqW13gBgh
-xJbQBb58Nx8Fr05XkvLG6i+vTDY3MZOW3E2/DwSe/jFzuHSD5b3nAgMA//8=
+MIGJAoGBAMqgq83cwzSid2LSvzsn2rvkD8U0tWvqF6PuQAsKP3QHFqtBO+66pnIm
+CbiY2e6o01tmR47t557LuUCodEc8Blggxjg3ZEzvP42hsGB9LwQbcrU7grPRk0G0
+IltsOF9TZ+66gCeU7LxExLdAMqT2Tx6VT4IREPJMeNxSiceEjbABAgMBAAE=
-----END RSA PUBLIC KEY-----
+router-signature
+-----BEGIN SIGNATURE-----
+xm7Nmk7EmtDIrXZ/Hh2LBbG3oTuwCjY3XrVHpIbg6ttuoYJx3Ai1MdOHHBbUDVdz
+bRE6WV5fXuVgmgcWLP6p364Vymw6i2ff/lkEMqHV4NOAWZ1RbFwZQ5OjEAjXIhH/
+VlVX83wBSM0EefJwwXM7H075MU1MB+f2yRlTZ0/Xp0U=
+-----END SIGNATURE-----
+
diff --git a/src/config/httpaprc b/src/config/httpaprc
deleted file mode 100644
index aefe5d1a1..000000000
--- a/src/config/httpaprc
+++ /dev/null
@@ -1,13 +0,0 @@
-# Sample configuration file for httpap.
-
-# local port on which the onion proxy is running
-OnionProxy 9021
-
-# maximum number of incoming connections
-MaxConn 500
-
-# run in anonymizing mode (0=no/1=yes)
-Anonimize 0
-
-# timeout for incoming connections (seconds)
-ConnTimeout 6000
diff --git a/src/config/moria1-orrc b/src/config/moria1-orrc
index 36ab61f91..5ff374310 100644
--- a/src/config/moria1-orrc
+++ b/src/config/moria1-orrc
@@ -5,10 +5,7 @@ OnionRouter 1
# List of routers
RouterFile ../config/routers.or
-# Private key
-PrivateKeyFile moria1-private
-SigningPrivateKeyFile moria1-private
-CertFile moria1-cert
+DataDirectory moria1
Nickname moria1
CoinWeight 0.01
diff --git a/src/config/moria1-private b/src/config/moria1-private
deleted file mode 100644
index e4a0f860d..000000000
--- a/src/config/moria1-private
+++ /dev/null
@@ -1,15 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXQIBAAKBgQDAQbpNbGMRIOYywCcvOlNxhiexBjEle8qAOppnLBFVN6cE1K6W
-6QpsEuwb6L6GN8+M5OtzWVQRK4CkFA5J96afJ/N8WYBH+BiNu4HViCMGgYxIpriZ
-RGPuyp2e5FTEaIlwm4y+lQLTWuGctQH/xjptIgiA6YaJXro0PecXsO60JwIDAP//
-AoGBAKr0nL8o2Ze6mqtHK57YOb6xisihTCCinYh2pHXV0xdbXaxXUb2d4VROf6So
-ruJDTp6UxDkLbR3ZjnJ0D9CxOCY+HHC17k+svimV6+bu22uvVJuwPM2kvZxYdM5n
-mNvGBikwB6Uk8ZtQ+SDwa/sRr/Q49a2hJF6VjYn/HnqXKWJ/AkEA6uYt3AYaNcZ+
-cI+evYSOJ9TaVZ5h+i9IWlYl+Oo72dXr1DvcNYxibh1yHgCf72QctM57Qxd6U+N4
-7hQmARP3IQJBANGG7f6v5eDVG/Rd4gupBMCdcuwefRY1tMqUmwYP9Ps3ZsHSmNhk
-aRKpVXXTFiJSwgI5LzgsjzMeaBVHvWFh6kcCQGMCjeDl91wX2Qz8pe4ZWCBECJbV
-C7MGNu5Cc93BYCFuGwecjqqkqXWBIMWkGw166NBiRDiIktkEntJAElDQoh8CQQC4
-vUXXUYFpio6eNNyf0HcnInkTs71RME9E4+bKcSAaFmTJzK3bh/NEDVyMrNcyvlYY
-N+9f4HlqNXtOLnyhtuw7AkAYHlK/fgem67SYl9Uu+1XnVX3Ktn/RbW1jeLRF8E8+
-urDuSzz4nbbRxDRmsZqMzsZlo0aH0DMsn+mbyTkDSQWA
------END RSA PRIVATE KEY-----
diff --git a/src/config/moria1-public b/src/config/moria1-public
deleted file mode 100644
index 5756fe261..000000000
--- a/src/config/moria1-public
+++ /dev/null
@@ -1,5 +0,0 @@
------BEGIN RSA PUBLIC KEY-----
-MIGJAoGBAMBBuk1sYxEg5jLAJy86U3GGJ7EGMSV7yoA6mmcsEVU3pwTUrpbpCmwS
-7BvovoY3z4zk63NZVBErgKQUDkn3pp8n83xZgEf4GI27gdWIIwaBjEimuJlEY+7K
-nZ7kVMRoiXCbjL6VAtNa4Zy1Af/GOm0iCIDpholeujQ95xew7rQnAgMA//8=
------END RSA PUBLIC KEY-----
diff --git a/src/config/moria2-orrc b/src/config/moria2-orrc
index f0eba7ced..f4f3f7ca4 100644
--- a/src/config/moria2-orrc
+++ b/src/config/moria2-orrc
@@ -5,10 +5,7 @@ OnionRouter 1
# List of routers
RouterFile ../config/routers.or
-# Private key
-PrivateKeyFile moria2-private
-SigningPrivateKeyFile moria2-private
-CertFile moria2-cert
+DataDirectory moria2
Nickname moria2
CoinWeight 0.01
diff --git a/src/config/moria2-private b/src/config/moria2-private
deleted file mode 100644
index c96a920a9..000000000
--- a/src/config/moria2-private
+++ /dev/null
@@ -1,15 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXAIBAAKBgQDV/xx0brnc9u+DBUkOJmp1/A4bbCLqIDVMnKPf9Ha/l7H4qExn
-d0YDI2klpQ/O2q5GTuIRwTx3tKvPWd7NVLVLMkP1ZrMUr/YNjgpxf3VNjc+IevgJ
-d4jSRdVJVkeHoqgcd3Y8XSJf7fjYncPvmBnPEKkapINBIUAidn5zrR5/WwIDAP//
-AoGAfSHuFF8HGySbR3bxo7DINw9+izVxS9nrJFxICu8sEsnVQZwicS5mZaItUMlq
-HL1pXtPk8oixVSxBFrrCi1DQZdvMWpcmtlhfdFfp+DZlJ9nTDpECjhzRcFv6l9FA
-xyRN7GHtherauc7ToNpkY08YOVl215lsS31moUJbNnLpkecCQQDxOh6/oc1WBTlM
-XXKo9yUYcMQauUUHVdeiAxUShwnJ2NXRJpCZHBX9C0jOCxDUIHC73DlazYQocnJN
-9NQn+euvAkEA4xoUd8GKQFBfX34wxWXkSX+hN58mz+8VGqaTUo5UQgHu2VeIq9sq
-xr4M7i5mMVipr0bIg1m8MIfP3Ysqahz2FQJAXv8SOukilZKEMua/nelxNSEdWuNw
-YmPgXl01GZDnG7PPZzxnDbJtGyMcvsB6UQNXaFIRqCO2vuRQh6OBb3+KnwJABOnz
-X1K1Wn2Xrd6e2MQ/Jr5DsUHIzsSRD3auIrVrFCCy1bK0jbx5t2qQHi9rMXiGlGty
-fhoNJnH2t1fcMMv1NwJBAM7e/cUAcKhaVWg+iuTL36xmHec99Tnw04yHOwGxw0l8
-BwO/vtDIX+gx6MIKYe+i4uNSVIt6Ww049eki5a56Xp8=
------END RSA PRIVATE KEY-----
diff --git a/src/config/moria2-public b/src/config/moria2-public
deleted file mode 100644
index b64fd638d..000000000
--- a/src/config/moria2-public
+++ /dev/null
@@ -1,5 +0,0 @@
------BEGIN RSA PUBLIC KEY-----
-MIGJAoGBANX/HHRuudz274MFSQ4manX8DhtsIuogNUyco9/0dr+XsfioTGd3RgMj
-aSWlD87arkZO4hHBPHe0q89Z3s1UtUsyQ/VmsxSv9g2OCnF/dU2Nz4h6+Al3iNJF
-1UlWR4eiqBx3djxdIl/t+Nidw++YGc8QqRqkg0EhQCJ2fnOtHn9bAgMA//8=
------END RSA PUBLIC KEY-----
diff --git a/src/config/moria3-orrc b/src/config/moria3-orrc
index 5f3b0fe06..71b80884e 100644
--- a/src/config/moria3-orrc
+++ b/src/config/moria3-orrc
@@ -5,10 +5,7 @@ OnionRouter 1
# List of routers
RouterFile ../config/routers.or
-# Private key
-PrivateKeyFile moria3-private
-SigningPrivateKeyFile moria3-private
-CertFile moria3-cert
+DataDirectory moria3
Nickname moria3
CoinWeight 0.01
diff --git a/src/config/moria3-private b/src/config/moria3-private
deleted file mode 100644
index 58100cfa0..000000000
--- a/src/config/moria3-private
+++ /dev/null
@@ -1,15 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICWwIBAAKBgQCX5DVgmjZGCEcHx09OigVOnc/FtcQ6VuXsxicADqMQl9/2TaFI
-nG/9VaAdzs1ulcViIobd3Wv9ytMsIgTjgnH+gWmyqDHYj6R+zSHrul0ZgWCtrqlt
-d4AYIcSW0AW+fDcfBa9OV5Lyxuovr0w2NzGTltxNvw8Env4xc7h0g+W95wIDAP//
-AoGAcUkHEFlT/8NALQ9VN1qrm/PS37mWWVEUwJHxvD6m4JEF/AqV6muG+aoMGwdN
-wl26GhD2QwLdA59+6pMx1Jgod+D9aM1F8zE3h0GnoncsJhtZn1aks0tmE7UNZLou
-Nsb+hnZD/lDN8WbZoLoKHJV1TXIaQ79VlIzt46gILyN7Ol8CQQDFeZEOnXmddgnY
-hXmfUujZbNs9Fa2M2GfnCxZuwn/lU7NebYcpkCoXp1ro+O1slOSYymdbAC8Di6H6
-I8YsYiPPAkEAxOg5O3yPviEPHcav+UfEntd3U4Rebpry+KunuFriMf5wQNWSBmgY
-d+jfOgaNOntfeNqywPDxU9/3+S9prneSaQJAdeBRTUme1HM8vcIR5gL0TlS/hkrJ
-3b8+bHDTubrE8FkRhyvp/OIxckXwksbBBzQ7U8sM0qeDt6J9tvw3k8+8bQJAXSMM
-JRUhulmxVhDOUMCo2qJYjRNLFa/T2D5ZROYRnyMuD3iT2CeYqmAJ5aX69sJNfKE9
-6cxgkcKjNroJwJVDDwJAbXjnN3MUSKITvlcVpBTlGozwOVjiPJ+1sbgBy4HzcffG
-UMHFK4hprBdtnV/kePtErGM3zlk+qh4VkUrp3MshEQ==
------END RSA PRIVATE KEY-----
diff --git a/src/config/moria3-public b/src/config/moria3-public
deleted file mode 100644
index e8e29e7f2..000000000
--- a/src/config/moria3-public
+++ /dev/null
@@ -1,5 +0,0 @@
------BEGIN RSA PUBLIC KEY-----
-MIGJAoGBAJfkNWCaNkYIRwfHT06KBU6dz8W1xDpW5ezGJwAOoxCX3/ZNoUicb/1V
-oB3OzW6VxWIiht3da/3K0ywiBOOCcf6BabKoMdiPpH7NIeu6XRmBYK2uqW13gBgh
-xJbQBb58Nx8Fr05XkvLG6i+vTDY3MZOW3E2/DwSe/jFzuHSD5b3nAgMA//8=
------END RSA PUBLIC KEY-----
diff --git a/src/config/routers.or b/src/config/routers.or
index 71619c136..47a58886f 100644
--- a/src/config/routers.or
+++ b/src/config/routers.or
@@ -1,71 +1,78 @@
-# List of core onion routers in the network.
-# Line format : address ORPort OPPort APPort DirPort bandwidth(bytes/s)
-# followed by the routers public key.
-# ORport is where the router listens for routers/clients (speaking cells)
-# APPort is where the router listens for applications (speaking socks)
-# DirPort is where the router listens for directory download requests
-
-# Router 1
-router moria.mit.edu 9001 9021 9031 1000000
+router moria.mit.edu 9001 9021 9031 800000
+onion-key
-----BEGIN RSA PUBLIC KEY-----
-MIGJAoGBAMBBuk1sYxEg5jLAJy86U3GGJ7EGMSV7yoA6mmcsEVU3pwTUrpbpCmwS
-7BvovoY3z4zk63NZVBErgKQUDkn3pp8n83xZgEf4GI27gdWIIwaBjEimuJlEY+7K
-nZ7kVMRoiXCbjL6VAtNa4Zy1Af/GOm0iCIDpholeujQ95xew7rQnAgMA//8=
+MIGJAoGBANoIvHieyHUTzIacbnWOnyTyzGrLOdXqbcjz2GGMxyHEd5K1bO1ZBNHP
+9i5qLQpN5viFk2K2rEGuG8tFgDEzSWZEtBqv3NVfUdiumdERWMBwlaQ0MVK4C+jf
+y5gZ8KI3o9ZictgPS1AQF+Kk932/vIHTuRIUKb4ILTnQilNvID0NAgMBAAE=
-----END RSA PUBLIC KEY-----
-signing-key
------BEGIN RSA PUBLIC KEY-----
-MIGJAoGBAMBBuk1sYxEg5jLAJy86U3GGJ7EGMSV7yoA6mmcsEVU3pwTUrpbpCmwS
-7BvovoY3z4zk63NZVBErgKQUDkn3pp8n83xZgEf4GI27gdWIIwaBjEimuJlEY+7K
-nZ7kVMRoiXCbjL6VAtNa4Zy1Af/GOm0iCIDpholeujQ95xew7rQnAgMA//8=
------END RSA PUBLIC KEY-----
-accept *:*
-
-# Router 2
-router moria.mit.edu 9002 9022 9032 1000000
+link-key
-----BEGIN RSA PUBLIC KEY-----
-MIGJAoGBANX/HHRuudz274MFSQ4manX8DhtsIuogNUyco9/0dr+XsfioTGd3RgMj
-aSWlD87arkZO4hHBPHe0q89Z3s1UtUsyQ/VmsxSv9g2OCnF/dU2Nz4h6+Al3iNJF
-1UlWR4eiqBx3djxdIl/t+Nidw++YGc8QqRqkg0EhQCJ2fnOtHn9bAgMA//8=
+MIGJAoGBAPt97bGDd9siVjPd7Xuq2s+amMEOLIj9961aSdP6/OT+BS1Q4TX2dNOX
+ZNAl63Z2fQISsR81+nfoqRLYCKxhajsD7LRvRTaRwUrWemVqFevmZ4nJrHw6FoU3
+xNUIHRMA8X2DZ+l5qgnWZb7JU50ohhX5OpMSyysXnik51J8hD5mBAgMBAAE=
-----END RSA PUBLIC KEY-----
signing-key
-----BEGIN RSA PUBLIC KEY-----
-MIGJAoGBANX/HHRuudz274MFSQ4manX8DhtsIuogNUyco9/0dr+XsfioTGd3RgMj
-aSWlD87arkZO4hHBPHe0q89Z3s1UtUsyQ/VmsxSv9g2OCnF/dU2Nz4h6+Al3iNJF
-1UlWR4eiqBx3djxdIl/t+Nidw++YGc8QqRqkg0EhQCJ2fnOtHn9bAgMA//8=
+MIGJAoGBAMHa0ZC/jo2Q2DrwKYF/6ZbmZ27PFYG91u4gUzzmZ/VXLpZ8wNzEV3oW
+nt+I61048fBiC1frT1/DZ351n2bLSk9zJbB6jyGZJn0380FPRX3+cXyXS0Gq8Ril
+xkhMQf5XuNFUb8UmYPSOH4WErjvYjKvU+gfjbK/82Jo9SuHpYz+BAgMBAAE=
-----END RSA PUBLIC KEY-----
+router-signature
+-----BEGIN SIGNATURE-----
+fYcz+14lf2kilu0zGrkyAvfjNk2GfL5QClhdCiBuqy5fIkUS/969WZSWg9BXi7pK
+5+EgR9hvY4nAtJ2SBoE+lyOx7miuT/uGfH68wNkC0Le2gULcprDYFKAEc5i1o/aS
+Y/kuZIFDm2FXQPrYM88CIHAq8/3amUCskf2vC7l2eNE=
+-----END SIGNATURE-----
-# Router 3
-router moria.mit.edu 9003 9023 9033 1000000
+router moria.mit.edu 9002 9022 9032 800000
+onion-key
-----BEGIN RSA PUBLIC KEY-----
-MIGJAoGBAJfkNWCaNkYIRwfHT06KBU6dz8W1xDpW5ezGJwAOoxCX3/ZNoUicb/1V
-oB3OzW6VxWIiht3da/3K0ywiBOOCcf6BabKoMdiPpH7NIeu6XRmBYK2uqW13gBgh
-xJbQBb58Nx8Fr05XkvLG6i+vTDY3MZOW3E2/DwSe/jFzuHSD5b3nAgMA//8=
+MIGJAoGBAM4Cc/npgYC54XrYLC+grVxJp7PDmNO2DRRJOxKttBBtvLpnR1UaueTi
+kyknT5kmlx+ihgZF/jmye//2dDUp2+kK/kSkpRV4xnDLXZmed+sNSQxqmm9TtZQ9
+/hjpxhp5J9HmUTYhntBs+4E4CUKokmrI6oRLoln4SA39AX9QLPcnAgMBAAE=
+-----END RSA PUBLIC KEY-----
+link-key
+-----BEGIN RSA PUBLIC KEY-----
+MIGJAoGBAN7JVeCIJ7+0ZJew5ScOU58rTUqjGt1Z1Rkursc7WabEb8jno45VZwIs
+dkjnl31i36KHyyS7kQdHgkvG5EiyZiRipFAcoTaYv3Gvf1No9cXL6IhT3y/37dJ/
+kFPEMb/G2wdkJCC+D8fMwHBwMuqAg0JGuhoBOz0ArCgK3fq0BLilAgMBAAE=
-----END RSA PUBLIC KEY-----
signing-key
-----BEGIN RSA PUBLIC KEY-----
-MIGJAoGBAJfkNWCaNkYIRwfHT06KBU6dz8W1xDpW5ezGJwAOoxCX3/ZNoUicb/1V
-oB3OzW6VxWIiht3da/3K0ywiBOOCcf6BabKoMdiPpH7NIeu6XRmBYK2uqW13gBgh
-xJbQBb58Nx8Fr05XkvLG6i+vTDY3MZOW3E2/DwSe/jFzuHSD5b3nAgMA//8=
+MIGJAoGBAOcrht/y5rkaahfX7sMe2qnpqoPibsjTSJaDvsUtaNP/Bq0MgNDGOR48
+rtwfqTRff275Edkp/UYw3G3vSgKCJr76/bqOHCmkiZrnPV1zxNfrK18gNw2Cxre0
+nTA+fD8JQqpPtb8b0SnG9kwy75eS//sRu7TErie2PzGMxrf9LH0LAgMBAAE=
-----END RSA PUBLIC KEY-----
+router-signature
+-----BEGIN SIGNATURE-----
+Hyx1fJFJaR9j7OpEg4qdxKo+AMXIZl6250AuiYmvdcwWD2VBJyhSbptB/vMLQGrU
+/PGWLlZus90xD/mKesc4b0CkwKD6eWI90Wn34JwBUGHalN/qm42tMMoq3slOWae0
+Da9JmxiYqApXwwaHWR9WwNHmkXkWfvTmZDSFkdEMgV0=
+-----END SIGNATURE-----
-router moria.mit.edu 9004 9024 0 1000000
+router moria.mit.edu 9003 9023 9033 800000
+onion-key
-----BEGIN RSA PUBLIC KEY-----
-MIGJAoGBAKD2BDZQpGq/aAbZ7t+/7qktZVEbhUGe097gIjWH9gXcIOIm0CJMe3rN
-MsBJsQMi5Uwqrz+Invb5n6bswrNlJp/bCKBhGTvUCfxg7c8xZy71PPSIPnTg1qXl
-p5fyAkgCYkZNgEEZzQDHv1GRvLCs92kURjSJE5y8QU0dXfbzms8PAgMA//8=
+MIGJAoGBANS6J/Er9fYo03fjUUVesc7We9Z6xIevyDJH39pYS4NUlcr5ExYgSVFJ
+95aLCNx1x8Rf5YtiBKYuT3plBO/+rfuX+0iAGNkz/y3SlJVGz6aeptU3wN8CkvCL
+zATEcnl4QSPhHX0wFB9A3t7wZ+Bat1PTI029lax/BkoS9JG5onHPAgMBAAE=
-----END RSA PUBLIC KEY-----
-
-router mosg.cl.cam.ac.uk 9005 9025 0 1000000
+link-key
-----BEGIN RSA PUBLIC KEY-----
-MIGJAoGBAMMHEjhhawM6S14ETFVcvByU7D/baN2JMcCweKKJ7zcSurDnpgRH/Uo7
-05+bZE3BCy4OkAqQbGlKd/ejBOuXjEtS0mJo5xwDX9StKguhgFRk60hhrF2OFJm4
-VLItXA6U2NLOrc+FBCv/9laLpBrxOb8Wuct0l/lyZ2/OfE9yYhC3AgMA//8=
+MIGJAoGBAKUMY8p+7LBu7dEJnOR9HqbfcD6c4/f9GqJt3o29uu4XJPD8z2XGVBik
+pZBLijhYS6U7GFg0NLR4zBlsLyB8TxHeaz5KJidJjy+BfC01jz1xwVTYDlmGVpc1
+0mw0Ag0ND6aOQKKhelxhTI3Bf0R9olEXuSUKEWx3EMIz2qhLd9oDAgMBAAE=
-----END RSA PUBLIC KEY-----
-
-router 66.17.17.207 9006 9026 0 1000000
+signing-key
-----BEGIN RSA PUBLIC KEY-----
-MIGJAoGBAL5cpmH34kVfmHd+A00vMton3pLGHAVf7BYkSMif8e/O5zXTUXRi4w78
-jDcGNo2yFM3htTpT5/tWs/Z2+B/mx8Kz+AhHzZ9z0PdQreDSqxXjF+jmfCyx9Teq
-jU9QA3GZiguLYV2pcs6Oll20svPSt0WRAR4YUmDeQmEYIZdBGnrVAgMBAAE=
+MIGJAoGBAMqgq83cwzSid2LSvzsn2rvkD8U0tWvqF6PuQAsKP3QHFqtBO+66pnIm
+CbiY2e6o01tmR47t557LuUCodEc8Blggxjg3ZEzvP42hsGB9LwQbcrU7grPRk0G0
+IltsOF9TZ+66gCeU7LxExLdAMqT2Tx6VT4IREPJMeNxSiceEjbABAgMBAAE=
-----END RSA PUBLIC KEY-----
+router-signature
+-----BEGIN SIGNATURE-----
+xm7Nmk7EmtDIrXZ/Hh2LBbG3oTuwCjY3XrVHpIbg6ttuoYJx3Ai1MdOHHBbUDVdz
+bRE6WV5fXuVgmgcWLP6p364Vymw6i2ff/lkEMqHV4NOAWZ1RbFwZQ5OjEAjXIhH/
+VlVX83wBSM0EefJwwXM7H075MU1MB+f2yRlTZ0/Xp0U=
+-----END SIGNATURE-----
diff --git a/src/config/smtpaprc b/src/config/smtpaprc
deleted file mode 100644
index 3102fd0e2..000000000
--- a/src/config/smtpaprc
+++ /dev/null
@@ -1,13 +0,0 @@
-# Sample configuration file for smtpap.
-
-# Local port on which the onion proxy is running.
-OnionProxy 3000
-
-# Maximum number of incoming connections.
-MaxConn 100
-
-# Run in anonymizing mode.
-Anonimize 0
-
-# Timeout for incoming connections.
-ConnTimeout 6000
diff --git a/src/config/ts4-orrc b/src/config/ts4-orrc
deleted file mode 100644
index 47199de4e..000000000
--- a/src/config/ts4-orrc
+++ /dev/null
@@ -1,17 +0,0 @@
-# Configuration file for or
-
-# List of routers
-RouterFile ../config/routers.or
-
-# Private key
-PrivateKeyFile ts4-private
-
-CoinWeight 0.0001
-
-ORPort 9004
-OPPort 9014
-APPort 9024
-
-# Maximum number of connections.
-MaxConn 900
-
diff --git a/src/config/ts4-private b/src/config/ts4-private
deleted file mode 100644
index 099c10c76..000000000
--- a/src/config/ts4-private
+++ /dev/null
@@ -1,15 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICWwIBAAKBgQCg9gQ2UKRqv2gG2e7fv+6pLWVRG4VBntPe4CI1h/YF3CDiJtAi
-THt6zTLASbEDIuVMKq8/iJ72+Z+m7MKzZSaf2wigYRk71An8YO3PMWcu9Tz0iD50
-4Nal5aeX8gJIAmJGTYBBGc0Ax79RkbywrPdpFEY0iROcvEFNHV3285rPDwIDAP//
-AoGATT1a0ssVMK55wYNlO5N9QXuiEcWef1OOTokr84vpgklbsOEA0PY0Vum+PDOY
-vHIDKcfFT+oG8dpKjow7GgCrwK4sDb5m9unWyWVPBlTntCUsjg8IKOr0a5/g1s/M
-vb8BVcTeTEbh/VpUzHNQVb3rq+iaWj2bi/8NVUNqfP05n78CQQDOXsIOjgaI3jdc
-Agp/g7nKQpqQbmBEnyKCo7tQHMLpn8XCJuua6xfuXssqKGKEp+tKsYE421P7aSYh
-TQu939m9AkEAx6uhWQvSm7rIvkgKMuMCDOM5tjdqfDZ3PuTv2i4VhZ3psJhg0oT9
-r5KFw/Uwam126Mmh5h+M6LBgX7o6DVDquwJAfGUsX9BNkqd8h+sm3Rl0g3X+/pP2
-jPN00bGg5p/swJz14cg1hhvBDYijALFOa4Je3umzbMfo/BDSc58Tdeu2+wJACgFv
-szn+47Sby8S/55Svqvz93VNcNV2gD1LgJ7r+5xT0zsIxfD4ORF6H+n2/ztUTDnVJ
-BiUS4KvXQCNBE/Pl9wJAMnYAfMOolyh96NWCH9ZN3OJmWojpgXjMlw5H02kkRKpZ
-HWnksj3ErNlCo5juXaaOwESBZBB/5+ngsIMPwWT0lg==
------END RSA PRIVATE KEY-----
diff --git a/src/or/buffers.c b/src/or/buffers.c
index 3119fec5a..6dd718527 100644
--- a/src/or/buffers.c
+++ b/src/or/buffers.c
@@ -38,6 +38,10 @@ static int find_str_in_str(const char *str, int str_len,
return -1;
}
+int find_on_inbuf(char *string, int string_len, buf_t *buf) {
+ return find_str_in_str(string, string_len, buf->buf, buf->datalen);
+}
+
/* Create and return a new buf of size 'size'
*/
buf_t *buf_new_with_capacity(size_t size) {
@@ -206,7 +210,7 @@ int flush_buf_tls(tor_tls *tls, buf_t *buf, int *buf_flushlen)
return r;
}
-int write_to_buf(char *string, int string_len, buf_t *buf) {
+int write_to_buf(const char *string, int string_len, buf_t *buf) {
/* append string to buf (growing as needed, return -1 if "too big")
* return total number of bytes on the buf
@@ -285,11 +289,12 @@ int fetch_from_buf_http(buf_t *buf,
}
#define CONTENT_LENGTH "\r\nContent-Length: "
- i = find_str_in_str(CONTENT_LENGTH, sizeof(CONTENT_LENGTH),
+ i = find_str_in_str(CONTENT_LENGTH, strlen(CONTENT_LENGTH),
headers, headerlen);
if(i > 0) {
contentlen = atoi(headers+i);
/* XXX What if content-length is malformed? */
+ log_fn(LOG_DEBUG,"Got a contentlen of %d.",contentlen);
if(bodylen < contentlen) {
log_fn(LOG_DEBUG,"body not all here yet.");
return 0; /* not all there yet */
@@ -307,7 +312,7 @@ int fetch_from_buf_http(buf_t *buf,
body_out[bodylen] = 0; /* null terminate it */
}
buf->datalen -= (headerlen+bodylen);
- memmove(buf, buf->buf+headerlen+bodylen, buf->datalen);
+ memmove(buf->buf, buf->buf+headerlen+bodylen, buf->datalen);
return 1;
}
@@ -401,15 +406,6 @@ int fetch_from_buf_socks(buf_t *buf,
return 1;
}
-int find_on_inbuf(char *string, int string_len, buf_t *buf) {
- /* find first instance of needle 'string' on haystack 'buf'. return how
- * many bytes from the beginning of buf to the end of string.
- * If it's not there, return -1.
- */
-
- return find_str_in_str(string, string_len, buf->buf, buf->datalen);
-}
-
/*
Local Variables:
mode:c
diff --git a/src/or/connection.c b/src/or/connection.c
index 05d337c10..0f71cc164 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -304,19 +304,14 @@ static int connection_tls_finish_handshake(connection_t *conn) {
return -1;
}
log_fn(LOG_DEBUG,"The router's pk matches the one we meant to connect to. Good.");
- crypto_free_pk_env(pk);
} else {
if(connection_exact_get_by_addr_port(router->addr,router->or_port)) {
log_fn(LOG_INFO,"That router is already connected. Dropping.");
return -1;
}
- conn->link_pkey = pk;
- conn->bandwidth = router->bandwidth;
- conn->addr = router->addr, conn->port = router->or_port;
- if(conn->address)
- free(conn->address);
- conn->address = strdup(router->address);
+ connection_or_init_conn_from_router(conn, router);
}
+ crypto_free_pk_env(pk);
} else { /* it's an OP */
conn->bandwidth = DEFAULT_BANDWIDTH_OP;
}
@@ -615,7 +610,7 @@ int connection_handle_write(connection_t *conn) {
return 0;
}
-int connection_write_to_buf(char *string, int len, connection_t *conn) {
+int connection_write_to_buf(const char *string, int len, connection_t *conn) {
if(!len)
return 0;
diff --git a/src/or/connection_or.c b/src/or/connection_or.c
index 6859cff6e..d49667dde 100644
--- a/src/or/connection_or.c
+++ b/src/or/connection_or.c
@@ -73,6 +73,18 @@ int connection_or_finished_flushing(connection_t *conn) {
/*********************/
+void connection_or_init_conn_from_router(connection_t *conn, routerinfo_t *router) {
+ conn->addr = router->addr;
+ conn->port = router->or_port;
+ conn->bandwidth = router->bandwidth;
+ conn->onion_pkey = crypto_pk_dup_key(router->onion_pkey);
+ conn->link_pkey = crypto_pk_dup_key(router->link_pkey);
+ conn->identity_pkey = crypto_pk_dup_key(router->identity_pkey);
+ if(conn->address)
+ free(conn->address);
+ conn->address = strdup(router->address);
+}
+
connection_t *connection_or_connect(routerinfo_t *router) {
connection_t *conn;
@@ -96,12 +108,7 @@ connection_t *connection_or_connect(routerinfo_t *router) {
}
/* set up conn so it's got all the data we need to remember */
- conn->addr = router->addr;
- conn->port = router->or_port;
- conn->bandwidth = router->bandwidth;
- conn->onion_pkey = crypto_pk_dup_key(router->onion_pkey);
- conn->link_pkey = crypto_pk_dup_key(router->link_pkey);
- conn->address = strdup(router->address);
+ connection_or_init_conn_from_router(conn, router);
if(connection_add(conn) < 0) { /* no space, forget it */
connection_free(conn);
diff --git a/src/or/directory.c b/src/or/directory.c
index d1e0713b5..36a9a8ee8 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -19,7 +19,6 @@ static int directorylen=0;
static int directory_dirty=1;
static char fetchstring[] = "GET / HTTP/1.0\r\n\r\n";
-static char uploadstring[] = "POST / HTTP/1.0\r\n\r\n";
static char answerstring[] = "HTTP/1.0 200 OK\r\n\r\n";
/********* END VARIABLES ************/
@@ -88,7 +87,8 @@ void directory_initiate_command(routerinfo_t *router, int command) {
}
static int directory_send_command(connection_t *conn, int command) {
- char *s;
+ const char *s;
+ char tmp[8192];
assert(conn && conn->type == CONN_TYPE_DIR);
@@ -106,8 +106,9 @@ static int directory_send_command(connection_t *conn, int command) {
log_fn(LOG_DEBUG,"Failed to get my descriptor.");
return -1;
}
- if(connection_write_to_buf(uploadstring, strlen(uploadstring), conn) < 0 ||
- connection_write_to_buf(s, strlen(s), conn) < 0) {
+ snprintf(tmp, sizeof(tmp), "POST / HTTP/1.0\r\nContent-Length: %d\r\n\r\n%s",
+ strlen(s), s);
+ if(connection_write_to_buf(tmp, strlen(tmp), conn) < 0) {
log_fn(LOG_DEBUG,"Couldn't write post/descriptor to buffer.");
return -1;
}
@@ -192,7 +193,7 @@ int connection_dir_process_inbuf(connection_t *conn) {
static int directory_handle_command(connection_t *conn) {
char headers[1024];
- char body[1024];
+ char body[50000]; /* XXX */
assert(conn && conn->type == CONN_TYPE_DIR);
diff --git a/src/or/main.c b/src/or/main.c
index 5676ad95a..9f9a558a8 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -12,7 +12,7 @@ static int init_descriptor(void);
/********* START VARIABLES **********/
extern char *conn_type_to_string[];
-extern char *conn_state_to_string[][15];
+extern char *conn_state_to_string[][_CONN_TYPE_MAX+1];
or_options_t options; /* command-line and config-file options */
int global_read_bucket; /* max number of bytes I can read this second */
@@ -320,10 +320,12 @@ static void check_conn_marked(int i) {
log_fn(LOG_DEBUG,"Cleaning up connection.");
if(conn->s >= 0) { /* might be an incomplete edge connection */
/* FIXME there's got to be a better way to check for this -- and make other checks? */
- if(connection_speaks_cells(conn) && conn->state != OR_CONN_STATE_CONNECTING)
- flush_buf_tls(conn->tls, conn->outbuf, &conn->outbuf_flushlen);
- else
+ if(connection_speaks_cells(conn)) {
+ if(conn->state == OR_CONN_STATE_OPEN)
+ flush_buf_tls(conn->tls, conn->outbuf, &conn->outbuf_flushlen);
+ } else {
flush_buf(conn->s, conn->outbuf, &conn->outbuf_flushlen);
+ }
if(connection_wants_to_flush(conn)) /* not done flushing */
log_fn(LOG_WARNING,"Conn (socket %d) still wants to flush. Losing %d bytes!",conn->s, (int)buf_datalen(conn->inbuf));
}
@@ -642,7 +644,9 @@ static int do_main_loop(void) {
}
if(options.OnionRouter) {
- cpu_init(); /* launch cpuworkers. Need to do this *after* we've read the private key. */
+ cpu_init(); /* launch cpuworkers. Need to do this *after* we've read the onion key. */
+ if(options.DirPort == 0) /* not a dirserver; XXX eventually do this for dirservers too */
+ router_upload_desc_to_dirservers(); /* upload our descriptor to all dirservers */
}
/* start up the necessary connections based on which ports are
@@ -981,13 +985,20 @@ static char descriptor[8192];
/* XXX should this replace my_routerinfo? */
static routerinfo_t *desc_routerinfo;
const char *router_get_my_descriptor(void) {
+ log_fn(LOG_DEBUG,"my desc is '%s'",descriptor);
return descriptor;
}
static int init_descriptor(void) {
routerinfo_t *ri;
+ char localhostname[256];
+
+ if(gethostname(localhostname,sizeof(localhostname)) < 0) {
+ log_fn(LOG_ERR,"Error obtaining local hostname");
+ return -1;
+ }
ri = tor_malloc(sizeof(routerinfo_t));
- ri->address = strdup("XXXXXXX"); /*XXX*/
+ ri->address = strdup(localhostname);
ri->nickname = strdup(options.Nickname);
/* No need to set addr. ???? */
ri->or_port = options.ORPort;
diff --git a/src/or/or.h b/src/or/or.h
index 47cc1a5c3..bc5e21d08 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -434,6 +434,8 @@ typedef struct {
/********************************* buffers.c ***************************/
+int find_on_inbuf(char *string, int string_len, buf_t *buf);
+
buf_t *buf_new();
buf_t *buf_new_with_capacity(size_t size);
void buf_free(buf_t *buf);
@@ -448,7 +450,7 @@ int read_to_buf_tls(tor_tls *tls, int at_most, buf_t *buf);
int flush_buf(int s, buf_t *buf, int *buf_flushlen);
int flush_buf_tls(tor_tls *tls, buf_t *buf, int *buf_flushlen);
-int write_to_buf(char *string, int string_len, buf_t *buf);
+int write_to_buf(const char *string, int string_len, buf_t *buf);
int fetch_from_buf(char *string, int string_len, buf_t *buf);
int fetch_from_buf_http(buf_t *buf,
char *headers_out, int max_headerlen,
@@ -456,7 +458,6 @@ int fetch_from_buf_http(buf_t *buf,
int fetch_from_buf_socks(buf_t *buf,
char *addr_out, int max_addrlen,
uint16_t *port_out);
-int find_on_inbuf(char *string, int string_len, buf_t *buf);
/********************************* circuit.c ***************************/
@@ -529,7 +530,7 @@ int connection_wants_to_flush(connection_t *conn);
int connection_outbuf_too_full(connection_t *conn);
int connection_flush_buf(connection_t *conn);
int connection_handle_write(connection_t *conn);
-int connection_write_to_buf(char *string, int len, connection_t *conn);
+int connection_write_to_buf(const char *string, int len, connection_t *conn);
int connection_receiver_bucket_should_increase(connection_t *conn);
@@ -562,6 +563,7 @@ int connection_exit_connect(connection_t *conn);
int connection_or_process_inbuf(connection_t *conn);
int connection_or_finished_flushing(connection_t *conn);
+void connection_or_init_conn_from_router(connection_t *conn, routerinfo_t *router);
connection_t *connection_or_connect(routerinfo_t *router);
int connection_write_cell_to_buf(const cell_t *cellp, connection_t *conn);
@@ -658,6 +660,7 @@ int onion_skin_client_handshake(crypto_dh_env_t *handshake_state,
int learn_my_address(struct sockaddr_in *me);
void router_retry_connections(void);
routerinfo_t *router_pick_directory_server(void);
+void router_upload_desc_to_dirservers(void);
routerinfo_t *router_get_by_addr_port(uint32_t addr, uint16_t port);
routerinfo_t *router_get_by_link_pk(crypto_pk_env_t *pk);
#if 0
diff --git a/src/or/routers.c b/src/or/routers.c
index 24baa5a34..ed37772ce 100644
--- a/src/or/routers.c
+++ b/src/or/routers.c
@@ -37,14 +37,14 @@ router_resolve_directory(directory_t *dir);
int learn_my_address(struct sockaddr_in *me) {
/* local host information */
- char localhostname[512];
+ char localhostname[256];
struct hostent *localhost;
static struct sockaddr_in answer;
static int already_learned=0;
if(!already_learned) {
/* obtain local host information */
- if(gethostname(localhostname,512) < 0) {
+ if(gethostname(localhostname,sizeof(localhostname)) < 0) {
log_fn(LOG_ERR,"Error obtaining local hostname");
return -1;
}
@@ -100,6 +100,20 @@ routerinfo_t *router_pick_directory_server(void) {
return NULL;
}
+void router_upload_desc_to_dirservers(void) {
+ int i;
+ routerinfo_t *router;
+
+ if(!directory)
+ return;
+
+ for(i=0;i<directory->n_routers;i++) {
+ router = directory->routers[i];
+ if(router->dir_port > 0)
+ directory_initiate_command(router, DIR_CONN_STATE_CONNECTING_UPLOAD);
+ }
+}
+
routerinfo_t *router_get_by_addr_port(uint32_t addr, uint16_t port) {
int i;
routerinfo_t *router;