Release Notes for MacHTTP 2.0 This file (and part 2) summarize all of the changes made to MacHTTP since version 1.3 was released. It is in reverse chronological order. It's worth reading through as there may be some tidbits of info here that failed to make it to the formal documentation. Version 2.0fc4b additions ----------------------- + Fixed a bug introduced in 2.0fc4 related to handling cached document requests. + added Message-ID: fields to MacHTTP return headers for HTTP/1.0 compliance. + changed Date: header field to be the date/time of the reply and not a file's creation date, in compliance with HTTP/1.0 spec. + fixed the logging problem with NetScape when connections are dropped too soon by the client. Version 2.0fc4 additions ---------------------- +fixed bug with slow client requests and made request processing conform to HTTP new standard. This fix substantially reduced the memory requirements for handling POST requests as a side-effect. + zero out DNS cache when the no_dns property is toggled. The DNS cache was also increased to 20 entries. +changed MacHTTP application class code to 'capp'. This conforms to the AppleEvent convention. Version 2.0fc3 additions ---------------------- + corrected problem with status report AppleEvent + created a background-only version of MacHTTP Version 2.0fc2 additions ---------------------- + added support for %xx encodings in the Mac O/S file type and creator fields in suffix mappings in the config file. Now you can encode special characters (and spaces) that might appear in file types and creator codes in the MacHTTP.config file using the same %xx hex encodings as those used in URLs. + fixed the About box. It's no longer "under construction". + fixed bug with HEAD response for files not found. MacHTTP now returns the appropriate error response (file not found) if a HEAD request is made for a non-existent file. + MacHTTP no longer returns modified and creation date info for the "error" file. This prevents caching of error messages in place of the real file. + file not found error message is now returned correctly. MacHTTP was returning a 200 OK status code when files weren't found. It now returns the correct file not found error code, but still returns the contents of (or executes) the ERROR file specfied in the config file. + The message and status code returned to clients when the server is refusing connections has been fixed to return the 202 Accepted code to prevent improper caching of messages from MacHTTP in place of the real document. + referer information is logged to screen for missing file references. When a request is made for a non-existent file, MacHTTP prints the URL of the document containing the bad URL on the screen if the WWW client provides this information. + removed text translations for CGI results so they match ACGI behavior. CGI scripts and apps were still having their return results translated, which messed up the ability to return binary information. Please let me know if this has an adverse affect on CGI apps like AppleWebSearch. + added user-agent parameter for scripts and CGIs. All supported scripting interfaces now receive the "user-agent" parameter if a client supplies it. This is the name and version of the client being used. For CGI and application authors, the AppleEvent keyword value for the user-agent parameter is 'Agnt'. Version 2.0fc1 additions ---------------------- This is a final candidate version of MacHTTP 2.0. This version contains the complete functionality of version 2.0, and all reported bugs are fixed. If no problems are found with this version, it will become 2.0 as soon as I fix the About box. New changes and features for this version include: + added support for the HEAD method. This is identical to GET except that no content is returned (only the header). Useful for robots, etc. + fixed abrupt connection drops for busy and refused connections. MacHTTP was dropping the connection too quickly when telling some clients that the server was busy or refusing connections. MacHTTP now treats busy and refused connections as regular connections, running them through the state machine. Appropriate HTTP status codes are returned for BUSY and SERVICE UNAVAILABLE now. + removed the HIDEWINDOW config file command. This function is performed by the menu option of the same name. + fixed premature connection drop logging problem. When clients terminated a transfer, MacHTTP wasn't logging the partial data transfer or the file access. It does now. + added an indicator for refused connections. If "Refuse Connections" is selected from the Option menu, a red "Refused" message appears in the status display. + added notifcation of memory errors when MacHTTP is in the background. If MacHTTP is running in the background, or as a background-only app, then it will use the Notification Manager to alert the user that a problem has cropped up. + MacHTTP now caches the last 10 DNS look-ups. Version 2.0b7 additions --------------------- + Added a memory status graph and changed low memory warning. The status graph shows the amount of free memory remaining (in white). Low memory warning shows up whenever MacHTTP doesn't have sufficient memory to complete an operation. + Added events for adding and deleting passwords. Add User and Delete User events allow you to manage passwords for realms from AppleScript. Uses for this might include allowing users to self-validate themselves after completing a questionaire, scripts that can add users to a discussion list managed by MacHTTP, bulk load of usernames from a text file, etc. + MacHTTP now gets a file's modification date from actual target of an alias, not the alias itself. This makes if-modified-since requests work correctly for all files and doesn't require that aliases be remade each time the original is modified. + Reduced max MAXUSERS to 46 to accomodate MacTCP's limit. This leaves 2 spare connections for other IP applications. + MacHTTP now saves its window location and size as well as the values of flags in the Options menu in the MacHTTP Settings file. These values are restored the next time the program starts. If you want to reset the window location and dimensions to the default values, hold down the mouse button while MacHTTP starts up. + Added Referer: argument to CGIs. The AppleEvent keyword 'refr' contains the value of the "Referer:" field from the HTTP header. This is the URL to the document that referenced the current page. The variable passed to SCRIPT files is "referer". Version 2.0b6 additions --------------------- + Fixed several bugs related to crashes in b5, mostly related to increased POST arg size. + Modified CGI logic to use System 7 temporary memory calls to help improve MacHTTP's low memory performance. + Post args are now set at 24K. 32K is too large for many clients and if the full 32k bytes are used, they are too large for AppleScript to compile SCRIPT files. + Removed the Max Free memory indicator to free up space for new info in the status area, as it never changed and was of little value. Version 2.0b5 additions --------------------- + Added support for 32k POST arguments. Normal GET requests are allowed to be as large as 4k now, while POST requests can be as large as 32k. + Enhanced low memory behavior. MacHTTP now reserves a small amount memory for "emergency" situations. If MacHTTP's free memory decreases below a critically low value, this memory is freed up and all new connections are refused. This allows the server to continue running, informing clients there is a problem. But, MacHTTP won't serve any more documents until the administrator intervenes. + Added a low memory error indicator. If any type of low memory situation occurs, MacHTTP will draw a big, red "M" in the status area. If you see this indicator, it means that MacHTTP ran out of memory at some point. If details aren't visible in the status message area, scroll the buffer backwards and check for more info. Version 2.0b4 additions --------------------- + fixed problem related to crashes when client sends empty From: tag. This should fix the last of the unexplained crashes. + modified response behavior for error and noaccess files. MacHTTP now correctly sends the defined error file whenever a URL cannot be found. The error file can now be a CGI (SCRIPT, ACGI, etc.) which will be executed when a requested file cannot be found. The requested URL will be passed to the script, allowing URL redirection to be done for missing files, etc. Version 2.0b3 additions --------------------- + fixed memory leak bug related to the mystery crashes since b13. Version 2.0b2 additions --------------------- + fixed HTML error returns for bad script executions. Clients now get a clue that a script failed to execute correctly. + removed modal warnings that caused MacHTTP to stop processing requests until OK was clicked. No more "Unable to create IP stream" modal dialogs. + fixed start-up bug that crashes the system when MacTCP isn't loaded successfully. + fixed range check bugs when setting property/config file values + added 503 Server too busy error code. Not very much client support for this yet, so you won't see any benefits with clients like NetScape until they add support. Version 2.0b1 additions --------------------- + Added additional parameters to CGIs and SCRIPTs: from_user, server_name, server_port, script_name, content_type. Variables available for use in SCRIPT, CGI, and ACGI files: -- http_search_args - stuff in the URL after a ? -- post_args - stuff in the URL after a $ -- method - GET, POST, etc. Used to tell if post_args and content_type are valid -- client_address - IP address or domain name of remote client's host -- from_user - non-standard. e-mail address of remote user -- username - authenticated user name -- password - authenticated password The next 3 variables are useful from scripts that want to generate URLs on the fly that are self-referencing. You should be able to write "portable" scripts using this information, since you won't need to hard-code your host name, etc. into scripts anymore. -- server_name - name or IP address of this server -- server_port - TCP/IP port number being used by this server -- script_name - URL name of this script This variable is only valid when method = "POST" -- content_type - MIME content type of post_args + Added AppleEvent support for setting some config file variables remotely. You can now Get and Set the following MacHTTP application properties from AppleScript. See the MacHTTP "machttp_admin.acgi" sample script for examples of their use. Properties: dump_buf_size small integer -- Output buffer size for TCP/IP writes to clients. (256-10240) pig_delay small integer -- Number of ticks to run MacHTTP before relinquishing control to other apps (0-120) maxusers small integer -- Maximum number of simultaneous users. (3-1000) no_dns boolean -- Toggle for domain name resolution by MacHTTP (true=off/false=on) time_out small integer -- Timeout value for idle MacHTTP connections and AppleEvents in seconds (5-600) maxlistens small integer -- Maximum number of TCP/IP listens to queue up (3-50) For instance, the following would adjust the "pig_delay" property by 10 and show the result in the Script Editor's result window: tell application "MacHTTP 2.0b1" get pig_delay --"result" holds the value of pig_delay now set pig_delay to (result + 10) get pig_delay end tell Warning! If you access these properties, or any other MacHTTP AppleEvents from a script called from MacHTTP, it MUST be from an ACGI type script. Any other script type will cause MacHTTP to deadlock with your script until the AppleEvent times out. + fixed FREF resource and file type info for settings file. You should rebuild your desktop to get the new icon for the settings file. NOTE: Version notes for 1.3.1bx versions are contained in the Read Me (2) document. This document contains important info that should be read if this is your first 2.0x download.