draft-ietf-urn-ietf-09.txt   rfc2648.txt 
Internet-Draft Ryan Moats
draft-ietf-urn-ietf-09.txt AT&T
Expires in six months May 1999
A URN Namespace for IETF Documents
Filename: draft-ietf-urn-ietf-09.txt
Status of This Memo Network Working Group R. Moats
Request for Comments: 2648 AT&T
This document is an Internet-Draft and is in full conformance with Category: Informational August 1999
all provisions of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering A URN Namespace for IETF Documents
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six Status of this Memo
months and may be updated, replaced, or obsoleted by other
documents at any time. It is inappropriate to use Internet-
Drafts as reference material or to cite them other than as ``work
in progress.''
The list of current Internet-Drafts can be accessed at This memo provides information for the Internet community. It does
http://www.ietf.org/ietf/1id-abstracts.txt not specify an Internet standard of any kind. Distribution of this
memo is unlimited.
The list of Internet-Draft Shadow Directories can be accessed at Copyright Notice
http://www.ietf.org/shadow.html.
To learn the current status of any Internet-Draft, please check Copyright (C) The Internet Society (1999). All Rights Reserved.
the ``1id-abstracts.txt'' listing contained in the Internet-
Drafts Shadow Directories on ftp.is.co.za (Africa), nic.nordu.net
(Europe), munnari.oz.au (Pacific Rim), ftp.ietf.org (US East
Coast), or ftp.isi.edu (US West Coast).
Abstract Abstract
A system for Uniform Resource Names (URNs) must be capable of A system for Uniform Resource Names (URNs) must be capable of
supporting new naming systems. As an example of proposing a new supporting new naming systems. As an example of proposing a new
namespace, this document proposes the "ietf" namespace. This namespace, this document proposes the "ietf" namespace. This
namespace consists of the RFC family of documents (RFCs, STDs, FYIs, namespace consists of the RFC family of documents (RFCs, STDs, FYIs,
and BCPs) developed by the IETF and published by the RFC Editor, the and BCPs) developed by the IETF and published by the RFC Editor, the
minutes of working groups (WG) and birds of a feather (BOF) meetings minutes of working groups (WG) and birds of a feather (BOF) meetings
that occur during IETF conferences, and the Internet Drafts published that occur during IETF conferences, and the Internet Drafts published
skipping to change at page 2, line 11 skipping to change at page 1, line 43
This document proposes the "ietf" namespace, which consists of the This document proposes the "ietf" namespace, which consists of the
RFC family of documents (RFCs, STDs, FYIs, and BCPs) developed by the RFC family of documents (RFCs, STDs, FYIs, and BCPs) developed by the
IETF and published by the RFC editor and the minutes of working IETF and published by the RFC editor and the minutes of working
groups (WG) and birds of a feather (BOF) meetings that occur during groups (WG) and birds of a feather (BOF) meetings that occur during
IETF conferences. IETF conferences.
The namespace specification is for a formal namespace. The namespace specification is for a formal namespace.
2. Specification Template 2. Specification Template
Namespace ID: Namespace ID:
"ietf" requested. "ietf" requested.
Registration Information: Registration Information:
Registration version number: 1 Registration version number: 1
Registration date: 1999-04-22 Registration date: 1999-04-22
Declared registrant of the namespace: Declared registrant of the namespace:
Ryan Moats Ryan Moats
jayhawk@att.com jayhawk@att.com
AT&T AT&T
15621 Drexel Circle 15621 Drexel Circle
Omaha, NE 68135-2358 Omaha, NE 68135-2358
Declaration of structure: Declaration of structure:
The identifier has the following ABNF [2] specification: The identifier has the following ABNF [2] specification:
NSS = rfc-nss / fyi-nss / std-nss / bcp-nss / NSS = rfc-nss / fyi-nss / std-nss / bcp-nss /
draft-nss / mtg-nss / other-nss draft-nss / mtg-nss / other-nss
rfc-nss = "rfc:" 1*DIGIT rfc-nss = "rfc:" 1*DIGIT
fyi-nss = "fyi:" 1*DIGIT fyi-nss = "fyi:" 1*DIGIT
std-nss = "std:" 1*DIGIT std-nss = "std:" 1*DIGIT
bcp-nss = "bcp:" 1*DIGIT bcp-nss = "bcp:" 1*DIGIT
draft-nss = "id:" string draft-nss = "id:" string
mtg-nss = "mtg:" string mtg-nss = "mtg:" string
other-nss = string other-nss = string
; beginning with a prefix other than one of those ; beginning with a prefix other than one of those
; above for future expansion ; above for future expansion
string = 1*(DIGIT / ALPHA / "-") string = 1*(DIGIT / ALPHA / "-")
If the IESG (or it successor) adds a new document If the IESG (or it successor) adds a new document series,
series, this ABNF specification will need to be this ABNF specification will need to be updated. Further,
updated. Further, if a working group or BOF is if a working group or BOF is created that used characters
created that used characters outside the range of this outside the range of this ABNF specification, this
ABNF specification, this specification will need to be specification will need to be updated. Any system intended
updated. Any system intended to resolve names for to resolve names for this namespace should be written with
this namespace should be written with the awareness the awareness that this could occur at any time.
that this could occur at any time.
Relevant ancillary documentation: Relevant ancillary documentation:
Relevant documentation is in draft-ietf-urn-ietf-09. Relevant documentation is in RFC 2648.
Identifier uniqueness considerations: Identifier uniqueness considerations:
Because the rfc-editor assigns the RFC number uniquely Because the rfc-editor assigns the RFC number uniquely these
these URNs are unique. Since the mapping between RFCs URNs are unique. Since the mapping between RFCs and other
and other rfc-editor document series (STDs, FYIs or rfc-editor document series (STDs, FYIs or BCPs) is not
BCPs) is not necessarily one-to-one, uniqueness of necessarily one-to-one, uniqueness of STDs, FYIs and BCPs
STDs, FYIs and BCPs are defined based on the document are defined based on the document mappings maintained by the
mappings maintained by the RFC Editor (the index files RFC Editor (the index files "rfc-index.txt", "fyi-
"rfc-index.txt", "fyi-index.txt", "bcp-index.txt", index.txt", "bcp-index.txt", "std-index.txt") are defined to
"std-index.txt") are defined to be the definitive be the definitive statement of the assignment of RFC Family
statement of the assignment of RFC Family URNs in this URNs in this namespace. The meeting minutes portion of the
namespace. The meeting minutes portion of the namespace is guaranteed unique because the URN includes the
namespace is guaranteed unique because the URN sequence number of the IETF conference. The document
includes the sequence number of the IETF conference. mapping maintained by the Internet Drafts editor ("1id-
The document mapping maintained by the Internet Drafts abstracts.txt") is defined as the definitive statement of
editor ("1id-abstracts.txt") is defined as the the assignment of URNs for the internet draft portion of
definitive statement of the assignment of URNs for this namespace.
the internet draft portion of this namespace.
Identifier persistence considerations: Identifier persistence considerations:
Persistence of the URNs of this namespace is Persistence of the URNs of this namespace is independent of
independent of the mutability of the underlying the mutability of the underlying documents. A URN once
documents. A URN once assigned will never be assigned will never be reassigned to a different resource;
reassigned to a different resource; the assignment is the assignment is persistent and immutable. Immutability of
persistent and immutable. Immutability of RFCs, STDs, RFCs, STDs, FYIs and BCPs is at the discretion of the RFC
FYIs and BCPs is at the discretion of the RFC Editor. Editor. They may be composites of one or more RFCs and the
They may be composites of one or more RFCs and the set of RFCs that includes them may change with time. It is
set of RFCs that includes them may change with important to note that this mutability of some resources is
time. It is important to note that this mutability of independent of the immutability of URN assignment to a
some resources is independent of the immutability of resource.
URN assignment to a resource.
Process of identifier assignment: Process of identifier assignment:
Assignment of URNs from this namespace occurs in three Assignment of URNs from this namespace occurs in three ways.
ways. The first is through publication of a new RFC, The first is through publication of a new RFC, FYI, STD or
FYI, STD or BCP is by the RFC Editor. This new document BCP is by the RFC Editor. This new document will have a new
will have a new series number and will therefore define series number and will therefore define a new URN. The
a new URN. The document mappings maintained by the document mappings maintained by the RFC Editor (the index
RFC Editor (the index files "rfc-index.txt", files "rfc-index.txt", "fyi-index.txt", "bcp-index.txt" and
"fyi-index.txt", "bcp-index.txt" and "std-index.txt") "std-index.txt") are defined to be the definitive statement
are defined to be the definitive statement of the of the assignment of RFC Family URNs in this namespace.
assignment of RFC Family URNs in this namespace.
The second way a URN is assigned is through the filing The second way a URN is assigned is through the filing of
of meeting minutes by a working group or birds of a meeting minutes by a working group or birds of a feather as
feather as part of an IETF conference. The list of part of an IETF conference. The list of minutes maintained
minutes maintained by the IETF for each working group by the IETF for each working group and conference in the
and conference in the subtree pointed at by the URL subtree pointed at by the URL ftp://ietf.org/ietf/ is
ftp://ietf.org/ietf/ is considered the definitive considered the definitive assignment of URNs for working
assignment of URNs for working group or birds of a group or birds of a feather minutes.
feather minutes.
The third way a URN is assigned is through the The third way a URN is assigned is through the publication
publication of a new internet-draft by the Internet of a new internet-draft by the Internet Draft Editor. This
Draft Editor. This draft will have a distinct name draft will have a distinct name (and version number) and
(and version number) and therefore defined a new URN. therefore defined a new URN. The document mapping
The document mapping maintained by the Internet Drafts maintained by the Internet Drafts editor ("1id-
editor ("1id-abstracts.txt") is defined as the abstracts.txt") is defined as the definitive statement of
definitive statement of the assignment of URNs for the assignment of URNs for this portion of the namespace.
this portion of the namespace.
Process of identifier resolution: Process of identifier resolution:
A mirrored copy of the underlying documentation is A mirrored copy of the underlying documentation is required
required to resolve these URNs. Resolution via to resolve these URNs. Resolution via HTTP is done by a set
HTTP is done by a set of simple Perl cgi-bin of simple Perl cgi-bin scripts presented in Appendix A.
scripts presented in Appendix A.
Rules for Lexical Equivalence: Rules for Lexical Equivalence:
The entire URN is case-insensitive. The entire URN is case-insensitive.
Conformance with URN Syntax: Conformance with URN Syntax:
There are no additional characters reserved. There are no additional characters reserved.
Validation mechanism: Validation mechanism:
None additional to resolution specified None additional to resolution specified
Scope: Scope:
Global. Global.
3. Examples 3. Examples
The following are examples of URNs that a resolver for this namespace The following are examples of URNs that a resolver for this namespace
can resolve: can resolve:
urn:ietf:rfc:2141 urn:ietf:rfc:2141
urn:ietf:std:50 urn:ietf:std:50
urn:ietf:id:ietf-urn-ietf-06 urn:ietf:id:ietf-urn-ietf-06
urn:ietf:mtg:41-urn urn:ietf:mtg:41-urn
4. Security Considerations 4. Security Considerations
Because this namespace defines no additional reserved characters, it Because this namespace defines no additional reserved characters, it
does not add any security considerations beyond those inherent from does not add any security considerations beyond those inherent from
the existence of the reserved characters from [1]. Further, none of the existence of the reserved characters from [1]. Further, none of
the reserved characters from [1] are used in the definition of the the reserved characters from [1] are used in the definition of the
NSS. This means that resolvers for this namespace may be considered NSS. This means that resolvers for this namespace may be considered
"secure" in the sense that any escaping of characters in the NSS MUST "secure" in the sense that any escaping of characters in the NSS MUST
result in the resolver indicating that the URN has incorrect syntax. result in the resolver indicating that the URN has incorrect syntax.
skipping to change at page 5, line 37 skipping to change at page 5, line 27
Thanks to various members of the URN working group for comments on Thanks to various members of the URN working group for comments on
earlier drafts of this document. The work described in this document earlier drafts of this document. The work described in this document
is partially supported by the National Science Foundation, is partially supported by the National Science Foundation,
Cooperative Agreement NCR-9218179. Cooperative Agreement NCR-9218179.
6. References 6. References
Request For Comments (RFC) and Internet Draft documents are available Request For Comments (RFC) and Internet Draft documents are available
from numerous mirror sites. from numerous mirror sites.
[1] R. Moats, "URN Syntax," RFC 2141, May 5, 1997. [1] Moats, R., "URN Syntax", RFC 2141, May 1997.
[2] D. Crocker, P. Overell, "Augmented BNF for Syntax [2] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF," RFC 2234, November 1997. Specifications: ABNF", RFC 2234, November 1997.
7. Author's Address 7. Author's Address
Ryan Moats Ryan Moats
AT&T AT&T
15621 Drexel Circle 15621 Drexel Circle
Omaha, NE 68135-2358 Omaha, NE 68135-2358
USA USA
Phone: +1 402 894-9456
EMail: jayhawk@att.com EMail: jayhawk@att.com
Appendix A. Example Resolution Scripts Appendix A. Example Resolution Scripts
The following scripts are examples that can be used for resolving The following scripts are examples that can be used for resolving
URNs in this namespace. URNs in this namespace.
A.1 I2C A.1 I2C
#!/usr/local/bin/perl #!/usr/local/bin/perl
skipping to change at page 7, line 11 skipping to change at page 7, line 11
my($ietfnum, $sesnam) = @_; my($ietfnum, $sesnam) = @_;
&urn_error("404 Not Found\n") if (!defined $number2date{$ietfnum}); &urn_error("404 Not Found\n") if (!defined $number2date{$ietfnum});
my($date)=$number2date{$ietfnum}; my($date)=$number2date{$ietfnum};
my($link)="$wgpath/$sesnam/$sesnam-minutes-$date.txt"; my($link)="$wgpath/$sesnam/$sesnam-minutes-$date.txt";
if (-f $link) { if (-f $link) {
print "Status: 200 OK\r\n"; print "Status: 200 OK\r\n";
print "Content-type: text/html\r\n\r\n"; print "Content-type: text/html\r\n\r\n";
print "<HTML>\n<TITLE>Citation for $urn</TITLE>\n"; print "<HTML>\n<TITLE>Citation for $urn</TITLE>\n";
print "<BODY>\n"; print "<BODY>\n";
print "<H1><A HREF=\"$link\">$urn</A>:</H1>\n"; print "<H1><A HREF=\"$link\">$urn</A>:</H1>\n";
print "Minutes of the $sesnam working group from the " . &end($ietfnum) print "Minutes of the $sesnam working group from the "
. " IETF"; . &end($ietfnum) . " IETF";
print "</BODY>\n</HTML>\n"; print "</BODY>\n</HTML>\n";
return; return;
} }
my($link)="$wgpath/$date/$sesnam-minutes-$date.txt"; my($link)="$wgpath/$date/$sesnam-minutes-$date.txt";
if (-f $link) { if (-f $link) {
print "Status: 200 OK\r\n"; print "Status: 200 OK\r\n";
print "Content-type: text/html\r\n\r\n"; print "Content-type: text/html\r\n\r\n";
print "<HTML>\n<TITLE>Citation for $urn</TITLE>\n"; print "<HTML>\n<TITLE>Citation for $urn</TITLE>\n";
print "<BODY>\n"; print "<BODY>\n";
print "<H1><A HREF=\"$link\">$urn</A>:</H1>\n"; print "<H1><A HREF=\"$link\">$urn</A>:</H1>\n";
print "Minutes of the $sesnam working group from the " . &end($ietfnum) print "Minutes of the $sesnam working group from the "
. " IETF"; . &end($ietfnum) . " IETF";
print "</BODY>\n</HTML>\n"; print "</BODY>\n</HTML>\n";
return; return;
} }
&urn_error("404 Not Found\n"); &urn_error("404 Not Found\n");
} }
sub end { sub end {
my($inarg)=@_; my($inarg)=@_;
return $inarg . "st" if ($inarg =~ /1$/); return $inarg . "st" if ($inarg =~ /1$/);
return $inarg . "nd" if ($inarg =~ /2$/); return $inarg . "nd" if ($inarg =~ /2$/);
skipping to change at page 12, line 39 skipping to change at page 12, line 39
my($txttry)="/ftp/$pathbase{$scheme}$value.txt"; my($txttry)="/ftp/$pathbase{$scheme}$value.txt";
my($pstry)="/ftp/$pathbase{$scheme}$value.ps"; my($pstry)="/ftp/$pathbase{$scheme}$value.ps";
my($htmltry)="/ftp/$pathbase{$scheme}$value.html"; my($htmltry)="/ftp/$pathbase{$scheme}$value.html";
MIME_SWITCH: { MIME_SWITCH: {
if ($accept =~ /application\/postscript/ && -f $pstry) { if ($accept =~ /application\/postscript/ && -f $pstry) {
print "Status: 302 Moved temporarily\n"; print "Status: 302 Moved temporarily\n";
print "Location: http://$host/$pathbase{$scheme}$value.ps\n\n"; print "Location: http://$host/$pathbase{$scheme}$value.ps\n\n";
last MIME_SWITCH; last MIME_SWITCH;
} }
if ($accept =~ /text\/html/ && -f $htmltry) { if ($accept =~ /text\/html/ && -f $htmltry) {
print "Status: 302 Moved temporarily\n"; print "Status: 302 Moved temporarily0;
print "Location: http://$host/$pathbase{$scheme}$value.html\n\n"; print "Location: http://$host/$pathbase{$scheme}$value.html\n\n";
last MIME_SWITCH; last MIME_SWITCH;
} }
if ($accept =~ /\*\/\*|text\/plain/ && -f $txttry) { if ($accept =~ /\*\/\*|text\/plain/ && -f $txttry) {
print "Status: 302 Moved temporarily\n"; print "Status: 302 Moved temporarily\n";
print "Location: http://$host/$pathbase{$scheme}$value.txt\n\n"; print "Location: http://$host/$pathbase{$scheme}$value.txt\n\n";
last MIME_SWITCH; last MIME_SWITCH;
} }
&urn_error("404 Not Found\n"); &urn_error("404 Not Found\n");
} }
skipping to change at page 15, line 4 skipping to change at page 15, line 8
sub resolve2 { sub resolve2 {
my($ietfnum, $sesnam) = @_; my($ietfnum, $sesnam) = @_;
&urn_error("404 Not Found\n") if (!defined $number2date{$ietfnum}); &urn_error("404 Not Found\n") if (!defined $number2date{$ietfnum});
my($date)=$number2date{$ietfnum}; my($date)=$number2date{$ietfnum};
my($link)="$wgpath/$sesnam/$sesnam-minutes-$date.txt"; my($link)="$wgpath/$sesnam/$sesnam-minutes-$date.txt";
if (-f $link) { if (-f $link) {
$link=~s/^\/ftp\///; $link=~s/^\/ftp\///;
my($ftplink)="ftp://$host/$link"; my($ftplink)="ftp://$host/$link";
my($httplink)="http://$host/$link"; my($httplink)="http://$host/$link";
my($glink)="gopher://$host:70/0/$link"; my($glink)="gopher://$host:70/0/$link";
if ($accept =~ /text\/uri-list/) { #look for text/uri-list, otherwise
text/html if ($accept =~ /text\/uri-list/) { #look for text/uri-list,
otherwise text/html
print "Status: 200 OK\n"; print "Status: 200 OK\n";
print "Content-type: text/uri-list\n\n\n"; print "Content-type: text/uri-list\n\n\n";
print "#$urn\n"; print "#$urn\n";
print "$ftplink\n"; print "$ftplink\n";
print "$httplink\n"; print "$httplink\n";
print "$glink\n"; print "$glink\n";
} }
if ($accept =~ /\*\/\*|text\/html/) { if ($accept =~ /\*\/\*|text\/html/) {
print "Status: 200 OK\n"; print "Status: 200 OK\n";
print "Content-type: text/html\n\n<HTML>\n"; print "Content-type: text/html\n\n<HTML>\n";
skipping to change at page 15, line 33 skipping to change at page 15, line 38
print "</UL>\n</body>\n</HTML>\n"; print "</UL>\n</body>\n</HTML>\n";
} }
return; return;
} }
my($link)="$wgpath/$date/$sesnam-minutes-$date.txt"; my($link)="$wgpath/$date/$sesnam-minutes-$date.txt";
if (-f $link) { if (-f $link) {
$link=~s/^\/ftp\///; $link=~s/^\/ftp\///;
my($ftplink)="ftp://$host/$link"; my($ftplink)="ftp://$host/$link";
my($httplink)="http://$host/$link"; my($httplink)="http://$host/$link";
my($glink)="gopher://$host:70/0/$link"; my($glink)="gopher://$host:70/0/$link";
if ($accept =~ /text\/uri-list/) { #look for text/uri-list, otherwise if ($accept =~ /text\/uri-list/) { #look for text/uri-list,
text/html otherwise text/html
print "Status: 200 OK\n"; print "Status: 200 OK\n";
print "Content-type: text/uri-list\n\n\n"; print "Content-type: text/uri-list\n\n\n";
print "#$urn\n"; print "#$urn\n";
print "$ftplink\n"; print "$ftplink\n";
print "$httplink\n"; print "$httplink\n";
print "$glink\n"; print "$glink\n";
} }
if ($accept =~ /\*\/\*|text\/html/) { if ($accept =~ /\*\/\*|text\/html/) {
print "Status: 200 OK\n"; print "Status: 200 OK\n";
print "Content-type: text/html\n\n<HTML>\n"; print "Content-type: text/html\n\n<HTML>\n";
skipping to change at page 16, line 36 skipping to change at page 16, line 44
} }
$try="/ftp/$pathbase{$scheme}$value.html"; $try="/ftp/$pathbase{$scheme}$value.html";
if (-f $try) { if (-f $try) {
push(@urls, "http://$host/$pathbase{$scheme}$value.html"); push(@urls, "http://$host/$pathbase{$scheme}$value.html");
push(@urls, "ftp://$host/$pathbase{$scheme}$value.html"); push(@urls, "ftp://$host/$pathbase{$scheme}$value.html");
} }
&urn_error("404 Not Found\n") if ($#urls == -1); &urn_error("404 Not Found\n") if ($#urls == -1);
MIME_SWITCH: { MIME_SWITCH: {
if ($accept =~ /text\/uri-list/) { #look for text/uri-list, otherwise if ($accept =~ /text\/uri-list/) { #look for text/uri-list,
text/html otherwise text/html
print "Status: 200 OK\n"; print "Status: 200 OK\n";
print "Content-type: text/uri-list\n\n\n"; print "Content-type: text/uri-list\n\n\n";
print "#$urn\n"; print "#$urn\n";
foreach $i (@urls) { foreach $i (@urls) {
print "$i\n"; print "$i\n";
} }
last MIME_SWITCH; last MIME_SWITCH;
} }
if ($accept =~ /\*\/\*|text\/html/) { if ($accept =~ /\*\/\*|text\/html/) {
print "Status: 200 OK\n"; print "Status: 200 OK\n";
skipping to change at page 18, line 4 skipping to change at page 18, line 12
if (-f $try) { if (-f $try) {
push(@urls, "http://$host/$pathbase{$scheme}$value.ps"); push(@urls, "http://$host/$pathbase{$scheme}$value.ps");
push(@urls, "ftp://$host/$pathbase{$scheme}$value.ps"); push(@urls, "ftp://$host/$pathbase{$scheme}$value.ps");
push(@urls, "gopher://$host:70/0/$pathbase{$scheme}$value.ps"); push(@urls, "gopher://$host:70/0/$pathbase{$scheme}$value.ps");
} }
$try="/ftp/$pathbase{$scheme}$value.html"; $try="/ftp/$pathbase{$scheme}$value.html";
if (-f $try) { if (-f $try) {
push(@urls, "http://$host/$pathbase{$scheme}$value.html"); push(@urls, "http://$host/$pathbase{$scheme}$value.html");
push(@urls, "ftp://$host/$pathbase{$scheme}$value.html"); push(@urls, "ftp://$host/$pathbase{$scheme}$value.html");
} }
&urn_error("404 Not Found\n") if ($#urls == -1); &urn_error("404 Not Found\n") if ($#urls == -1);
MIME_SWITCH: { MIME_SWITCH: {
if ($accept =~ /text\/uri-list/) { #look for text/uri-list, otherwise if ($accept =~ /text\/uri-list/) { #look for text/uri-list,
text/html otherwise text/html
print "Status: 200 OK\n"; print "Status: 200 OK\n";
print "Content-type: text/uri-list\n\n\n"; print "Content-type: text/uri-list\n\n\n";
print "#$urn\n"; print "#$urn\n";
foreach $i (@urls) { foreach $i (@urls) {
print "$i\n"; print "$i\n";
} }
last MIME_SWITCH; last MIME_SWITCH;
} }
if ($accept =~ /\*\/\*|text\/html/) { if ($accept =~ /\*\/\*|text\/html/) {
print "Status: 200 OK\n"; print "Status: 200 OK\n";
skipping to change at page 19, line 35 skipping to change at page 19, line 45
&urn_error("404 Not Found\n") if (!defined $number2date{$ietfnum}); &urn_error("404 Not Found\n") if (!defined $number2date{$ietfnum});
my($date)=$number2date{$ietfnum}; my($date)=$number2date{$ietfnum};
my($link)="$wgpath/$sesnam/$sesnam-minutes-$date.txt"; my($link)="$wgpath/$sesnam/$sesnam-minutes-$date.txt";
if (-f $link) { if (-f $link) {
if ($accept =~ /text\/uri-list/) { if ($accept =~ /text\/uri-list/) {
print "Status: 200 OK\n"; print "Status: 200 OK\n";
print "Content-type: text/uri-list\n\n\n"; print "Content-type: text/uri-list\n\n\n";
print "#$urn\n"; print "#$urn\n";
return; return;
} }
if ($accept =~ /\*\/\*|text\/html/) { if ($accept =~ /\*\/\*|text]\/html/) {
print "Status: 200 OK\n"; print "Status: 200 OK\n";
print "Content-type: text/html\n\n<HTML>\n"; print "Content-type: text/html\n\n<HTML>\n";
print "<head><title>URN Resolution: I2Ns</title></head>\n"; print "<head><title>URN Resolution: I2Ns</title></head>\n";
print "<BODY>\n"; print "<BODY>\n";
print "<h1>URN $urn resolves to the following URNs:</h1>\n"; print "<h1>URN $urn resolves to the following URNs:</h1>\n";
print "<hr><ul>\n"; print "<hr><ul>\n";
print "</UL>\n</body>\n</HTML>\n"; print "</UL>\n</body>\n</HTML>\n";
return; return;
} }
} }
skipping to change at line 1382 skipping to change at page 30, line 4
print "Status: $code"; print "Status: $code";
print "Content-type: text/html\n\n<HTML>\n"; print "Content-type: text/html\n\n<HTML>\n";
print "<head><title>URN Resolution: I2Rs $code</title></head>\n"; print "<head><title>URN Resolution: I2Rs $code</title></head>\n";
print "<BODY>\n"; print "<BODY>\n";
print "<h1>URN to URL resolution failed for the URN:</h1>\n"; print "<h1>URN to URL resolution failed for the URN:</h1>\n";
print "<hr><h3>$urn</h3>\n"; print "<hr><h3>$urn</h3>\n";
print "</body>\n"; print "</body>\n";
print "</html>\n"; print "</html>\n";
exit; exit;
} }
Full Copyright Statement
Copyright (C) The Internet Society (1999). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
 End of changes. 53 change blocks. 
153 lines changed or deleted 129 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/