summaryrefslogtreecommitdiff
path: root/packages/avahi/avahi-0.1/static-services-protocol.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/avahi/avahi-0.1/static-services-protocol.patch')
-rw-r--r--packages/avahi/avahi-0.1/static-services-protocol.patch193
1 files changed, 193 insertions, 0 deletions
diff --git a/packages/avahi/avahi-0.1/static-services-protocol.patch b/packages/avahi/avahi-0.1/static-services-protocol.patch
new file mode 100644
index 0000000000..a4f41043c6
--- /dev/null
+++ b/packages/avahi/avahi-0.1/static-services-protocol.patch
@@ -0,0 +1,193 @@
+diff -Nurd avahi-0.1.orig/avahi-daemon/static-services.c avahi-0.1/avahi-daemon/static-services.c
+--- avahi-0.1.orig/avahi-daemon/static-services.c 2005-08-21 23:27:09 +0200
++++ avahi-0.1/avahi-daemon/static-services.c 2005-08-28 00:34:50 +0200
+@@ -251,7 +251,6 @@
+ XML_TAG_DOMAIN_NAME,
+ XML_TAG_HOST_NAME,
+ XML_TAG_PORT,
+- XML_TAG_PROTOCOL,
+ XML_TAG_TXT_RECORD
+ } xml_tag_name;
+
+@@ -285,19 +284,41 @@
+ u->group->replace_wildcards = strcmp(attr[1], "yes") == 0;
+ else
+ goto invalid_attr;
+- }
+
+- if (attr[2])
+- goto invalid_attr;
++ if (attr[2])
++ goto invalid_attr;
++ }
+
+ } else if (u->current_tag == XML_TAG_SERVICE_GROUP && strcmp(el, "service") == 0) {
+- if (attr[0])
+- goto invalid_attr;
++ u->current_tag = XML_TAG_SERVICE;
+
+ assert(!u->service);
+ u->service = static_service_new(u->group);
+
+- u->current_tag = XML_TAG_SERVICE;
++ if (attr[0]) {
++ if (strcmp(attr[0], "protocol") == 0) {
++ AvahiProtocol protocol;
++
++ if (strcmp(attr[1], "ipv4") == 0) {
++ protocol = AVAHI_PROTO_INET;
++ } else if (strcmp(attr[1], "ipv6") == 0) {
++ protocol = AVAHI_PROTO_INET6;
++ } else if (strcmp(attr[1], "any") == 0) {
++ protocol = AVAHI_PROTO_UNSPEC;
++ } else {
++ avahi_log_error("%s: parse failure: invalid protocol specification \"%s\".", u->group->filename, attr[1]);
++ u->failed = 1;
++ return;
++ }
++
++ u->service->protocol = protocol;
++ } else
++ goto invalid_attr;
++
++ if (attr[2])
++ goto invalid_attr;
++ }
++
+ } else if (u->current_tag == XML_TAG_SERVICE && strcmp(el, "type") == 0) {
+ if (attr[0])
+ goto invalid_attr;
+@@ -318,11 +339,6 @@
+ goto invalid_attr;
+
+ u->current_tag = XML_TAG_PORT;
+- } else if (u->current_tag == XML_TAG_SERVICE && strcmp(el, "protocol") == 0) {
+- if (attr[0])
+- goto invalid_attr;
+-
+- u->current_tag = XML_TAG_PROTOCOL;
+ } else if (u->current_tag == XML_TAG_SERVICE && strcmp(el, "txt-record") == 0) {
+ if (attr[0])
+ goto invalid_attr;
+@@ -394,27 +410,6 @@
+ break;
+ }
+
+- case XML_TAG_PROTOCOL: {
+- int protocol;
+- assert(u->service);
+-
+- if (u->buf && strcasecmp (u->buf, "ipv4") == 0) {
+- protocol = AVAHI_PROTO_INET;
+- } else if (u->buf && strcasecmp (u->buf, "ipv6") == 0) {
+- protocol = AVAHI_PROTO_INET6;
+- } else if (u->buf && strcasecmp (u->buf, "any") == 0) {
+- protocol = AVAHI_PROTO_UNSPEC;
+- } else {
+- avahi_log_error("%s: parse failure: invalid protocol specification \"%s\".", u->group->filename, u->buf);
+- u->failed = 1;
+- return;
+- }
+-
+- u->service->protocol = protocol;
+- u->current_tag = XML_TAG_SERVICE;
+- break;
+- }
+-
+ case XML_TAG_TXT_RECORD: {
+ assert(u->service);
+
+@@ -484,7 +479,6 @@
+ break;
+
+ case XML_TAG_PORT:
+- case XML_TAG_PROTOCOL:
+ case XML_TAG_TXT_RECORD:
+ assert(u->service);
+ u->buf = append_cdata(u->buf, s, len);
+diff -Nurd avahi-0.1.orig/avahi-daemon/example.service avahi-0.1/avahi-daemon/example.service
+--- avahi-0.1.orig/avahi-daemon/example.service 2005-08-21 23:27:09 +0200
++++ avahi-0.1/avahi-daemon/example.service 2005-08-28 00:34:50 +0200
+@@ -16,12 +16,11 @@
+ <port>631</port>
+ </service>
+
+- <service>
++ <service protocol="ipv6">
+ <type>_uberprinter._tcp</type>
+ <domain-name>local</domain-name>
+ <host-name>quux.local</host-name>
+ <port>4711</port>
+- <protocol>any</protocol>
+ <txt-record>this=is</txt-record>
+ <txt-record>a=really</txt-record>
+ <txt-record>bad=example</txt-record>
+diff -Nurd avahi-0.1.orig/avahi-daemon/avahi-service.dtd avahi-0.1/avahi-daemon/avahi-service.dtd
+--- avahi-0.1.orig/avahi-daemon/avahi-service.dtd 2005-08-21 23:27:09 +0200
++++ avahi-0.1/avahi-daemon/avahi-service.dtd 2005-08-28 00:34:50 +0200
+@@ -5,7 +5,7 @@
+ <!ELEMENT name (#PCDATA)>
+ <!ATTLIST name replace-wildcards (yes|no) "no">
+ <!ELEMENT service (type,domain-name?,host-name?,port,txt-record*)>
+-<!ATTLIST service>
++<!ATTLIST service protocol (ipv4|ipv6|any) "any">
+ <!ELEMENT type (#PCDATA)>
+ <!ATTLIST type>
+ <!ELEMENT domain-name (#PCDATA)>
+@@ -14,7 +14,5 @@
+ <!ATTLIST host-name>
+ <!ELEMENT port (#PCDATA)>
+ <!ATTLIST port>
+-<!ELEMENT protocol (#PCDATA)>
+-<!ATTLIST protocol>
+ <!ELEMENT txt-record (#PCDATA)>
+ <!ATTLIST txt-record>
+diff -Nurd avahi-0.1.orig/man/avahi.service.5.xml.in avahi-0.1/man/avahi.service.5.xml.in
+--- avahi-0.1.orig/man/avahi.service.5.xml.in 2005-08-21 23:27:10 +0200
++++ avahi-0.1/man/avahi.service.5.xml.in 2005-08-28 00:34:50 +0200
+@@ -45,7 +45,7 @@
+ </option>
+
+ <option>
+- <p><opt>&lt;name replace-wildcards="yes|no"/&gt;</opt> The
++ <p><opt>&lt;name replace-wildcards="yes|no"&gt;</opt> The
+ service name. If <opt>replace-wildcards</opt> is "yes", any
+ occurence of the string "%h" will be replaced by the local
+ host name. This can be used for service names like "Remote
+@@ -54,16 +54,19 @@
+ </option>
+
+ <option>
+- <p><opt>&lt;service&gt;</opt> Contains the service information
+- for exactly one service type. Should contain one
+- <opt>&lt;type&gt;</opt> and one <opt>&lt;port&gt;</opt>
+- element. Optionally it may contain one
++ <p><opt>&lt;service protocol="ipv4|ipv6|any"&gt;</opt>
++ Contains the service information for exactly one service
++ type. Should contain one <opt>&lt;type&gt;</opt> and one
++ <opt>&lt;port&gt;</opt> element. Optionally it may contain one
+ <opt>&lt;domain-name&gt;</opt>, one
+ <opt>&lt;host-name&gt;</opt> and multiple
+- <opt>&lt;txt-record&gt;</opt> elements.</p>
++ <opt>&lt;txt-record&gt;</opt> elements. The attribute
++ <opt>protocol</opt> specifies the protocol to
++ advertise the service on. If <opt>any</opt> is used (which is
++ the default), the service will be advertised on both IPv4 and
++ IPv6.</p>
+ </option>
+
+-
+ <option>
+ <p><opt>&lt;type&gt;</opt> Contains the DNS-SD service type for this service. e.g. "_http._tcp".</p>
+ </option>
+@@ -88,10 +91,6 @@
+ </option>
+
+ <option>
+- <p><opt>&lt;protocol&gt;</opt> The protocol to advertise the service on, can be any of <opt>ipv4</opt>, <opt>ipv6</opt> or <opt>any</opt>.</p>
+- </option>
+-
+- <option>
+ <p><opt>&lt;txt-record&gt;</opt> DNS-SD TXT record data.</p>
+ </option>
+