diff --git a/keyring.c b/keyring.c index c312f380..94a6d0d3 100644 --- a/keyring.c +++ b/keyring.c @@ -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)); diff --git a/overlay_address.c b/overlay_address.c index 28d3900f..e70d551b 100644 --- a/overlay_address.c +++ b/overlay_address.c @@ -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){ diff --git a/overlay_address.h b/overlay_address.h index bbedfdd6..6021b795 100644 --- a/overlay_address.h +++ b/overlay_address.h @@ -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); diff --git a/overlay_interface.c b/overlay_interface.c index 4164d9ae..085f68f7 100644 --- a/overlay_interface.c +++ b/overlay_interface.c @@ -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 { diff --git a/overlay_packetformats.c b/overlay_packetformats.c index d77a5b51..28fdd2af 100644 --- a/overlay_packetformats.c +++ b/overlay_packetformats.c @@ -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(); diff --git a/overlay_queue.c b/overlay_queue.c index 9c8290ff..0db0c84e 100644 --- a/overlay_queue.c +++ b/overlay_queue.c @@ -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 diff --git a/serval.h b/serval.h index 5e57b195..6df231ea 100644 --- a/serval.h +++ b/serval.h @@ -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,