US 20070204012A1 (19) United States (12) Patent Application Publication (10) Pub. No.: US 2007/0204012 A1 Kruse et al. (43) Pub. Date: Aug. 30, 2007

(54) CLIENT EXTENDED ERROR HANDLING Related U.S. Application Data (75) Inventors: David Kruse, Kirkland, WA (US); (63) Continuation-in-part of application No. 1 1/217,626, Kishore Chintalapati, Redmond, WA filed on Aug. 31, 2005. (US): Sean Watson, Seattle, WA (US); Continuation-in-part of application No. 1 1/243,350, Jay Paulus, Seattle, WA (US): Dustin filed on Oct. 4, 2005. Friesenhahn, Seattle, WA (US); O O Ahmed Mohamed, Sammamish, WA Publication Classification (US)US (51) Int. Cl. Correspondence Address: G06F 5/16 (2006.01)

MCROSOFT CORPORATION (52) U.S. C. ------709/219 ONE MCROSOFT WAY (57) ABSTRACT REDMOND, WA 98052-6399 (US) Techniques for clients and servers to use the web authoring (73) Assignee: Microsoft Corporation, Redmond, WA extensions, and in particular, extended error handling to (US) allow servers to provider richer web authoring error infor mation to clients. One technique includes sending an author ing request to a server, receiving a response message with (21) Appl. No.: 11/598,489 extended error information by a client, and sending the extended error information to an application program. Other (22) Filed: Nov. 13, 2006 embodiments are described and claimed.

uncompounded compounded

2 4 172 17

round trip time Patent Application Publication Aug. 30, 2007 Sheet 1 of 16 US 2007/0204012 A1

HTTP client HTTP Sever

request-line/status-line

field-name1 field-body1

field-name2 field-body2

field-name5 field-body5 field-name{5 field-body6

RELATED ART FIG. 1 Patent Application Publication Aug. 30, 2007 Sheet 2 of 16 US 2007/0204012 A1

80 87 GET /rfcs/rfc2616.html HTTP/1.1 (CRLF) Host: www.faqs.orgCRLF) Connection: close(CRLF) Accept-Encoding: gzip(CRLF) 88 Accept: image/x-xbitmap, ...; version="6.1.0", "/"ICRLF Accept-Language: en-us(CRLF) User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; ...). (CRLF) Referer: http://web-sniffer.net/(CRLF)

82 89 HTTP Status Code: HTTP/1.1 200 OK Date: Tue, 16 Aug 2005 22:24:21 GMT CRLF Server: Apache CRLF Last-Modified: Tue, 16 Aug 2005 05:32:33 GMT CRLF ETag: "5f897b-6301a-43017a71" CRLF 90 Accept-Ranges: bytes CRLF Content-Length: 405530 CRLF Connection: close CRLF Content-Type: text/html CRLF

92 ...Content

RELATED ART FIG. 2 Patent Application Publication Aug. 30, 2007 Sheet 3 of 16 US 2007/0204012 A1

OPTIONS HEAD POST HTTP methods < DELETE 104 TRACE CONNECT GET

PUT COPY MOVE DELETE web authoring MKCOL method extension PROPFIND 1 OO PROPPATCH LOCK UNLOCK

Accept Accept-Charset AllOW Cache-Control HTTP headers 106 Connection Content-Length

Warning WWW-Authenticate

f Depth Web authoring LOCk-Token header extensions Destination 102 TimeOut OverWrite

RELATED ART FIG 3 Patent Application Publication Aug. 30, 2007 Sheet 4 of 16 US 2007/0204012 A1

round trip time

time

RELATED ART FIG. 4 Patent Application Publication Aug. 30, 2007 Sheet 5 of 16 US 2007/0204012A1

OPTIONS HEAD HTTP methods 104 CONNECT GET

PUT

web authoring COPY method insions PROPPATCH - LOCK UNLOCK

POSTIGET + LOCKREFRESHUNLOCK) 144 th PUT + LOCKREFRESHUNLOCK) 146 co-extensions EPoSTIGET-PROPFIND148 PUT + PROPPATCHD-150 140 POSTIGET + PROPFIND+ LOCKREFRESHUNLOCK) 152 PUT + PROPPATCH + LOCKIREFRESHUNLOCK 154

Accept Accept-Charset Allow HTTP headers Cache-Control 106 Warning WW-Authenticate

lf web authoring Depth headers Lock-Token 102 TimeOut Overwrite

X-MSDAVEXTLockTimeout:xxx compounding X-MSDAVEXT: PROPFINDXXX header extension s Content-type: multipart/MSDAVEXTPrevisencodeckx 142

FIG. 5 Patent Application Publication Aug. 30, 2007 Sheet 6 of 16 US 2007/0204012A1

uncompounded Compounded

172 17 HTTP HTTP client SerWer

FIG. 6 Patent Application Publication Aug. 30, 2007 Sheet 7 of 16 US 2007/0204012 A1

192 (does server support compound methods?) Send OPTIONS request; receive response, HTTP client check for Compounding indicator, 198 handle

communications accordingly HTTP/1 200 OK HTTP/1 A 200 OK Date: Tule, 25 Jan 2005 03:12:26 GMT

icroSoft-IS/6.0

MicrosoftSharePoint TeamServices: 12.0.2.6361 OPTIONS / HTTP/1. X-Powere-By: ASP.NET

translate:f MS-Autho-Via: MS-FP14.0, DAV DAV: 1,2 User-Agent: WebDAV-MiniRedir/5. 3790 Host: office Accept-Ranges: none Allow: GET, POST, OPTIONS, HEAD, MKCOL, PUT,

Authorization. NTLM Connection: Keep-Alive PROPFIND PROPPATCH, DELETE, MOVE, COPY, GETLIB, LOCK, UNLOCK Content-Length: 0 ntrol: private ength: 0 X-MSDAVEXT: 1

HTTP Server

receive OPTIONS request; generate response by including...------(indicator.thatcompounding is supported;

send response

F.G. 7 Patent Application Publication Aug. 30, 2007 Sheet 8 of 16 US 2007/0204012A1

example POST+UNLOCK request:

222 224

220 222 224 226

HTTP verb X-MSDAVEXT result LockTimeout: GETIPOST Y IN 7 FAIL FAIL - if token doesn't match LOCK - if no existing lock at server GETIPOST Y Y REFRESH - if X-MSDAVEXTLockTimeout a 0 NLOCK - if X-MSDAVEXTLockTimeout - O 144 sent lock token: FA- if file is already locked GETPOST Y FAL - if file is locked & X-...Lock-TimeOut:0 didn't send lock token. LOCK - if no existing lock at server GETIPOST T N T N return file

PUT Y success - if token matched FAL - if token mismatch or file not locked FAIL - if token doesn't match PUT Y Y LOCK - if no existing lock at server /UNLOCK-ifx-MSDAVEXTLock-Timeout-oREFRESH - if X-MSDAVEXTLock-Timeouts. 0 146 sent lock token: FAIL - if file is already locked FAI - if file is locked & X-...Lock-TimeOut:0 didn't send lock token: LOCK - if no existing lock at server

Content-Type application/x-ww-form-urlencoded; charset=utf-8;... 224 X-MSDAVEXTLockTimeOut: Second -120 Lock-Token: opaquelocktoken:{3932E32A-8825-494E-A19E 222 E714A7A741A8)20041130T183232Z

gContent) FIG. 8 Patent Application Publication Aug. 30, 2007 Sheet 9 of 16 US 2007/0204012A1

