[Pkg-utopia-commits] r1333 - in packages/experimental/avahi/debian: . patches

Sjoerd Simons sjoerd at alioth.debian.org
Wed Apr 4 13:33:11 UTC 2007


Author: sjoerd
Date: 2007-04-04 13:33:10 +0000 (Wed, 04 Apr 2007)
New Revision: 1333

Added:
   packages/experimental/avahi/debian/patches/12_avahi-generic-records.patch
   packages/experimental/avahi/debian/patches/13_avahi_big_dns_records.patch
Modified:
   packages/experimental/avahi/debian/changelog
Log:
* debian/patches/12_avahi-generic-records.patch
  + Added. Fixes the resolving of generic dns records.
    Patch from http://avahi.org/ticket/130
* debian/patches/13_avahi_big_dns_records.patch
  + Added. Fixes publishing of big dns records.
    Patch from http://avahi.org/ticket/131

Modified: packages/experimental/avahi/debian/changelog
===================================================================
--- packages/experimental/avahi/debian/changelog	2007-04-03 15:51:56 UTC (rev 1332)
+++ packages/experimental/avahi/debian/changelog	2007-04-04 13:33:10 UTC (rev 1333)
@@ -1,3 +1,14 @@
+avahi (0.6.17-2) experimental; urgency=low
+
+  * debian/patches/12_avahi-generic-records.patch
+    + Added. Fixes the resolving of generic dns records.
+      Patch from http://avahi.org/ticket/130
+  * debian/patches/13_avahi_big_dns_records.patch
+    + Added. Fixes publishing of big dns records.
+      Patch from http://avahi.org/ticket/131
+
+ -- Sjoerd Simons <sjoerd at debian.org>  Wed, 04 Apr 2007 14:40:35 +0200
+
 avahi (0.6.17-1) experimental; urgency=low
 
   * New upstream release:

