Changes with jWAP-CVS (11/21/2006) *) WAPClient: - Write response headers to stderr - Exit with code '2' if the WSP request failed - Use the user-agent passed on the command-line *) wtp.CWTPInitiator: - Segment number (PSN) is 8 bits wide, so don't truncate it to 7 bits. This fixes reception of segmented SDUs with a segment count > 127 - process(): log PDUs (if debugging is enabled) - Deal with missing segments (by sending a Negative Acknowledgement) *) wtp.CWTPSocket: - Increased the receive datagram buffer size to 2K (was 1400). This is a workaround preventing corrupted data if a fragment exceeds 1400 octets. *) wtp.CWTPPDU subclasses - Unified toString() methods, including hexdump of the payload *) wsp.CWSPConnect: - Set client- and server SDU size to 512K (which happens to be the maximum value we can receive: 256 segments * 2K) *) wsp.pdu.CWSPPDU: - first step towards decoding capabilities (currently only SDU sizes) *) wsp.header.Encoding: - uintVar encoding fixed for negative integers (fixes bug #1511799) *) wsp.header.WAPCodePage: - content-type encoding: + general-form fixed (use value-length encoding instead of uintVar). Bug showed up only for content-type values with a length > 30 + well-known character sets may not fit in a short integer - use either short or long coding + code unknown charsets as text string - decoding for some X-WAP- headers added. *) util.BitArrayOutputStream: - writeUintVar(long) fixed *) util.TransTable: - Support for entries having multiple values (aliases) for a key. *) resources.charsets: - Updated list of IANA character sets (including aliases) Changes with jWAP 1.2 (04/29/2005) *) wsp.header.WAPCodePage: - Support for encoding/decoding the "location", "content-location", "content-id" and "content-disposition" headers - Constructors now are protected to allow subclassing - Prevent a NullPointerException for unknown headers - "cache-control" header encoding added - fixed "charset" parameter encoding and decoding for the Content-Type header - decodeContentType: Prevent ArrayOutOfBounds exceptions for content-type headers having no value - The "Content-Type" header is now encoded according to WSP encoding version 1.3 *) WAPClient: - Don't call InetAddress#getHostName() when logging since this causes a DNS query and therefore might introduce (severe) delays (only occurs with debug logging enabled). - connect() and execute() support a new argument: timeout in milliseconds - connect() now throws a SocketException if a timeout occurs - A new connect() method has been introduced that can be used to pass WSP headers for the connect operation *) util.TransTable: - Reuse tables once created instead of reconstructing them every time *) wtp.CWTPSocket: - close() now waits for reader thread to terminate. This prevents "Address already in use" exceptions *) WAPClient/wsp.CWSPSession: - Constructor added for providing local address and port to bind to *) wsp.CWSPSession: - Fixed a memory leak occuring when a session was reused for multiple GET/POST invocations *) wsp.pdu.CWSPHeaders: - Prevent a NullPointerException for Headers not having a value *) wsp.multipart.MultiPartData: - New constructor taking WSP Header encoding version (major/minor) as argument *) wsp.WSPDecoder: - added type tests to WSPDecoder to check which data type follows. This is needed in higher protocol levels, where values can be coded as ints or strings alternatively (like MMS PDUs) (koobla) *) wsp.header.Encoding: - quoted string encoding fixed (a '4' was used as prefix instead of a '"') *) wsp.header.HeaderToken: - don't lower-case the whole token, lowering the 'key' part is enough. Previously, setting a header like "Content-Type: text/plain; name=Hello" resulted in "Hello" being converted to lowercase (which is not quite what a user expects). Changes with jWAP 1.1 (05/31/2004) *) WSP Header encoding/decoding implemented (some headers still missing) *) WSP MultiPartData encoding/decoding implemented *) Introduced a simplified WAP Client (net.sourceforge.jwap.WAPClient) including a main-method *) All classes now use the log wrapper for logging. This allows jWAP to run without log4j being in the classpath *) replaced java.net.InetSocketAddress with CWSPSocketAddress since InetSocketAddress is only available in Java >= 1.4 *) Created Ant build.xml for compiling, testing, and building jWAP *) jWAP now again compiles and runs with Java 1.2 *) net.sourceforge.jwap.wtp.CWTPInitiator: - Fixed TID validation by sending an ACK with the Tve/Tok bit turned on - SEGMENTED_RESULT Reception did not work when holdOn flag was not set. Segmentation should now work regardless of the holdOn flag *) net.sourceforge.jwap.wtp.CWTPSocket: - Make sure that calling close() reliably terminates the receiving thread by using a receive timeout *) net.sourceforge.jwap.wsp.CWSPSession: - Only initialize log4j if it is not yet initialized *) net.sourceforge.jwap.wsp.CSPMethodManager: - synchronize tr_invoke in constructor to prevent a possible NullPointerException accessing the wtp variable in s_methodResult() - s_methodResult_ind() now takes a CWSPReply PDU since we need this for extracting the status code. The status will be converted to a HTTP-Statuscode and passed to the upper layer *) net.sourceforge.jwap.wtp.pdu.CWTPPDU: - fixed a bug in reception of segmented results: the payload starts at offset 4