result Content-type: X-MSDAVEX: (effective method) multipart/MSDAVEXTPrefixEncoded PROPFIND GET--PROPFIND

POST multipart/MSDAVEXTPrefixEncoded PROPFIND POST+PROPFIND multipart/MSDAVEXTPrefixEncoded PROPPATCH PUT+PROPPATCH multipart/MSDAVEXTPrefixEncoded | PROPFIND PUT+PROPFIND

example GET--PROPFIND request: POST /shared%20documents/Copy%20of%20Folder/test.rtf HTTP/1.1

translate:f User-Agent: Microsoft-WebDAV-MiniRedir/5.2.3790 Host: Office Connection: Keep-Alive Pragma: no-cache 242 X-MSDAVEXT: PROPFIND Content-type: ...

250 r example GET--PROPFIND response: HTTP/1.1 200 OK Date: Tue, 25 Jan 2005 03:12:31 GMT Server: Microsoft-IS/6.0 MicrosoftSharePointTeamServices: 6.0.2.6361 X-Powered-By: ASP.NET Last-Modified: Thu, 12 Feb 2004 02:33:01 GMT ETag: "{3E94207C-8E12-4491-BOFF-A903E2C961OE}.7" ResourceTag:rt:3E94207C-8E12-4491-BOFF-A903E2C961OEG)00000000007 240 Content-type: multipart/MSDAVEXTPrefixEncoded; ... (some number Cache-Control: private of Seconds) X-MSDAVEXTLockTimeout: Second-# Lock-Token: opaquelocktoken:{4A7A741A8}20041130T183232Z Content-Length: # N (size of body Public-Extension: http://schemas.microsoft.com/repl 248)

248-- -length of properties section> areSource>

FIG. 9 Patent Application Publication Aug. 30, 2007 Sheet 10 of 16 US 2007/0204012A1

27 example PUT+PROPPATCH+UNLOCK request: PUT Ishared%20documents/Copy%20of%20Folder/test, rtf HTTP/1.1

translate:f User-Agent: Microsoft-WebDAV-MiniRedir/5.2.3790 Host: dustinfrServer Content-Length: 114234 Connection: Keep-Alive X-MSDAVEXT: PROPPATCH

X-MSDAVEXTLockTimeOut: Second-O Lock-Token; opaquelocktoken:{4A7A741A8}20041130T183232Z Content-type: multipart/MSDAVEXTPrefixEncoded Pragma: no-cache Authorization: NTLM

272 example PUT+PROPPATCH+UNLOCK response:

HTTP/1.1 200 OK HTTP/1.1 200 OK Date: Tue, 30 Nov 2004 18:32:34 GMT Sever: Microsoft-IS/6.0 X-Powered-By: ASP.NET MicrosoftSharePoint TeamServices: 6.0.2.5530 Cache-Control: private Content-Length: 0 Public-Extension: http://schemas.microsoft.com/repl-2

FIG 10 Patent Application Publication Aug. 30, 2007 Sheet 11 of 16 US 2007/0204012A1

90 example POST+PROPFIND+LOCK request: POST /shared%20documents/Copy%20of%20Folder/test, rtf HTTP/1.1 translate:f User-Agent: Microsoft-WebDAV-MiniRedir/5.2.3790 Host: dustinfrServer Connection: Keep-Alive X-MSDAVEXT. PROPFIND X-MSDAVEXTLockTimeout: Second-60 Content-Length: 0 Pragma: no-cache Authorization: NTLM

29 example POST+PROPFIND+LOCK response:

HTTP/1.1 200 OK ' Date: Tue, 30 Nov 2004 18:32:34 GMT Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET MicroSoftSharePoint TeamServices: 6.0.2.5530 Cache-Control: private Content-Length: 1056 Content-type: multipart/MSDAVEXTPrefixEncoded; ... X-MSDAVEXTLockTimeOut: Second-60 Lock-Token: opaquelocktoken:{4A7A741A8}20041130T183232Z Public-Extension: http://schemas.microsoft.com/repl-2

00000000000001F4 <500 bytes of some returned properties.> OOOOOOOOOOOOO2OC <524 bytes of some posted resource> F.G. 11 Patent Application Publication Aug. 30, 2007 Sheet 12 of 16 US 2007/0204012 A1

30 Extended Error code (Decimal) an error code which the client can map to a system-level error code String (URL Encoded) a string with extended information for Clients to use

302 HTTP/1.1 401 Unauthorized Content-Length: 1656 Content-Type: text/html X-MSDAVEXTERROR: 2342; The file is checked out to "Redmond\ dustinfr" Server: Microsoft-S/6.0 WWW-Authenticate: NTLM X-Powered-By: ASP.NET MicroSoftSharePointTeamServices: 12.0.0.000 Date: Tue, 25 Jan 2005 03:11:51 GMT

FIG. 12 Patent Application Publication Aug. 30, 2007 Sheet 13 of 16 US 2007/0204012A1

Server 1302

Extended Error Information 1340

Client 1304

Application Request EE 1340

Program 1308-1 Receive EEI 1340

Application

Client

Receive EE 1340 Program 1308-2 Redirector 1306

CRELUT 1314 FOA 1316 PID1 TID1 LID1 EEM1 Operating PID2 TID2 LID2 EEM2 EEM2 System PID3 TD3 uD3 IEEM3 1310 ...... PID-n TID-p LID-a EEM-r

OSEmor Code List 1312

FIG. 13 Patent Application Publication Aug. 30, 2007 Sheet 14 of 16 US 2007/0204012 A1

1400 Application Program

FIG. 14 Patent Application Publication Aug. 30, 2007 Sheet 15 of 16 US 2007/0204012 A1

15 OOA

receive extended error information 5O2

determine the extended error information does not have a file handle 1504

store the extended error information in an extended error look up table with a process identifier, thread identifier and login identifier 1506

determine error information from extended error information or HTTP error Code 1508

return error information 15 O

FIG. 5A Patent Application Publication Aug. 30, 2007 Sheet 16 of 16 US 2007/0204012 A1

15 OOB

receive extended error information 1512

determine the extended error information has a file handle 54

store the extended error information with a file object corresponding to the file handle 1516

determine error information from extended error information or HTTP error Code 158

return error information 1520

FIG.15B US 2007/02040 12 A1 Aug. 30, 2007

