along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: protocol.c,v 1.28.4.94 2001/06/09 10:00:34 guus Exp $
+ $Id: protocol.c,v 1.28.4.97 2001/07/01 21:42:13 guus Exp $
*/
#include "config.h"
return -1;
}
- /* First check if the host we connected to is already in our
+ /* First check if the host is already in our
connection list. If so, we are probably making a loop, which
is not desirable.
*/
- if(cl->status.outgoing)
+ if((old = lookup_id(cl->name)))
{
- if((old = lookup_id(cl->name)))
+ if(debug_lvl >= DEBUG_CONNECTIONS)
+ syslog(LOG_NOTICE, _("%s (%s) is already in our connection list"), cl->name, cl->hostname);
+ if(cl->status.outgoing)
{
- if(debug_lvl >= DEBUG_CONNECTIONS)
- syslog(LOG_NOTICE, _("Uplink %s (%s) is already in our connection list"), cl->name, cl->hostname);
cl->status.outgoing = 0;
old->status.outgoing = 1;
- terminate_connection(cl);
- return 0;
}
+ terminate_connection(cl);
+ return 0;
}
/* Now we can add the name to the id tree */
node = avl_unlink(connection_tree, cl);
cl->port = port;
- avl_insert_node(connection_tree, node);
-
+ if(!avl_insert_node(connection_tree, node))
+ {
+ old = avl_search_node(connection_tree, node)->data;
+ syslog(LOG_ERR, _("%s is listening on %s:%hd, which is already in use by %s!"),
+ cl->name, cl->hostname, cl->port, old->name);
+ return -1;
+ }
+
/* Read in the public key, so that we can send a metakey */
if(read_rsa_public_key(cl))