Rely on please explain, don't send too many full sids

This commit is contained in:
Jeremy Lakeman 2012-11-26 15:21:01 +10:30
parent aeaeac8a79
commit 54f9d9b0e0
7 changed files with 7 additions and 46 deletions

View File

@ -1269,9 +1269,6 @@ int keyring_send_sas_request(struct subscriber *subscriber){
if (debug & DEBUG_KEYRING)
DEBUGF("Requesting SAS mapping for SID=%s", alloca_tohex_sid(subscriber->sid));
// always send our sid in full, it's likely this is a new peer
my_subscriber->send_full = 1;
/* request mapping (send request auth-crypted). */
overlay_mdp_frame mdp;
memset(&mdp,0,sizeof(overlay_mdp_frame));

View File

@ -82,12 +82,6 @@ struct subscriber *find_subscriber(const unsigned char *sid, int len, int create
ptr->subscribers[nibble]=ret;
bcopy(sid, ret->sid, SID_SIZE);
ret->abbreviate_len=pos;
// always send the full sid on first use
ret->send_full=1;
// always send my full sid when we hear about someone new
if (my_subscriber)
my_subscriber->send_full = 1;
}
return ptr->subscribers[nibble];
@ -371,28 +365,6 @@ int overlay_address_append(struct decode_context *context, struct overlay_buffer
return 0;
}
int overlay_address_append_self(struct decode_context *context, overlay_interface *interface, struct overlay_buffer *b){
static int ticks_per_full_address = -1;
if (ticks_per_full_address == -1) {
ticks_per_full_address = confValueGetInt64Range("mdp.selfannounce.ticks_per_full_address", 4LL, 1LL, 1000000LL);
INFOF("ticks_per_full_address = %d", ticks_per_full_address);
}
if (!my_subscriber)
return WHY("I don't know who I am yet");
if (++interface->ticks_since_sent_full_address > ticks_per_full_address){
interface->ticks_since_sent_full_address = 0;
my_subscriber->send_full=1;
}
if (overlay_address_append(context, b, my_subscriber))
return WHY("Could not append my sid");
context->sender = my_subscriber;
return 0;
}
static int add_explain_response(struct subscriber *subscriber, void *context){
struct decode_context *response = context;
if (!response->please_explain){

View File

@ -129,7 +129,6 @@ int overlay_broadcast_generate_address(struct broadcast *addr);
int overlay_broadcast_append(struct decode_context *context, struct overlay_buffer *b, struct broadcast *broadcast);
int overlay_address_append(struct decode_context *context, struct overlay_buffer *b, struct subscriber *subscriber);
int overlay_address_append_self(struct decode_context *context, overlay_interface *interface, struct overlay_buffer *b);
int overlay_address_parse(struct decode_context *context, struct overlay_buffer *b, struct broadcast *broadcast, struct subscriber **subscriber);
int send_please_explain(struct decode_context *context, struct subscriber *source, struct subscriber *destination);

View File

@ -428,9 +428,6 @@ overlay_interface_init_socket(int interface_index)
INFOF("Interface %s addr %s, is up",interface->name, inet_ntoa(interface->broadcast_address.sin_addr));
// mark our sid to be sent in full
if (my_subscriber)
my_subscriber->send_full = 1;
directory_registration();
return 0;
@ -522,10 +519,6 @@ overlay_interface_init(char *name, struct in_addr src_addr, struct in_addr netma
interface->state=INTERFACE_STATE_UP;
INFOF("Dummy interface %s is up",interface->name);
// mark our sid to be sent in full
if (my_subscriber)
my_subscriber->send_full = 1;
directory_registration();
} else {

View File

@ -27,14 +27,15 @@ struct sockaddr_in loopback;
unsigned char magic_header[]={0x00, 0x01};
int overlay_packet_init_header(struct overlay_interface *interface, struct decode_context *context,
struct overlay_buffer *buff){
int overlay_packet_init_header(struct decode_context *context, struct overlay_buffer *buff){
if (ob_append_bytes(buff,magic_header,sizeof magic_header))
return -1;
return overlay_address_append_self(context, interface, buff);
if (overlay_address_append(context, buff, my_subscriber))
return -1;
context->sender = my_subscriber;
return 0;
}
// a frame destined for one of our local addresses, or broadcast, has arrived. Process it.
int process_incoming_frame(time_ms_t now, struct overlay_interface *interface, struct overlay_frame *f, struct decode_context *context){
IN();

View File

@ -241,7 +241,7 @@ overlay_init_packet(struct outgoing_packet *packet, overlay_interface *interface
packet->add_advertisements=1;
ob_limitsize(packet->buffer, packet->interface->mtu);
overlay_packet_init_header(interface, &packet->context, packet->buffer);
overlay_packet_init_header(&packet->context, packet->buffer);
if (tick){
/* 1. Send announcement about ourselves, including one SID that we host if we host more than one SID

View File

@ -444,8 +444,7 @@ time_ms_t overlay_time_until_next_tick();
int overlay_add_selfannouncement(struct decode_context *context, int interface,struct overlay_buffer *b);
int overlay_frame_append_payload(struct decode_context *context, overlay_interface *interface,
struct overlay_frame *p, struct subscriber *next_hop, struct overlay_buffer *b);
int overlay_packet_init_header(struct overlay_interface *interface, struct decode_context *context,
struct overlay_buffer *buff);
int overlay_packet_init_header(struct decode_context *context, struct overlay_buffer *buff);
int overlay_frame_build_header(struct decode_context *context, struct overlay_buffer *buff,
int queue, int type, int modifiers, int ttl,
struct broadcast *broadcast, struct subscriber *next_hop,