Added: packages/experimental/avahi/debian/patches/12_avahi-generic-records.patch
===================================================================
--- packages/experimental/avahi/debian/patches/12_avahi-generic-records.patch	2007-04-03 15:51:56 UTC (rev 1332)
+++ packages/experimental/avahi/debian/patches/12_avahi-generic-records.patch	2007-04-04 13:33:10 UTC (rev 1333)
@@ -0,0 +1,21 @@
+Index: avahi-core/dns.c
+===================================================================
+--- avahi-core/dns.c	(revision 1400)
++++ avahi-core/dns.c	(working copy)
+@@ -589,6 +589,7 @@
+             if (rdlength > 0) {
+ 
+                 r->data.generic.data = avahi_memdup(avahi_dns_packet_get_rptr(p), rdlength);
++                r->data.generic.size = rdlength;
+                 
+                 if (avahi_dns_packet_skip(p, rdlength) < 0)
+                     return -1;
+@@ -754,7 +755,7 @@
+         default:
+ 
+             if (r->data.generic.size)
+-                if (avahi_dns_packet_append_bytes(p, r->data.generic.data, r->data.generic.size))
++                if (!avahi_dns_packet_append_bytes(p, r->data.generic.data, r->data.generic.size))
+                     return -1;
+ 
+             break;

Added: packages/experimental/avahi/debian/patches/13_avahi_big_dns_records.patch
===================================================================
--- packages/experimental/avahi/debian/patches/13_avahi_big_dns_records.patch	2007-04-03 15:51:56 UTC (rev 1332)
+++ packages/experimental/avahi/debian/patches/13_avahi_big_dns_records.patch	2007-04-04 13:33:10 UTC (rev 1333)
@@ -0,0 +1,104 @@
+Index: avahi-core/dns.c
+===================================================================
+--- avahi-core/dns.c	(revision 1400)
++++ avahi-core/dns.c	(working copy)
+@@ -786,7 +787,7 @@
+         goto fail;
+     
+     size = avahi_dns_packet_extend(p, 0) - start;
+-    assert(size <= 0xFFFF);
++    assert(size <= AVAHI_DNS_MAX_RDATA);
+ 
+ /*     avahi_log_debug("appended %u", size); */
+ 
+Index: avahi-core/dns.h
+===================================================================
+--- avahi-core/dns.h	(revision 1400)
++++ avahi-core/dns.h	(working copy)
+@@ -25,10 +25,12 @@
+ #include "rr.h"
+ #include "hashmap.h"
+ 
+-#define AVAHI_DNS_PACKET_SIZE_MAX 9000
+ #define AVAHI_DNS_PACKET_HEADER_SIZE 12
+ #define AVAHI_DNS_PACKET_EXTRA_SIZE 48
+ #define AVAHI_DNS_LABELS_MAX 127
++#define AVAHI_DNS_MAX_RDATA 0xFFFF
++#define AVAHI_DNS_PACKET_SIZE_MAX \
++  AVAHI_DNS_MAX_RDATA + AVAHI_DNS_PACKET_HEADER_SIZE  + AVAHI_DNS_LABELS_MAX
+ 
+ typedef struct AvahiDnsPacket {
+     size_t size, rindex, max_size;
+Index: avahi-core/response-sched.c
+===================================================================
+--- avahi-core/response-sched.c	(revision 1400)
++++ avahi-core/response-sched.c	(working copy)
+@@ -245,11 +245,9 @@
+         avahi_dns_packet_free(p);
+ 
+         /* OK, the packet was too small, so create one that fits */
+-        size = avahi_record_get_estimate_size(rj->record) + AVAHI_DNS_PACKET_HEADER_SIZE;
++        size = avahi_record_get_estimate_size(rj->record) 
++               + AVAHI_DNS_PACKET_HEADER_SIZE + AVAHI_DNS_PACKET_EXTRA_SIZE;
+ 
+-        if (size > AVAHI_DNS_PACKET_SIZE_MAX)
+-            size = AVAHI_DNS_PACKET_SIZE_MAX;
+-        
+         if (!(p = avahi_dns_packet_new_response(size, 1)))
+             return; /* OOM */
+ 
+Index: avahi-core/probe-sched.c
+===================================================================
+--- avahi-core/probe-sched.c	(revision 1400)
++++ avahi-core/probe-sched.c	(working copy)
+@@ -248,10 +248,7 @@
+         size =
+             avahi_key_get_estimate_size(pj->record->key) +
+             avahi_record_get_estimate_size(pj->record) +
+-            AVAHI_DNS_PACKET_HEADER_SIZE;
+-        
+-        if (size > AVAHI_DNS_PACKET_SIZE_MAX)
+-            size = AVAHI_DNS_PACKET_SIZE_MAX;
++            AVAHI_DNS_PACKET_HEADER_SIZE + AVAHI_DNS_PACKET_EXTRA_SIZE;
+ 
+         if (!(p = avahi_dns_packet_new_query(size)))
+             return; /* OOM */
+Index: avahi-core/server.c
+===================================================================
+--- avahi-core/server.c	(revision 1400)
++++ avahi-core/server.c	(working copy)
+@@ -448,9 +448,9 @@
+                         /* The record is too large for one packet, so create a larger packet */
+ 
+                         avahi_dns_packet_free(reply);
+-                        size = avahi_record_get_estimate_size(r) + AVAHI_DNS_PACKET_HEADER_SIZE;
+-                        if (size > AVAHI_DNS_PACKET_SIZE_MAX)
+-                            size = AVAHI_DNS_PACKET_SIZE_MAX;
++                        size = avahi_record_get_estimate_size(r) 
++                                + AVAHI_DNS_PACKET_HEADER_SIZE
++                                + AVAHI_DNS_PACKET_EXTRA_SIZE;
+ 
+                         if (!(reply = avahi_dns_packet_new_reply(p, size, 0, 1)))
+                             break; /* OOM */
+@@ -458,12 +458,19 @@
+                         if (!avahi_dns_packet_append_record(reply, r, flush_cache, 0)) {
+                             char *t;
+                             avahi_dns_packet_free(reply);
++                            reply = NULL;
+                             t = avahi_record_to_string(r);
+                             avahi_log_warn("Record [%s] too large, doesn't fit in any packet!", t);
+                             avahi_free(t);
+                             break;
+-                        } else
+-                            avahi_dns_packet_inc_field(reply, AVAHI_DNS_FIELD_ANCOUNT);
++                        } 
++                        /* Packet specifically made so this record fits.. no
++                         * more records can be added so sent it out */
++                        avahi_dns_packet_inc_field(reply, AVAHI_DNS_FIELD_ANCOUNT);
++                        avahi_interface_send_packet_unicast(i, reply, a, port);
++                        avahi_dns_packet_free(reply);
++                        reply = NULL;
++                        break;
+                     }
+ 
+                     /* Appending the record didn't succeeed, so let's send this packet, and create a new one */




More information about the Pkg-utopia-commits mailing list