All pastes #950939 Raw Edit

Etwas

public text v1 · immutable
·published 2008-03-20 22:47 UTC
rendered paste body
===================================================================
--- src/Mono.Zeroconf.Providers.Avahi/Mono.Zeroconf.Providers.Avahi/ResolvableService.cs	(Revision 98696)
+++ src/Mono.Zeroconf.Providers.Avahi/Mono.Zeroconf.Providers.Avahi/ResolvableService.cs	(Arbeitskopie)
@@ -73,6 +73,7 @@
                 IPHostEntry host_entry = new IPHostEntry();
                 host_entry.AddressList = new IPAddress[1];
                 host_entry.AddressList[0] = service.Address;
+                host_entry.AddressList[0].ScopeId = service.NetworkInterface;
                 host_entry.HostName = service.HostName;
                 return host_entry;
             }
Index: src/Mono.Zeroconf.Providers.Bonjour/Mono.Zeroconf.Providers.Bonjour/BrowseService.cs
===================================================================
--- src/Mono.Zeroconf.Providers.Bonjour/Mono.Zeroconf.Providers.Bonjour/BrowseService.cs	(Revision 98696)
+++ src/Mono.Zeroconf.Providers.Bonjour/Mono.Zeroconf.Providers.Bonjour/BrowseService.cs	(Arbeitskopie)
@@ -125,18 +125,15 @@
         {
             switch(rrtype) {
                 case ServiceType.A:
-                    if(rdlen != 4) {
+                    if(rdlen != 4 && rdlen != 16) {
                         break;
                     }
-                    
-                    // ~4.5 times faster than Marshal.Copy into byte[4]
-                    uint address_raw = (uint)(Marshal.ReadByte (rdata, 3) << 24);
-                    address_raw |= (uint)(Marshal.ReadByte (rdata, 2) << 16);
-                    address_raw |= (uint)(Marshal.ReadByte (rdata, 1) << 8);
-                    address_raw |= (uint)Marshal.ReadByte (rdata, 0);
 
-                    IPAddress address = new IPAddress(address_raw);
+                    byte[] address_raw = new byte[rdlen];
+                    Marshal.Copy (rdata, address_raw, 0, rdlen);
 
+                    IPAddress address = new IPAddress(address_raw, interfaceIndex);
+
                     if(hostentry == null) {
                         hostentry = new IPHostEntry();
                         hostentry.HostName = hosttarget;