CLIENT EXTENDED ERROR HANDLING DAV requests and responses follow the basic format of HTTP messages (e.g., message 50 in FIG. 1). Technically, CROSS-REFERENCE TO RELATED some of the verbs in the web authoring methods 100 are APPLICATION(S) defined as valid HTTP verbs, however, their functionality is extended by WebDAV. For example, PUT is part of HTTP, 0001. This application is a Continuation-In-Part and but WebDAV extends its functionality to collections, direc claims the benefit of U.S. patent application Ser. No. 1 1/217, tories, folders, etc. The same basic HTTP communication 626, filed Aug. 31, 2005, titled “COMPOUNDING OF rules are used, the same line/field/body delimiters are used, HTTP AUTHORING PROTOCOL, and U.S. patent appli the same error codes may be used, and base HTTP methods cation Ser. No. 1 1/243350, filed Oct. 4, 2005, titled 104 and base HTTP headers can appear in WebDAV mes “EXTENDED HTTPERRORCHANNEL, which are both sages. For example an ordinary HTTP OPTIONS request incorporated herein by reference. may be answered by a WebDAV-compliant server with a BACKGROUND response that has standard HTTP headers as well as one or more non-standard HTTP headers that indicate the avail 0002 FIG. 1 shows an HTTP message 50. The exchange ability of one or more HTTP extensions on the server. In of HTTP messages 50 between an HTTP client 52 and an general, this manner of extending HTTP allows servers and HTTP server 54 is well known in the art of client-server clients to handle both base HTTP communications as well as computing. Various RFCs and other public documents may various extensions thereto, even if a remote system does not be consulted for details about the various versions and Support an extension that is supported locally; unsupported variations of HTTP. For instance, RFC 2616 defines HTTP headers and methods are usually ignored or handled grace version 1.1. According to RFC 2616, an HTTP message 50 fully. that is for an HTTP request has a request line 54, such as 0006. The WebDAV extension to HTTP provides func “GET/HTTP/1.1. An HTTP message 50 that is for an HTTP tionality to create, change and move documents on a remote response instead has a status line 56, such as “HTTP/1.1 200 server (typically a web server). WebDAV implementations OK”. A request line 54 or status line 56 is usually followed are useful, among other things, for remotely authoring by one or more headers, each consisting of a field name 60 documents or resources served by a web server. WebDAV and, depending on the particular header, Zero or more field implementations can also be used for general access-any bodies 62. A message 50 may end with a message body 64, where web-based file storage. Many operating systems. Such depending on the type of request or response. Details as Windows, Linux, and Mac OSX provide built-in client relating to delimiters, particular headers, and other features and server support for WebDAV, thus allowing transparent of HTTP messages and HTTP communication can be found use of files on a WebDAV server somewhat as if they were elsewhere. stored in a local directory. 0003 FIG. 2 shows an example HTTP request 80 and an 0007. The methods and headers of WebDAV are fully example HTTP response 82. The HTTP client 52 sends documented elsewhere, however, the main methods are: request 80 over a data network 84 to the HTTP server 54, PUT put a resource or collection on the server; DELETE which handles the request and returns the response 82. The —delete a resource or collection from the server; request 80 includes a request line 87 and a number of PROPFIND retrieve properties (as XML) of a resource: headers 88 (some requests also have a message body). The PROPPATCH change and delete properties of a resource: response 82 includes a status line 89, headers 90, and a MKCOL create collections or directories: COPY copy a message body 92. HTTP communications need not travel resource from one URI to another on the server, MOVE over a network Such as network 84; communication between move a resource from one URI to another on the server; a local client and a local server is possible, albeit usually LOCK put a lock on a resource: UNLOCK remove a through the local systems communications stacks. lock from a resource. Some notable headers (field names) 0004. A shortcoming with HTTP is that it does not are: destination—specifies a URI as a destination resource provide for authoring through an HTTP channel. That is, the for methods such as COPY and MOVE: Lock-Token standard HTTP specifications do not specifically provide for specifies a token that identifies a particular lock; and Tim clients to manage resources on servers. There is no way for eout—specifies a duration of a lock. a client to perform resource management operations like 0008. It has not previously been recognized that there are copying resources (e.g., files, documents, etc.), moving certain inefficiencies and weaknesses built into WebDAV resources on a server, setting or obtaining properties of that can become significant in certain circumstances. FIG. 4 resources on a server, locking resources, and so on. In shows a timeline for a sequence of related authoring response to this shortcoming, various public and private requests. Suppose that a user of HTTP client 52 would like extensions to HTTP have been devised. to get and lock a resource on HTTP server 54. The user will 0005 FIG. 3 shows some method extensions 100 and first direct the client 52 to get a particular resource. The header extensions 102 of a protocol or extension of HTTP client 52 will generate and transmit a GET request 120 to the that adds remote authoring functionality on top of HTTP. server 54. The server 54 handles the GET request 120 and These extensions are from RFC 2518, which defines “HTTP returns an appropriate response 122. The round trip time is Extensions for Web Authoring and Versioning, or “Web the time between client 52's transmission of the GET request DAV. WebDAV is a superset of HTTP that is sometimes 120 and the receipt of response 122. As can be seen in FIG. referred to as a protocol, and sometimes referred to as an 4, much of the round trip time can be attributed to the time extension of HTTP. The WebDAV protocol defines conven that it takes for the GET request 120 and the response 122 tions, methods 100, and headers 102, for requests and to traverse the network. If the user also needs to lock the responses that otherwise comply with HTTP. That is, Web resource obtained by GET request 120, another round of US 2007/02040 12 A1 Aug. 30, 2007

communication is needed: client 52 sends discrete LOCK information may be automatically provided to the applica request 124; LOCK request 124 passes through the network; tion programs as with standard error handling routines. Once and the server 54 replies with a response 126 that also an application program receives the extended error infor crosses the network. The second exchange has its own round mation, the application program may display the extended trip time that may include significant network transmission error information for a user. In some cases, an application time. The total time 128 to meet two related needs of the program may be arranged to perform Subsequent actions in client 52 (the need to both get and lock a resource) includes response to the extended error information. Other embodi the time for two round trips or four network transmissions. ments are described and claimed. Furthermore, the two discrete requests 120, 124 require approximately twice the server overhead as a single request, 0014 Many of the attendant features will be more readily which might cause further delay if the server is heavily appreciated by referring to the following detailed description loaded. considered in connection with the accompanying drawings. 0009. Another problem with the example in FIG. 4 is that DESCRIPTION OF THE DRAWINGS the requested resource could be modified or locked by 0015 Like reference numerals are used to designate like another client (or the server 54 itself) between the time that parts in the accompanying Drawings. client 52 requests the resource and the time the client 52 is able to obtain a lock on the resource. In other words, another 0016 FIG. 1 shows an HTTP message. request can affect the resource after it is received by the client 52 but before the client 52 is able to obtain a lock on 0017 FIG. 2 shows an example HTTP request and an the resource, which could cause an error or unexpected example HTTP response. result. 0018 FIG. 3 shows some method extensions and header 0010 Yet another problem with the example in FIG. 4 is extensions of a protocol or extension of HTTP that adds that there is typically no technique for notifying a client of remote authoring functionality on top of HTTP. the different types of errors that might occur when attempt 0019 FIG. 4 shows a timeline for a sequence of related ing to provide for authoring through an HTTP channel. The authoring requests. HTTP protocol and various operating systems for a client 0020 FIG. 5 shows some web authoring method exten may provide a standard set of error codes and definitions to sions and compounding header extensions that can be used indicate to a client when errors occur at the server. For to allow clients and servers to compound two or more example, when a file cannot be opened, the HTTP protocol authoring related methods with single client-server may return an error code and message indicating “file access exchanges. denied.” In many cases, such error codes and messages are static and provide limited information. Further, the WebDAV 0021 FIG. 6 shows an uncompounded authoring protocol and its various public and private extensions may exchange and a compounded authoring exchange with a provide a different set of undefined errors that are unknown similar purpose. to the client. In Such cases, the client may have insufficient information to identify and troubleshoot the underlying 0022 FIG. 7 shows how a client can determine if com problem creating the undefined error condition. pounding is available on a server. 0011. The atomic nature of WebDAV and the inability of 0023 FIG. 8 shows how requests can be formatted to WebDAV clients and servers to use compound or multi invoke compounded locking. aspect authoring requests with one discrete exchange may 0024 FIG. 9 shows a mechanism for compounding prop have other problems and inconveniences. Without necessity, erty methods with HTTP or WebDAV methods or verbs. Some embodiments discussed below may alleviate some problems associated with HTTP authoring. 0.025 FIG. 10 shows further compounded methods. 0026 FIG. 11 shows an example POST+PROPFIND+ SUMMARY LOCK method request and a corresponding response. 0012. The following summary is included only to intro 0027 FIG. 12 shows an error handling table and duce Some concepts discussed in the Detailed Description examples of a response using extended error handling. below. This Summary is not comprehensive and is not intended to delineate the scope of protectable subject matter, 0028 FIG. 13 shows how extended errors may be which is set forth by the claims presented at the end. handled by a client. 0013 In various embodiments, a client may send a com 0029 FIG. 14 shows an extended error message flow. pounded or uncompounded web authoring request on behalf 0030 FIG. 15A shows a first logic flow. of an application program that creates a file system error at a server. The server may communicate extended error infor 0031 FIG. 15B shows a second logic flow. mation for the file system error using any response message DETAILED DESCRIPTION modified to include a new extended error header or variants. The client may be arranged to process, store and manage the 0032 FIG. 5 shows some web authoring method exten extended error information so that it may be consumed by sions 140 and compounding header extensions 142 that can various application programs. In one embodiment, for be used to allow clients and servers to compound two or example, the application programs may be modified to more authoring related methods with single client-server explicitly or implicitly request the extended error informa exchanges. Although the method extensions 140 are char tion. In one embodiment, for example, the extended error acterized as “methods', they need not involve verbs or US 2007/02040 12 A1 Aug. 30, 2007

