[Gd-chatter] r11011 - trunk/libraries/protocols

hannes at gwydiondylan.org hannes at gwydiondylan.org
Thu Nov 30 00:47:10 CET 2006


Author: hannes
Date: Thu Nov 30 00:47:08 2006
New Revision: 11011

Modified:
   trunk/libraries/protocols/dns.dylan
Log:
Bug: 7299
*replaced <domain-name-fragment> with new <variably-typed-container-frame> superclass

Modified: trunk/libraries/protocols/dns.dylan
==============================================================================
--- trunk/libraries/protocols/dns.dylan	(original)
+++ trunk/libraries/protocols/dns.dylan	Thu Nov 30 00:47:08 2006
@@ -36,6 +36,7 @@
 
 
 define protocol domain-name (container-frame)
+  summary "%s", curry(as, <string>);
   repeated field fragment :: <domain-name-fragment>,
     reached-end?: frame.type-code = 3 | frame.data-length = 0;
 end;
@@ -53,11 +54,12 @@
   make(<domain-name>, fragment: map(curry(as, <label>), labels));
 end;
 
-define protocol domain-name-fragment (container-frame)
-  field type-code :: <2bit-unsigned-integer> = 0;
+define protocol domain-name-fragment (variably-typed-container-frame)
+  layering field type-code :: <2bit-unsigned-integer> = 0;
 end;
 
 define protocol label-offset (domain-name-fragment)
+  over <domain-name-fragment> 3;
   field offset :: <14bit-unsigned-integer>;
 end;
 
@@ -93,6 +95,7 @@
 end;
 
 define protocol label (domain-name-fragment)
+  over <domain-name-fragment> 0;
   field data-length :: <6bit-unsigned-integer>,
     fixup: frame.raw-data.frame-size.byte-offset;
   field raw-data :: <externally-delimited-string>,
@@ -109,21 +112,6 @@
   make(<label>, raw-data: as(<externally-delimited-string>, string))
 end;
 
-define method parse-frame (frame-type == <domain-name-fragment>,
-                           packet :: <byte-sequence>,
-                           #next next-method,
-                           #key parent :: false-or(<container-frame>))
- => (value :: <domain-name-fragment>, next-unparsed :: false-or(<integer>))
-  let domain-name = next-method();
-  let label-frame-type
-    = select (domain-name.type-code)
-        0 => <label>;
-        3 => <label-offset>;
-        otherwise => signal(make(<malformed-packet-error>))
-      end;
-  parse-frame(label-frame-type, packet, parent: parent);
-end;
-
 
 define protocol dns-question (container-frame)
   field domainname :: <domain-name>;



More information about the chatter mailing list