]> git.meshlink.io Git - catta/blobdiff - avahi-core/psched.c
update todo
[catta] / avahi-core / psched.c
index 249e279f30795173bb4e25daaa5c88d6b562a8e1..60bf40c88a57f7d9df5bc24018c296d575d6b5ed 100644 (file)
@@ -163,7 +163,7 @@ static void append_known_answers_and_send(AvahiPacketScheduler *s, AvahiDnsPacke
     
     while ((ka = s->known_answers)) {
 
-        while (!avahi_dns_packet_append_record(p, ka->record, FALSE)) {
+        while (!avahi_dns_packet_append_record(p, ka->record, FALSE, 0)) {
 
             g_assert(!avahi_dns_packet_is_empty(p));
 
@@ -172,7 +172,7 @@ static void append_known_answers_and_send(AvahiPacketScheduler *s, AvahiDnsPacke
             avahi_interface_send_packet(s->interface, p);
             avahi_dns_packet_free(p);
 
-            p = avahi_dns_packet_new_query(s->interface->hardware->mtu - 48);
+            p = avahi_dns_packet_new_query(s->interface->hardware->mtu);
             n = 0;
         }
 
@@ -206,7 +206,7 @@ static void query_elapse(AvahiTimeEvent *e, gpointer data) {
 
     g_assert(!s->known_answers);
     
-    p = avahi_dns_packet_new_query(s->interface->hardware->mtu - 48);
+    p = avahi_dns_packet_new_query(s->interface->hardware->mtu);
     d = packet_add_query_job(s, p, qj);
     g_assert(d);
     n = 1;
@@ -246,7 +246,7 @@ AvahiQueryJob* query_job_new(AvahiPacketScheduler *s, AvahiKey *key) {
     return qj;
 }
 
-void avahi_packet_scheduler_post_query(AvahiPacketScheduler *s, AvahiKey *key, gboolean immediately) {
+gboolean avahi_packet_scheduler_post_query(AvahiPacketScheduler *s, AvahiKey *key, gboolean immediately) {
     GTimeVal tv;
     AvahiQueryJob *qj;
     
@@ -264,7 +264,7 @@ void avahi_packet_scheduler_post_query(AvahiPacketScheduler *s, AvahiKey *key, g
             /* Duplicate questions suppression */
             if (d >= 0 && d <= AVAHI_QUERY_HISTORY_MSEC*1000) {
                 g_message("WARNING! DUPLICATE QUERY SUPPRESSION ACTIVE!");
-                return;
+                return FALSE;
             }
             
             query_job_free(s, qj);
@@ -276,6 +276,7 @@ void avahi_packet_scheduler_post_query(AvahiPacketScheduler *s, AvahiKey *key, g
     qj = query_job_new(s, key);
     qj->delivery = tv;
     qj->time_event = avahi_time_event_queue_add(s->server->time_event_queue, &qj->delivery, query_elapse, qj);
+    return TRUE;
 }
 
 static guint8* packet_add_response_job(AvahiPacketScheduler *s, AvahiDnsPacket *p, AvahiResponseJob *rj) {
@@ -285,7 +286,7 @@ static guint8* packet_add_response_job(AvahiPacketScheduler *s, AvahiDnsPacket *
     g_assert(p);
     g_assert(rj);
 
-    if ((d = avahi_dns_packet_append_record(p, rj->record, rj->flush_cache))) {
+    if ((d = avahi_dns_packet_append_record(p, rj->record, rj->flush_cache, 0))) {
         GTimeVal tv;
 
         rj->done = 1;
@@ -306,7 +307,7 @@ static void send_response_packet(AvahiPacketScheduler *s, AvahiResponseJob *rj)
 
     g_assert(s);
 
-    p = avahi_dns_packet_new_response(s->interface->hardware->mtu - 200);
+    p = avahi_dns_packet_new_response(s->interface->hardware->mtu, TRUE);
     n = 0;
 
     /* If a job was specified, put it in the packet. */
@@ -374,7 +375,6 @@ static AvahiResponseJob* response_job_new(AvahiPacketScheduler *s, AvahiRecord *
     rj->record = avahi_record_ref(record);
     rj->done = FALSE;
     rj->time_event = NULL;
-    rj->address_valid = FALSE;
     rj->flush_cache = FALSE;
     
     AVAHI_LLIST_PREPEND(AvahiResponseJob, jobs, s->response_jobs, rj);
@@ -382,7 +382,7 @@ static AvahiResponseJob* response_job_new(AvahiPacketScheduler *s, AvahiRecord *
     return rj;
 }
 
-void avahi_packet_scheduler_post_response(AvahiPacketScheduler *s, const AvahiAddress *a, AvahiRecord *record, gboolean flush_cache, gboolean immediately) {
+gboolean avahi_packet_scheduler_post_response(AvahiPacketScheduler *s, AvahiRecord *record, gboolean flush_cache, gboolean immediately) {
     AvahiResponseJob *rj;
     GTimeVal tv;
     
@@ -406,16 +406,9 @@ void avahi_packet_scheduler_post_response(AvahiPacketScheduler *s, const AvahiAd
             d >= 0 && d <= AVAHI_RESPONSE_HISTORY_MSEC*1000) {
             g_message("WARNING! DUPLICATE RESPONSE SUPPRESSION ACTIVE!");
 
-            /* This job is no longer specific to a single querier, so
-             * make sure it isn't suppressed by known answer
-             * suppresion */
-
-            if (rj->address_valid && (!a || avahi_address_cmp(a, &rj->address) != 0))
-                rj->address_valid = FALSE;
-
             rj->flush_cache = flush_cache;
             
-            return;
+            return FALSE;
         }
 
         /* Either one was a goodbye packet, but the other was not, so
@@ -432,12 +425,7 @@ void avahi_packet_scheduler_post_response(AvahiPacketScheduler *s, const AvahiAd
     rj->delivery = tv;
     rj->time_event = avahi_time_event_queue_add(s->server->time_event_queue, &rj->delivery, response_elapse, rj);
 
-    /* Store the address of the host this messages is intended to, so
-       that we can drop this job in case a truncated message with
-       known answer suppresion entries is recieved */
-
-    if ((rj->address_valid = !!a))
-        rj->address = *a;
+    return TRUE;
 }
 
 void avahi_packet_scheduler_incoming_query(AvahiPacketScheduler *s, AvahiKey *key) {
@@ -486,7 +474,6 @@ void response_job_set_elapse_time(AvahiPacketScheduler *s, AvahiResponseJob *rj,
         avahi_time_event_queue_update(s->server->time_event_queue, rj->time_event, &tv);
     else
         rj->time_event = avahi_time_event_queue_add(s->server->time_event_queue, &tv, response_elapse, rj);
-    
 }
 
 void avahi_packet_scheduler_incoming_response(AvahiPacketScheduler *s, AvahiRecord *record) {
@@ -550,31 +537,6 @@ mark_done:
     g_get_current_time(&rj->delivery);
 }
 
-void avahi_packet_scheduler_incoming_known_answer(AvahiPacketScheduler *s, AvahiRecord *record, const AvahiAddress *a) {
-    AvahiResponseJob *rj;
-    
-    g_assert(s);
-    g_assert(record);
-    g_assert(a);
-
-    for (rj = s->response_jobs; rj; rj = rj->jobs_next) {
-
-        g_assert(record->ttl > 0);
-        g_assert(rj->record->ttl/2);
-        
-        if (avahi_record_equal_no_ttl(rj->record, record))
-            if (rj->address_valid)
-                if (avahi_address_cmp(&rj->address, a))
-                    if (record->ttl >= rj->record->ttl/2) {
-
-            /* Let's suppress it */
-
-            response_job_free(s, rj);
-            break;
-        }
-    }
-}
-
 void avahi_packet_scheduler_flush_responses(AvahiPacketScheduler *s) {
     AvahiResponseJob *rj;
     
@@ -663,7 +625,7 @@ static void probe_elapse(AvahiTimeEvent *e, gpointer data) {
     g_assert(pj);
     s = pj->scheduler;
 
-    p = avahi_dns_packet_new_query(s->interface->hardware->mtu - 48);
+    p = avahi_dns_packet_new_query(s->interface->hardware->mtu);
 
     /* Add the import probe */
     if (!packet_add_probe_query(s, p, pj)) {
@@ -698,7 +660,7 @@ static void probe_elapse(AvahiTimeEvent *e, gpointer data) {
         if (!pj->chosen)
             continue;
 
-        if (!avahi_dns_packet_append_record(p, pj->record, TRUE)) {
+        if (!avahi_dns_packet_append_record(p, pj->record, TRUE, 0)) {
             g_warning("Bad probe size estimate!");
 
             /* Unmark all following jobs */
@@ -720,7 +682,7 @@ static void probe_elapse(AvahiTimeEvent *e, gpointer data) {
     avahi_dns_packet_free(p);
 }
 
-void avahi_packet_scheduler_post_probe(AvahiPacketScheduler *s, AvahiRecord *record, gboolean immediately) {
+gboolean avahi_packet_scheduler_post_probe(AvahiPacketScheduler *s, AvahiRecord *record, gboolean immediately) {
     AvahiProbeJob *pj;
     GTimeVal tv;
     
@@ -734,4 +696,6 @@ void avahi_packet_scheduler_post_probe(AvahiPacketScheduler *s, AvahiRecord *rec
     pj = probe_job_new(s, record);
     pj->delivery = tv;
     pj->time_event = avahi_time_event_queue_add(s->server->time_event_queue, &pj->delivery, probe_elapse, pj);
+
+    return TRUE;
 }