request lines 54 that are different than those defined by tant other than it be known in advance by the client 172 so HTTP and WebDAV. However, conceptually, the method that when the client's 172 process 192 receives the response extensions 140 discussed below effectuate compound 198 it can recognize it and communicate with the server 174 authoring methods. As discussed below, these in-effect com as appropriate. pound authoring method extensions 140 can be accom 0037 FIG. 8 shows how requests can be formatted to plished using various compounded header extensions 142. invoke compounded locking. The top part corresponds to the 0033) In the Figures, the symbols “+” and “” (vertical extended methods 144 (see FIG. 5) for GET or POST bar) respectively represent compounding and “or'. So, for locking, and the lower part corresponds to the extended example, the “POSTIGET--LOCKREFRESHUNLOCK” methods 146 for PUT locking. In one embodiment, ordinary method 144 represents a number of discrete compound HTTP and WebDAV request verbs 220 GET, POST, and methods: “POST+LOCK, “POST+UNLOCK, “GET-- PUT are compounded with locking requests using various LOCK', etc. An explanation of how the method extensions combinations of a standard Lock-Token header 222 and a 140 can be implemented using header extensions 142 will non-standard or extended lock timeout header 224, for follow. Methods 144 and 146 will be discussed with refer example “X-MSDAVEXTLock-Timeout'. The lock timeout ence to FIG.8. Methods 148 and 150 will be discussed with header 224 has a value of 0 or more seconds. reference to FIG. 9. Methods 152 and 154 will be discussed 0038. The lock timeout header 224 signifies the creation with reference to FIGS. 10 and 11. of a new lock according to the value of the lock timeout header 224. If the Lock-Token header 222 is included then 0034 FIG. 6 shows an uncompounded authoring the lock timeout header 224 signals the refresh of an existing exchange and a compounded authoring exchange with a lock. If the lock timeout header 224 is set to 0 seconds than similar purpose. The left hand side of FIG. 6—a repetition an unlock is indicated (in this case, the Lock-Token header of FIG. 4 shows the flow of an uncompounded authoring 222 and a correct token are required to unlock the file). exchange. The right hand side of FIG. 6 shows the flow of Furthermore, a Lock-Token header 222 and token are pref a compounded authoring exchange. On the right hand side erably included in the response to any write operation on a of FIG. 6 (the compounded example), a single request locked resource. Example request 228 shows what a typical message 170 is sent by the client 52. The request message POST+UNLOCK request might look like. Note the inclu 170 includes information indicating a GET operation sion of a Lock-Token header 222 and a lock timeout header directed to a resource on server 174 and information indi 224. cating that the server 174 is to also lock the resource for the client 172. In the compounded case, there is one exchange 0039) Referring to the PUT verb combined with a locking with the time of one round trip. The total transaction time operation, note that the Lock-token header 222 and correct 174 for the compounded request 170 is less than the total token are needed to modify a locked resource. No token is transaction time 128 of the uncompounded requests 120, needed if the resource is not locked. If no token is included 124. Furthermore, because the server 174 can tell from the but a lock time is specified, then the natural locking logic request message 170 that a lock is desired, the server 174 can occurs; a lock is granted if no lock exists, and the PUT and immediately lock the requested resource, thus preventing an lock are denied if a lock already exists. In sum, if the correct intervening request from interfering with client 172's token is included with a PUT request the client can perform request. any PUT operation or any PUT operation combined with a lock operation. A typical PUT+REFRESH request is shown 0035 FIG. 7 shows how client 172 can determine if by request 230. The lock timeout value of 120 seconds compounding is available on server 174. As mentioned indicates a refresh or resetting of the lifetime of the lock to earlier, it is desirable (but not necessary) for a client to be run for another 120 seconds, and the lock token is the key able to use both compounded and uncompounded authoring that the server uses to authorize both the PUT operation and requests. It is also desirable for a server to be able to support the REFRESH operation. In a preferred embodiment a both compounded and uncompounded authoring requests. A Lock-Token header included in a non-write operation is mechanism can be provided for this purpose. Preferably, the ignored; i.e., "GET--verify an existing lock” is not Sup mechanism involves including information in a server ported. response that indicates whether compounding is Supported 0040 FIG. 9 shows a mechanism for compounding prop by the server. Although this information can take any form, erty methods with HTTP or WebDAV methods or verbs. the use of a new response header 190 is convenient because These compound methods correspond to the methods 148, clients usually ignore unrecognized headers in an HTTP 150 in FIG. 5. The compounded property methods use two response. Furthermore, known algorithms for header parsing indicators; a special content type header value 240 (e.g., can be readily extended to process a new header or field “multipart/MSDAVEXTPrefixEncoded”) and a special name. In the alternative, a compounding indicator can take extensions header 242 with various possible values such as the form of a new value for a standard header, a special “PROPFIND and “PROPPATCH. The combinations in status line, etc. table 244 are self-explanatory and the resulting methods 0036) To establish the availability of compounding, the allow a resource to be accessed or modified while at the client 172 performs a process 192 that starts with sending a same time obtaining or setting one or more properties of the standard OPTIONS request 194 (request 194 is only an relevant resource. Furthermore, the standard Content-length example). A process 196 on the server 174 receives the header will be used and will give the value of the total OPTIONS request 194 and generates a response such as message body or payload, which may also include properties response 198 that includes a compounding indicator, in this as well resources (discussed further below). embodiment, non-standard response header 190. The actual 0041. In conformance with the rules of table 244, an name of the non-standard response header 190 is not impor example GET--PROPFIND request 246 is shown. Note the US 2007/02040 12 A1 Aug. 30, 2007 inclusion of an indication of the PROPFIND portion of the PUT+PROPPATCH+LOCKREFRESHUNLOCK), these method in the form of the special extensions header 242 with methods can be implemented by combining the properties the appropriate value or verb. and locking extensions discussed above. Because locking 0.042 Although in one embodiment property related functionality and properties functionality is logically sepa methods are compounded onto other methods using headers rate, the methods and headers discussed above can readily and a message body extension, other approaches may also be coexist in a message. FIG. 10 shows further compounded used. For example, the WebDAV PROPFIND and PROP methods. The top message is an example of a PUT+PROP PATCH methods could be overloaded using new headers. PATCH+UNLOCK request 270. Note the size of the body, Furthermore, there are different ways for combining a including the size of the length fields, is 114234. The bottom resource and a set of properties in a message body. All of the message is an example of a corresponding response 272. A properties can be put in separate headers, since most prop response that is successful need not differ from the response erty sets are of manageable size. The properties could be to a normal PUT request. The lack of a lock token header assigned to respective different headers, although this would denotes a successful unlock. FIG. 11 shows an example require more coding to handle transport of properties. In POST+PROPFIND+LOCK method request 290 and a cor another embodiment, all of the properties (XML structure) responding response 292. The request 290 causes the server can be placed in one large header, however, headers could to put a resource or file, set some properties, and unlock the potentially become larger than the buffers that some web file or resource. servers allocate for header handling. 0047 FIG. 12 shows an error handling table and 0043. It is possible that some implementations may need examples of a response 302 using extended error handling. to simultaneously set properties (PROPATCH) and get prop A number of types of errors can occur when creating a erties (PROPFIND) of a resource. For example, to determine resource on a server via an extended HTTP authoring whether a particular property was properly set, or to deter request, for example, insufficient permissions, a resource mine what a property was set to before it was changed with checked out by another user or not checked at all, a quota a PROPPATCH. In this case, “PROPPATCH and violation, or a blocked filename or file type, the presence of “PROPFIND' can both be included, and a convention can be a virus, etc. Other errors such as a missing property can established for the location of sent and returned properties in occur when attempting to write to a file or resource. When the message body. an authoring error occurs on a server, typically the server 0044 Although the WebDAV protocol does not specify may have rich system-level information about the error. particular properties for resources, some typical properties Previously, when a module or server that implements Web are analogous to properties of objects in a file system, for DAV methods would encounters an error it would translate example content size, creation date, date of last modifica that error to a standard HTTP error code. A client might tion, last modifying user, special folder type, resource tag, attempt to provide a useful message about the error code, file attributes, creation time, last access time, last modified perhaps using a corresponding hardcoded message String. time, and so on. However, the standard HTTPerror codes are not rich enough to Support the number and types of errors which users can 004.5 FIG. 9 also shows an example GET--PROPFIND encounter using extended HTTP authoring. Therefore, an response 250. Note that the content type header field 240 extension is optionally provided to extend the error infor signals the presence of a multi-part message body using the mation fed back to a client, while keeping the existing HTTP special “multipart/MSDAVEXTPrefixEncodedheader” error code, which allows for backward compatibility. This extension. The lock related information is not required for extended error handling is accomplished by including in the PUT+PROPPATCH method but may signify the pres responses information specific to system-level errors on the ence of a server-side lock. The content type header field 240 signifies the presence of the multi-part message body 248 SeVe. within a message body 64. Generally those multiple parts are 0048. As seen in FIG. 12, extended error handling can be divided by a length field followed by a corresponding data, realized using a new HTTP header, for instance X-MS in other words, the message body 64 carries one or more DAVEXT ERROR: Decimal; String”. The decimal portion pieces of discrete data, each preceded by a corresponding is a code that maps to a system-level error Such as a Unix file length indicator. The sizes of the length fields and the sizes control error or a Win32 error. Preferably, the String portion of their data add up to the standard Content-length header. is in UTF-8 format. The example response 250 in FIG. 9 happens to have a properties section and a resource section, each preceded by 0049 Regarding compounding extensions of web author a respective length field, for example, a 64 bit integer. ing protocols in general, it should be noted that some proxy Because compound authoring is designed as an HTTP servers may attempt to interpret requests and send back extension, the standard HTTP message body 64 is used. cached responses. Therefore, it is preferable that clients only Because properties may need to be exchanged in a message use the new extensions or methods with POST rather than that may also include a resource Such as an HTML docu GET. Furthermore, when responding to a concatenated ment, the length-data pairings allow both properties and method or verb as discussed above, a server should mark a resources to be carried in a same message body 64. The response to indicate that it should not be cached, using, for standard Content-length header gives the total length of the example, a header like “cache-control: private”. message body 64/248 and can be used, in conjunction with 0050. The server and client processes for using extended the length indicators, to parse out the Substantive pieces of compound authoring methods are fairly straight forward content in the message body 248. given conventions as discussed above. Publicly available 0046 Referring back to the methods 152, 154 in FIG. 5 Source code and documentation can be consulted to deter (POSTIGET--PROPFIND+LOCKREFRESHUNLOCK, mine how to implement servers and clients with the func US 2007/02040 12 A1 Aug. 30, 2007 tionality for performing atomic authoring methods and in possible error conditions that occur in file handling. Conse particular locking and property functionality. This function quently, some embodiments may extend the HTTP errors ality can be performed in serial fashion when a compound using the X-MSDAVEXT ERROR header. The extended method is encountered. For example, whereas previously a error information may be used by application programs server may have had a function to handle a LOCK method 1308-1-m to provide more specific information to the appli and a function to handle a POST method, roughly, those cation user regarding a file system error that occurred on functions can be invoked consecutively when a compounded Server 1302. POST+LOCK method is received. 0057. As illustrated in FIG. 12, the new header may be 0051 Client Extended Error Handling defined using the Augmented Backus-Naur Form (ABNF) 0.052 In various embodiments, a client may send a com Syntax as specified by the Institute of Electrical and Elec pounded or uncompounded web authoring request on behalf tronics Engineers (IEEE) RFC 2616, Section 2.1, as follows: of an application program that creates a file system error at the server. The server may communicate extended error 0.058 MSError-Header=“X-MSDAVEXT ERROR information for the file system error using any response “:”Extended-error “:'Error-string message modified to include, for example, the X-MSDAV 0059) Extended-error=1 *DIGIT EXT ERROR header as described with reference to FIG. 12 and further described below. The client may be arranged to 0060) Error-string=1 *TEXT process, store and manage the extended error information so 0061 where an Extended-error is an implementation that it may be consumed by various application programs. specific number that provides additional information about The client may process, store and manage the extended error the cause of the HTTPerror, an Error-string is a percentage information differently depending on whether a file handle encoded UTF-8 string giving additional explanatory text as for the requested file resource is available, as described in to the cause of the error, as specified in section 2.1 of IEEE more detail with reference to FIGS. 15A and 15B. RFC 3986. In one embodiment, for example, the maximum 0053. In one embodiment, for example, the application length of the X-MSDAVEXT ERROR header is limited to programs may be modified to explicitly or implicitly request 1024 characters, although the embodiments are not limited the extended error information. In one embodiment, for in this respect. example, the extended error information may be automati cally provided to the application programs as with standard 0062). In various embodiments, the X-MSDAVEXT ER error handling routines. Once an application program ROR header as returned by server 1302 may be included in receives the extended error information, the application any suitable WebDAV server response. The following is an program may display the extended error information for a example response to a web authoring request to PUT a file user. In some cases, an application program may be arranged that was checked out to another user: to perform Subsequent actions in response to the extended 0063 HTTP/1.1 401 Unauthorized error information. 0064 Content-Length: 1656 0054 FIG. 13 provides an example of how extended errors may be handled by a client. FIG. 13 illustrates a server 0065 Content-Type: text/html 1302 coupled to a client 1304. client 1304 may include a client redirector 1306 coupled to a client redirector error 0.066 X-MSDAVEXT ERROR: 2342: look up table (CRELUT) 1314 and a file object array (FOA) 0067. The%20file%20is%20checked%20 1316. Client redirector 1306 may also be coupled to multiple out%20to%20%22domain%5cusername 9,622 application programs 1308-1-m, where m represents any positive integer. Client 1304 may also include one or more 0068 Server: Microsoft-IIS/6.0 operating systems 1310 as previously described. Operating 0069 WWW-Authenticate. NTLM system 1310 may further include an operating system error code list (OSECL) 1312. OSECL 1312 may include various 0070) X-Powered-By: ASP.NET types of standard operating system error codes (e.g., Win32 It may be appreciated that other WebDAV responses may be and NT error codes), and various types of standard protocol modified to include the X-MSDAVEXTERROR header, or error codes (e.g., HTTP error codes), and so forth. The variant header, as desired for a given implementation. The embodiments are not limited in this context. embodiments are not limited in this context. 0055. In various embodiments, server 1302 and client 1304 may be implemented as HTTP, HTTPS, and/or Web 0071. In general operation, assume server 1302 may need DAV devices arranged to communicate extended error infor to transfer dynamic information on error conditions to the mation 1340 as described with reference to FIG. 12. As used users in the form of extended error information 1340. For herein the term “extended error information' may comprise example, assume an application program 1308-1 sends an any error information beyond a static list of standard error authoring request to server 1302 via client redirector 1306. codes and corresponding Strings describing the error imple If a server error occurs in response to the authoring request, mented for a given device or protocol. Server 1302 may use server 1302 may send a response message with the X-MS the extended error information to provide dynamic error DAVEXT ERROR header. information for file system errors that occur on server 1302 0072 Client redirector 1306 may attempt to retrieve to various application programs 1308-1-m implemented by extended error information 1340 from the X-MSDAVEX client 1304. T ERROR header in a number of different ways. For 0056. As previously described, the current errors returned example, client redirector 1306 may query the HTTP header by the HTTP protocol are not sufficient to support all of the (X-MSDAVEXT ERROR) for a string, and parse the string US 2007/02040 12 A1 Aug. 30, 2007

to retrieve extended error information 1340 in the form of an generate and transmit an authoring request 1402 for a file extended error code and an extended error code string named “foo.doc' to client redirector 1306 of client 1304. containing the dynamic information to be sent to the user. In Client 1304 will generate and transmit a GET request 1404 another example, the X-MSDAVEXT ERROR header may for “foo.doc' to server 1302. Server 1302 handles the GET include a list of parameters for extended error information request 1404 and returns an appropriate response 1406. Such 1340. Rather than forcing client 1304 to pull extended error as a “Success 200” indicating that the file “foo.doc' has been information 1340 out of the X-MSDAVEXT ERROR located. Server 1302 may then transfer the file “foo.doc' to header, extended error information 1340 may be embedded client 1304. within the X-MSDAVEXT ERROR header in a well defined format. In this case, client redirector 1306 would 0.077 Once client 1304 receives the file “foo.doc,” client then have a method to get both the string and the parameters. 1304 may then need to lock the file “foo.doc' so that other Such a modified X-MSDAVEXT ERROR header could be users cannot modify the file while checked out to client implemented with the following format: 1304. Client 1304 may therefore generate and transmit a LOCK request 1408. Assume that another user has previ 0073 X-MSDAVEXT ERROR: Full-String: Parameter ously checked out the file “foo.doc' prior to server 1302 String receiving the LOCK request 1408 from client 1304. In this case, server 1302 may respond with a FAIL response 1410. 0074. Once client redirector 1306 retrieves extended Server 1302 may generate FAIL response 1410 as an HTTP error information 1340, client redirector 1306 may store header comprising the X-MSDAVEXT ERROR header extended error information 1340 in order for application with extended error information 1340. For example, the programs 1308-1-m to later query this data. Depending on X-MSDAVEXT ERROR header may be generated as fol whether a file handle has been generated for a given author lows: ing request, client redirector 1306 may store extended error information 1340 as part of CRELUT 1314 or FOA 1316. In 0078 HTTP/1.1 1401 Unauthorized addition to providing standard error information (e.g., Content-Length: 1656 WIN32 error codes, NT error codes, HTTPerror codes, and 0079 So forth), a new application program interface (API) may be 0080) Content-Type: text/html defined to allow application programs 1308-1-m to further retrieve extended error codes and/or extended error strings 0081 X-MSDAVEXT ERROR: 2342, as returned from server 1302 for the previous operation that 0082) The%20file%20is%20checked%20 failed. These and other client extended error handling opera out%20to%20%22domain%5cusername%22 tions may be described in more detail with reference to FIGS. 14, 15A and 15B. 0083) Server: Microsoft-IIS/6.0 0075 Although FIGS. 14, 15A and 15B as described 0084. WWW-Authenticate. NTLM below are directed to examples of active management opera tions by client redirector 1306 and/or application programs 0085 X-Powered-By: ASP.NET 1308-1-m, it may be appreciated that certain embodiments Where the extended error code is “2342 and the extended may implement passive management operations for client error code string is “The file foo.doc is checked out to user redirector 1306 and/or application programs 1308-1-m as name John Doe.” Server 1302 may transmit FAIL response desired for a given implementation. For example, as an 1410 to client 1304. alternative to modifying an application program 1308-1-n to actively retrieve extended error codes managed by client 0.086 Once client 1304 receives FAIL response 1410 redirector 1306, client redirector 1306 may be arranged to with the X-MSDAVEXT ERROR header, client 1304 may automatically pass extended error information directly to be arranged to process FAIL response 1410 in a number of application programs 1308-1m. To accomplish this, a tunnel different ways as indicated by logic 1500. Examples of two may be formed between server 1302 and application pro different handling techniques may be described with refer grams 1308-1-m through client redirector 1306. In this ence to respective FIGS. 15A, 15B below. Once processed, manner, client redirector can still handle the extended error client 1304 may send an ERROR response 1412 with codes which it was not previously aware of by Storing them standard error information to application program 1308-1. and passing them to application programs 1308-1-m without For example, ERROR response 1412 may include a standard necessarily performing any processing on the extended error Win32 error code used by operating system 1310 and codes. This arrangement may allow an improved server OSECL 1312. Application program 1308-1 may call a implementation and an improved application program to routine passing the standard Win32 error code as a param communicate effectively without necessarily requiring a eter to retrieve a standard Win32 error message, which is modified client redirector 1306. The embodiments are not typically a hard coded string from the Shell. limited in this context. 0087 Assuming application program 1308-1 needs addi 0.076 FIG. 14 shows a first extended error message flow. tional error information, application program 1308-1 may FIG. 14 illustrates an extended error message flow 1400 call a new API arranged to further retrieve extended error providing an example of a message flow between server codes and/or extended error strings as returned from server 1302 and client 1304. As shown in FIG. 14, assume that a 1302 for the previous operation that failed, as indicated by user of client 1304 would like to get and lock a resource on extended error information (EEI) request 1414. Client 1304 server 1302. The user will first direct an application program may retrieve the requested extended error information 1340, 1308-1-m to generate an authoring request to get a particular and pass extended error information 1340 to application resource. For example, application program 1308-1 may program 1308-1 via EEI response 1416. US 2007/02040 12 A1 Aug. 30, 2007

0088 Application program 1308-1 may receive extended Such an error mapping table is provided in the following error information 1340, and then perform any number of Table 1: defined actions with extended error information 1340 or in response to extended error information 1340. For example, TABLE 1. application program 1308-1 may display the extended error Win32 code string with “The file foo.doc is checked out to user Error name John Doe' to the user. In another example, the defined Extended NT Status Code actions may include other Subsequent processing operations, Error Code (Decimal) Meaning Such as automatically generating an email to 'John Doe' OxOOO900OE OxCOOOO901 220 V DOC CHECKED OUT requesting access or status of the file “foo.doc.” It may be (The file is locked appreciated than any number of defined actions may be or checked out, so implemented by a given application program 1308-1-m as the request failed.) desired for a given implementation. The embodiments are OxOOO9007S OxCOOOO902 221 V CHECKOUT REQUIRED (The file must be not limited in this context. checked out for the request to Succeed.) 0089 Referring again to logic 1500, as far as client OxOOO9006F OxCOOOO903 222 V BAD FILETYPE NO redirector 1306 is concerned extended error information URL (The server has 1340 could be generally classified into two categories. The blocked the file first category includes those types of errors that are not because of its type.) bound to a file handle. Examples of first category errors may OxOOO6OOOA (OxCOOOO904 223 V SHTML REQUEST include errors generated in response to CREATE request. TOO LONG (The re The second category includes those types of errors that are quest is too long.) bound to a file handle. Examples of second category errors OxOOOEOO98 OxCOOOO905 224 V FORMS AUTH NOT BROWSER (We are in may include errors generated in response to READ and forms-based auth WRITE requests. Client redirector 1306 may handle each mode, and the client category differently as described by FIGS. 15A, 15B. didn't send authorization 0090 FIG. 15A shows a first logic flow. FIG. 15A illus cookies.) trates a first logic flow 1500A that is representative of OxOO96OOO4 OxCOOOO906 225 V VIRUS INFECTED UL processing operations performed by client redirector 1306 of (The file was in fected with a virus client 1304 upon receiving extended error information 1340. and was unable to As shown in FIG. 15A, logic flow 1500A receives extended be uploaded.) error information 1340 at block 1502. Logic flow 1500A Ox00960009 OxCOOOO906 225 V VIRUS INFECTED BLOCKED DL (The file performs a check and determines extended error information was infected with a 1340 does not have a file handle at block 1504. virus and was unable to be downloaded.) 0091. In one embodiment, for example, logic flow 1500A Ox00960008 OxCOOOO907 226 V VIRUS DELETED DL may store extended error information 1340 in an extended (The file was in error look up table such as CRELUT 1314, with CRELUT fected with a virus 1314 including a process identifier, a thread identifier and a and was deleted because the virus login identifier, at block 1506. Client redirector 1306 may had already removed process errors that are not bound to a handle differently from all the content.) those errors that are bound to a handle. To accommodate the OxOOO9007O OxCOOOOO33 123 V BAD CHARS IN URL errors not bound to a handle, client redirector 1306 will (The server doesn't Support the URL.) maintain these errors using CRELUT 1314. CRELUT 1314 OxOOO90071 OxCOOOOO33 123 V NO RENAME TO may comprise a global hash table with the hash key obtained THICKET FOLDER (The using a process identifier (ID) such as PID1-n, a thread ID server detected the Such as TID1-p, and a Login ID Such as LID1-q, where n, p rename would have made a normal folder and q are positive integers. In one embodiment, for example, into a thicket Sup a maximum of 1024 entries is allowed for CRELUT 1314 porting folder.) with an expiration time of 60 seconds. The requests do not OxOOO90068 OxCOOOO106 2O6 V URL TOO LONG (The necessarily need to be actively cleaned up. For example, this URL was rejected because it was may be accomplished on an as-needed basis, such as when too long.) the maximum limit is reached and an entry needs to be OxOOO90063 (OxCOOOO8O1 1295 V OVER QUOTA (The added. change was rejected because the target 0092. In one embodiment, for example, logic flow 1500A site is over its may determine error information from extended error infor disk quota.) mation 1340 or a HTTP error code at block 1508. In some UNKNOWN OxOOOOOOOO O cases, client redirector 1306 may generate standard error information for application program 1308-1. For example, 0094) In such cases, client redirector 1306 retrieves the client redirector 1306 may use various error mapping tables numeric portion of the error and attempts to map it using to facilitate this determination. Table 1. If the mapping is successful, the resulting Win32 0093. In one embodiment, for example, client redirector error code is returned to the calling application program 1306 may use an error mapping table that maps extended 1308-1-m. If not, extended error information 1340 is error codes directly to standard error codes. An example of returned as success, and only the string will be available for US 2007/02040 12 A1 Aug. 30, 2007

the calling application program 1308-1-m. The string por handle. Consequently, to accommodate these errors client tion of the extended error is passed to the calling application redirector 1306 will maintain these errors on the file handle program 1308-1-m. The calling application program 1308 (FOBX) using FOA 1316. FOA 1316 may include a file 1-in may then use the string to provide more information to object such as FO1-x, a file handle such as FH1-y, and a user, which may be useful to identify, troubleshoot or EEI1-z, where x, y and Z represent positive integers. The file respond to the underlying problem that created the error. handle may then be used to retrieve extended error infor mation 1340 by directly searching FOA 1316, rather than 0.095. In one embodiment, for example, client redirector using the more complex hashing routines implemented for 1306 may use a mapping table such as shown in Table 1 to CRELUT 1314. retrieve a standard error code from extended error informa tion 1340. Referring again to our previous example, assume 0101 Similar to logic flow 1500A, logic flow 1500B may extended error information 1340 includes the extended error determine error information from extended error informa code of 0x0009000E. As shown in Table 1, this may map to tion 1340 or a HTTP error code at block 1518. Once client a Win32 error code (in decimal) of 220. Such mapping redirector 1306 determines the standard error code, logic operations may reduce the need for server 1302 to commu flow 1500B returns the standard error information to the nicate standard error codes in addition to extended error application program 1308-1-m at block 1520. This may be information, thereby decreasing communication traffic and accomplished via ERROR response 1412 as previously increasing communication efficiency, as well as provide described. other advantages. 0102 Once extended error information 1340 has been processed and stored by client redirector 1306, application 0096. In various embodiments, client redirector may also programs 1308-1-m may receive extended error information use other error mapping tables to determine standard error 1340 in a number of different ways. For example, applica codes for use by application programs 1308-1-m. For tion program 1308-1 may be arranged to explicitly or example, standard protocol error codes such as HTTPerrors implicitly request extended error information 1340 from may be directly mapped to Win32 error codes. In some client redirector 1306. This may be accomplished using cases, this could operate as a default mapping since all various API or DLL functions. An example of a suitable API HTTP errors typically have a matching Win32 error code. that application program 1308-1 may use to get extended 0097. In various embodiments, client redirector 1306 error information 1340 may be illustrated as follows: may perform error code translations according to various sets of ordering rules. For example, if a client mapping from the extended error code to the Win32 error code exists, then DWORD client redirector 1306 may use this mapping. All legacy DavGetExtendedError( client applications will be able to display the Win32 mes in HANDLE hFile, sage, while newer application programs will be able to in DWORD *ExtError, in ecount(*cChSize) LPWSTR ExtErrorString, access the extended error code string for extended error inout DWORD *cChSize information. If the extended error information header is ) present, but the error is unknown to client redirector 1306, client redirector 1306 could fallback to the HTTPerror code. Client application programs understanding extended error information would be able to get the extended error code The DavGetExtendedError() routine may be called by string to display instead of the less useful static mapping. If application program 1308-1 to retrieve extended error infor there is no extended error information header present, client mation 1340 for an extended error code returned from server redirector 1306 could simply use the HTTPerror code as in 1302 for the previous operation that failed. The DavGetEx conventional techniques. tendedError() routine may include the following arguments: 0098. Once client redirector 1306 determines the stan 0103 hFile Handle to the file for which the extended dard error code, logic flow 1500A returns the standard error error code is to be retrieved. INVALID HANDL information to the application program 1308-1m at block E VALUE indicates the retrieval of an error code on a 1510. This may be accomplished via ERROR response 1412 create that was done on this thread earlier. as previously described with reference to FIG. 14. 0104 ExtError Pointer to a DWORD location which receives the extended error value on Success. 0099 FIG. 15B shows a second logic flow. FIG. 15B 0105 ExtErrorString Pointer to a string which illustrates a second logic flow 1500B that is representative of alternative processing operations performed by client redi receives the extended error String on Success. rector 1306 of client 1304 upon receiving extended error 0106 cChSize Pointer to a DWORD location which information 1340. Similar to logic flow 1500A, logic flow contains the size in chars of the buffer pointed by 1500B receives extended error information 1340 at block ExtErrorString on input and receives the actual number 1512. Unlike logic flow 1500A, however, logic flow 1500B of chars copied on output. performs a check and determines extended error information 0107 The DavGetExtendedError() routine may include 1340 does have a file handle at block 1514. the following returns: 0100. In one embodiment, for example, logic flow 1500B 0108 ERROR SUCCESS The call was successful. stores extended error information 1340 with a file object 0109 ERROR INVALID PARAMETER If the call corresponding to the file handle at block 1516. The existence was made for the retrieval of an error code after a of a file handle makes storing and retrieving extended error Successful operation. information 1340 somewhat less complex than without a file 0110 ERROR MISC Some other Win32 error code. US 2007/02040 12 A1 Aug. 30, 2007

0111 Although HTTP and WebDAV have been discussed error information from a file object if said extended error above, the ideas discussed above are expected to be appli information has a file handle. cable to any future variations or versions of HTTP and 6. The article of claim 1, further comprising instructions WebDAV. Furthermore, a standard protocol is considered to that if executed enable the system to receive said response refer to any future or current standard protocol. message with said extended error information having an 0112 In conclusion, those skilled in the art will realize extended error header name and an accompanying header that storage devices utilized to store program instructions field comprising information identifying and/or describing a can be distributed across a network. For example a remote corresponding error. computer may store an example of the process described as 7. The article of claim 1, further comprising instructions Software. A local or terminal computer may access the that if executed enable the system to receive said response remote computer and download a part or all of the software message with said extended error information having a to run the program. Alternatively the local computer may system error code of said server and a string specifically download pieces of the software as needed, or distributively describing the error. process by executing some Software instructions at the local 8. An article comprising a computer-readable storage terminal and some at the remote computer (or computer medium containing instructions that if executed enable a network). Those skilled in the art will also realize that by system to: utilizing conventional techniques known to those skilled in receive a response message with extended error informa the art, all or a portion of the software instructions may be tion from a server, carried out by a dedicated circuit, such as a DSP program store said extended error information by a client; mable logic array, or the like. receive a request for said extended error information; 0113 All of the embodiments and features discussed retrieve said extended error information by said client; above can be realized in the form of information stored in and volatile or non-volatile computer or device readable medium. This is deemed to include at least media Such as send said extended error information to an application program. CD-ROM, magnetic media, flash ROM, etc., storing 9. The article of claim 8, further comprising instructions machine executable instructions, or source code, or any that if executed enable the system to store said extended other information that can be used to enable a computing error information in an extended error look up table with a device to perform the various embodiments. This is also process identifier, thread identifier and login identifier if said deemed to include at least volatile memory such as RAM extended error information does not have a file handle. storing information Such as CPU instructions during execu 10. The article of claim 8, further comprising instructions tion of a program carrying out an embodiment. that if executed enable the system to retrieve said extended error information from an extended error look up table if 1. An article comprising a computer-readable storage said extended error information has a file handle. medium containing instructions that if executed enable a 11. The article of claim 8, further comprising instructions system to: that if executed enable the system to store said extended error information with a file object corresponding to a file send an authoring request to a server; handle. receive a response message with extended error informa 12. The article of claim 8, further comprising instructions tion by a client; and that if executed enable the system to retrieve said extended error information from a file object if said extended error send said extended error information to an application information has a file handle. program. 13. The article of claim 8, further comprising instructions 2. The article of claim 1, further comprising instructions that if executed enable the system to receive said extended that if executed enable the system to: error information with an indication of a server-side error. determine said extended error information does not have 14. The article of claim 8, further comprising instructions a file handle; and that if executed enable the system to receive said extended error information from a field body of said response mes store said extended error information in an extended error sage, said extended error information comprising an oper look up table with a process identifier, thread identifier ating system error code or a string describing an operating and login identifier. system error. 3. The article of claim 1, further comprising instructions 15. The article of claim 8, further comprising instructions that if executed enable the system to retrieve said extended that if executed enable the system to: error information from an extended error look up table if said extended error information has a file handle. parse the response message for an extended error header; 4. The article of claim 1, further comprising instructions and that if executed enable the system to: extract from said extended error header said extended error information having information about an error on determine said extended error information does have a file the server. handle; and 16. An article comprising a computer-readable storage store said extended error information with a file object medium containing instructions that if executed enable a corresponding to said file handle. system to: 5. The article of claim 1, further comprising instructions send an authoring request to a client redirector, that if executed enable the system to retrieve said extended receive error information from said client redirector; and US 2007/02040 12 A1 Aug. 30, 2007

receive extended error information from said client redi retrieve an extended error code from said extended error rectOr. information; 17. The article of claim 16, further comprising instruc tions that if executed enable the system to send a request for send a request to an operating system for a string asso said extended error information to said client redirector. ciated with said extended error code; and 18. The article of claim 16, further comprising instruc display said string. tions that if executed enable the system to: 20. The article of claim 16, further comprising instruc tions that if executed enable the system to receive said retrieve a string from said extended error information; and extended error information with an indication of a server display said string. side error. 19. The article of claim 16, further comprising instruc tions that if executed enable the system to: