Warning, /graphics/digikam/core/dplugins/generic/tools/mediaserver/upnpsdk/Platinum/CHANGELOG.txt is written in an unsupported language. File is not indexed.

0001 Platinum 1.3.0
0002 --------------
0003 - fixed: callstranger vulnerability (https://callstranger.com/)
0004 
0005 Platinum 1.2.0
0006 --------------
0007 - updated: Neptune 1.1.11
0008 - updated: xcode requirements
0009 - fixed: compiling issues when NPT_CONFIG_ENABLE_LOGGING is not defined
0010 - added: support for carthage workflow
0011 - fixed: linux config
0012 - removed: no-crypto info in readme
0013 
0014 Platinum 1.1.1
0015 --------------
0016 - updated: Neptune 1.1.9
0017 - added: Travis support
0018 
0019 Platinum 1.1.0
0020 --------------
0021 - updated: Neptune 1.1.7
0022 
0023 Platinum 1.0.5.13
0024 -----------------
0025 - fixed: didl used "actors" instead of "actor"
0026 - changed: moved modelURL after serialNumber to please UCTT
0027 - added: relax exception to identify DIAL devices which are not UPnP compliant since they don't expose valid services.
0028 - changed: no more sscanf dependency
0029 - added: Android NDK r9b support
0030 - added: UDA 1.1 initial support
0031 - fixed: Crash fix when stopping device while a subscription request is received. The HttpServer uses its own task manager which could end up queuing a new task into the DeviceHost task manager after it had been stopped and this task would never be stopped. The ServiceEvent task would then try to access a service that had then be destroyed when DeviceHost:Stop returned. A TaskManager cannot be restarted now once Abort has been called.
0032 - fixed: memory leaks
0033 
0034 Platinum 1.0.4.11
0035 -----------------
0036 - fixed: crash when stopping UPnP while scheduling for scpd retrieval
0037 - fixed: rare crash when stopping UPnP while connections are opened.
0038 
0039 Platinum 1.0.4.10
0040 -----------------
0041 - fixed: simplified connection management fixing a potential crash on shutdown
0042 - fixed: Platinum.framework now contains fat library instead of Mach-o objects.
0043 - added: HTML help is now part of SDK (instead of zip)
0044 - fixed: android build was looking for axTls instead axTLS library.
0045 
0046 Platinum 1.0.4.9
0047 ----------------
0048 - fixed: crash due to uninitialized variables
0049 
0050 Platinum 1.0.4.8
0051 ----------------
0052 - fixed: leaks during exit by reworking the sequence of singletons automatic destruction.
0053 - added: now extracts presentationURL from device description.
0054 - added: can now opt in to use media cache in FileMediaServerTest.
0055 - fixed: 2008 VS project
0056 - added: 'down' command to MicroMediaController to download a media locally
0057 - fixed: interruption during download could happen if non blocking socket was full and returned NPT_ERROR_WOULD_BLOCK. Now retries.
0058 
0059 Platinum 1.0.4.3
0060 ----------------
0061 - fixed: leaks during event processing.
0062 
0063 Platinum 1.0.4.2
0064 ----------------
0065 - fixed: Potential leaks and crash when tasks failed to start due to UPnP entire stack shutting down.
0066 
0067 Platinum 1.0.4.1
0068 ----------------
0069 - fixed: Slow shutting down.
0070 
0071 Platinum 1.0.4.0
0072 ----------------
0073 - changed: Windows sockets are now fully cancellable.
0074 - fixed: crash when closing due to static cleanup orders when using TLS, possible leak instead. Proper fix in the works
0075 - fixed: potential cause for crash during socket cancellation due to references not carrying over thread safety
0076 
0077 Platinum 1.0.3.1
0078 ----------------
0079 - changed: increased timeout for write io http server tasks to prevent PS3 from disconnecting too early (60 secs is not enough apparently)
0080 - changed: put back announcing bye-bye first.
0081 - fixed: http logger defines when not using logging
0082 - fixed: scons build for macosx
0083 - fixed: locking for 30 secs when stopping UPnP if sockets are in the middle of a connection than hangs.
0084 
0085 Platinum 1.0.3.0
0086 ----------------
0087 - fixed: potential deadlock when subscribing to a service from the delegate upon being notified a device is ready
0088 - fixed: crash when device disappears while processing an event notification
0089 - changed: made posix mutexes recursive to simplify PLT_CtrlPoint implementation
0090 - changed: don't update device base url when receiving a SSDP Notify with a different IP as it could be unreachable.
0091 
0092 Platinum 1.0.2.1
0093 ----------------
0094 - fixed: fault XML for DLNA compliance
0095 
0096 Platinum 1.0.2.0
0097 ----------------
0098 - fixed: deadlock in PLT_CtrlPoint
0099 
0100 Platinum 1.0.1.0
0101 ----------------
0102 - added: GetPort method to PLT_CtrlPoint in case one wants to attach to the event http server for serving static content
0103 - fixed: deadlocks with new PLT_CtrlPoint pending notifications
0104 - changed: increased subscriber notification renewal to 90 secs before end of subscription
0105 - fixed: PLT_CtrlPoint log formatting error
0106 - fixed: memory leaks in PLT_CtrlPoint
0107 - fixed: PLT_HttpServer now properly supports chunked-encoding responses.
0108 
0109 Platinum 1.0.9.3
0110 ----------------
0111 changed: reworked event notifications to be reprocessed if subscriber is not known yet immediately after a subscription.
0112 fixed: some deadlocks due limiting number of tasks in task manager by default now.
0113 added: now keep track of pending inspections so that a bunch of SSDP notifications don't all trigger a bunch description requests.
0114 added: support for armv7s, Xcode 4.5
0115 added: added support for changing default TTL values
0116 changed: made DecomposeVar protected virtual
0117 
0118 Platinum 0.6.9.3
0119 ----------------
0120 fixed: passing 0 for frequency to Search/Discover now disables repeat
0121 added: support for Scons 2.1
0122 changed: improved UPnP stopping process
0123 changed: limit max number of tasks per task manager to 50 by default
0124 changed: limit max number of HTTP clients handled by HTTP server to 50 by default
0125 changed: made PltCtrlPoint AddDevice & RemoveDevice protected so they can be called by custom implementations to manually remove expired devices
0126 
0127 Platinum 0.6.9.2
0128 ----------------
0129 changed: less strict about invalid protocol info extra params parsing
0130 fixed: fixed embedded test
0131 added: android jni module and sample
0132 fixed: subscription notification events wouldn't be received after upnp got restarted
0133 fixed: task manager stop could be hanging while waiting for tasks to finish if a task was started during cancellation
0134 
0135 Platinum 0.6.9.1
0136 ----------------
0137 added: support to bridge Neptune Logging to other loggers such as Cocoa Lumberjack
0138 fixed: better support for embedded devices detection
0139 added: GetVolumeState to PltMediaController
0140 fixed: crash in NPT_Socket::Cancel when stopping HTTP clients
0141 
0142 Platinum 0.6.9
0143 --------------
0144 changed: reverted trying to bind to source port 1900, it would fail eventually
0145 added: added back support for sending SSDP messages over broadcast in case multicast is blocked by routers or firewalls
0146 fixed: MediaRenderer channel attribute for volume was wrong
0147 changed: MediaBrowser caches only metadata now
0148 fixed: Scons XCode 4.3.1 support
0149 added: workaround for servers that start to return bogus total matches on the last page
0150 updated: Neptune 1.1.3
0151 added: some CTT 2.0 compliance re SSDP
0152 added: Date HTTP header to requests
0153 fixed: crash on exit due to static finalizers being called in random order
0154 fixed: Host HTTP header wasn't being reset properly on redirects
0155 removed: OSX Platinum frameworks depending on SystemConfiguration and Foundation frameworks
0156 
0157 Platinum 0.6.8
0158 --------------
0159 changed: try to bind source port to 1900 for ssdp notify and search responses
0160 added: capability to change user agent on the fly
0161 added: didl parsing and formatting of dc:description & upnp:icon
0162 added: user agent header to SSDP packets
0163 fixed: Windows build
0164 added: UPnP AV Renderer functions
0165 changed: verify we can seek the body of the response before returning Accept-Range: bytes
0166 fixed: don't use localhost address for SSDP announcements
0167 changed: short connection time out for subscribers since they may not exist and this would block when exiting
0168 fixed: bug when parsing W3C date time
0169 fixed: compiling issues when removing TLS support
0170 fixed: recursion that prevented some logs to be written
0171 fixed: potential issue with thread safe references
0172 added: support for removing HTTP header in a request or response before sending it
0173 changed: support bytes:0- range request for non seekable streams and avoid returning 416.
0174 changed: return 416 instead of 500 in case we can't stream the body and a range request was made (this makes XBox and PS3 happier)
0175 changed: make all references thread safe by default
0176 
0177 Platinum 0.6.7
0178 --------------
0179 fixed: request would fail when retrying on a new connection after the previous one failed because server closed it without using a Connection:close header. Only happens with requests containing a body.
0180 fixed: always adding Connection:close in HTTP 1.1 responses due to checking content-length prior to setting it.
0181 changed: allow DLNA interactive request.
0182 changed: Don't override accept-range header if already set.
0183 changed: more DLNA compliance for DMC
0184 changed: better handling of path extraction. Now url encodes url root as well
0185 changed: better support for persistent connections with http 1.0
0186 changed: eturn HTTP 416 if Accept-Range header is not bytes in the request and the server makes a range request
0187 
0188 Platinum 0.6.6
0189 --------------
0190 fixed: mime type detection was not properly handled
0191 fixed: bad parsing of file path from url when MediaServer url root was just '/'
0192 fixed: now builds universal framework for iOS and OSX properly
0193 added: missing files
0194 
0195 Platinum 0.6.5
0196 --------------
0197 added: Platinum.xcodeproj now builds Platinum.Framework for both iOS and OSX to make it easier to integrate as a 3rd party.
0198 changed: Better chunked-encoding support (don't write Content-Length)
0199 changed: Add Accept-Range header when returning HTTP 416 as per spec
0200 updated: based on Neptune 1.1.2 now
0201 fixed: potential crash due to using non thread safe references
0202 fixed: FindDevice could return invalid root device, now keep a reference of root device when fetching all SCPDs of root device and embedded devices just in case root device goes away
0203 fixed: crashes in MediaCrawler sample code
0204 changed: simplified getting default mime type
0205 changed: only allow keep-alive in response if it contains a ContentLength header or a Chunked transfer encoding
0206 changed: handlers can now be owned by NPT_HttpServer
0207 changed: simplified HttpClientTask by using new NPT_HttpClient pipelining feature
0208 fixed: now detects devices with SCPD urls containing query param or hash tags
0209 fixed: C++/CLR Managed Binding enumeration of embedded devices not using reference
0210 changed: removed VS2005 support
0211 changed: removing broadcast support (only needed for obsolete XBox v1)
0212 fixed: potential case where a task can be added as we're stopping
0213 changed: don't add Accept-Range bytes header if chunked encoding is used
0214 changed: when enumerating interfaces for SSDP, only returned MULTICAST enabled Interfaces and removed Point-To-Point ones
0215 changed: Forces port 1900 for SSDP now and don't depend on default Multicast interface and instead join on all valid interfaces
0216 changed: don't advertise resources on all interfaces unless ALLIP is found in filter (DLNA)
0217 fixed: localinterface not being set for embedded devices resulting in event subscription failing because the subscription IP was 0.0.0.0 rather than the IP of the control point.
0218 added: Sonos support back using Rhapsody (only visible in Desktop Controller though)
0219 fixed: @refID mask detection and use cases insensitive compare for tags now
0220 added: support to serve byte range requests for a stream, not just a file
0221 added: More DLNA compliance with certain DLNA HTTP headers
0222 changed: simplified XBox & WMP support to fix "Not Authorized" seen for Denon DLNA devices.
0223 fixed: mask overlapping with another, added more masks support for DLNA compliance
0224 fixed: more dlna compliance, let serveFile add Accept-Range header
0225 fixed: DLNA test failing due to sending refId when not requested
0226 fixed: DLNA protocol info parsing error due to trailing semi-colon
0227 fixed: ring buffer stream to only return prematurely on abort and not on eos
0228 added: .wavm for mono wave extension
0229 changed: stopped sending byebye first to stop confusing slow devices
0230 fixed: Windows Media Player 12 not being happy with wav protocol info
0231 fixed: deadlock when receiving a description response for an invalid device while doing house keeping on subscribers. Now uses only one lock.
0232 fixed: better handling of stopping UPnP immediately after starting it
0233 changed: don't bind hard for SSDP multicast listen
0234 changed: updated Server and UA HTTP header (does not include OS anymore)
0235 added: basic support for WMP11
0236 changed: lowered SSDP response time to 5 secs
0237 changed: no more accept-ranges on any file requests, only on serveFile
0238 fixed: DLNA profile didl attribute was not being written for albumArtURI
0239 added: lpcm working for both XBox 360 and PS3
0240 changed: asks for searchable and childCount didl attributes by default
0241 removed: extra logging when not finding didl attribute
0242 fixed: mimetype parsing
0243 added: support for audio/L16;44100...
0244 fixed: fails if can't get file length only if a range request is passed
0245 changed: returns 404 instead of 500 when file is missing
0246 added: didl support for multiple album arts
0247 improved: string serialization, reduces too many string copies during didl creation
0248 added: audio/L16 support to XBox
0249 fixed: dlna serialization, added audio/L16
0250 
0251 Platinum 0.6.4
0252 --------------
0253 fixed: android compilation
0254 fixed: crash when running FileMediaServerTest on a directory with Chinese characters
0255 fixed: now use real Computer Name or User Name next to Server name
0256 
0257 Platinum 0.6.3
0258 --------------
0259 fixed: 2005 and 2010 solutions
0260 added: 2010 Platinum.Managed strong-name signed assembly
0261 
0262 Platinum 0.6.2
0263 --------------
0264 improved: DLNA flags masks
0265 fixed: Managed wrapper now keeping the pointer to the native member when passed so we can modify members in place. But we have to be careful to not pass local stack objects that will be deallocated which will cause crashes
0266 added: Managed now can pass uuid to MediaServer
0267 fixed: Managed not running on x64 machines
0268 fixed: new XBox Dashboard support
0269 fixed: UTF-8 was not properly handled through Managed Interface
0270 changed: put back default byebye first otherwise xbox doesn't detect when same device arrives after a crash
0271 added: device signature detection (PS3, XBOX, WMP)
0272 changed: addIcon is now public
0273 changed: forced to bind on every interface on port 1900 otherwise we don't receive SSDP search requests sometimes
0274 changed: MediaConnect only advertise ContentDirectory with Search action to WMP and XBox now
0275 fixed: returning all resource metadata when receiving only "res" filter
0276 added: support for @duration metadata filter
0277 changed: don't prevent serializing resource in didl if it's invalid
0278 changed: allow ProtocolInfo without PN
0279 added: DeviceIcon .Net mapping
0280 added: now can pass byte[] through .Net interface when responding to HTTP request (thumbnails)
0281 changed: Managed don't throw exception when stopping UPnP if it hasn't been started
0282 added: signature to Platinum.Managed
0283 fixed: crash when stopping an already disposed Managed instance (?)
0284 changed: now exports to Targets root subfolder
0285 fixed: missing log4net bundle
0286 
0287 Platinum 0.6.1
0288 --------------
0289 fixed: potential vulnerability when receiving SSDP messages or SOAP requests
0290 added: now compiles for Android NDK
0291 added: PLT_UPnP::IsRunning method
0292 changed: moved LastChange variable parsing into controlpoint
0293 changed: pass sort criteria entire string to delegate instead of parsed split list
0294 added: Cocoa layer for Mac
0295 added: Managed C++ layer for .Net
0296 added: new Managed MediaServer Test
0297 changed: improved MimeType and ProtocolInfo support
0298 changed: being more strict on MX to pass UPnP certification
0299 fixed: dc:title is required
0300 added: serialization and parsing of upnp:searchClass and upnp:objectClass name attribute
0301 changed: searchable attribute is false by default
0302 changed: Can now pass uuid to Managed MediaServer
0303 changed: Can change lease time from Managed MediaServer
0304 changed: Don't adverstise bye-bye SSDP messages by default on startup anymore to pass DLNA compliance
0305 
0306 Platinum 0.6.0
0307 --------------
0308 added: Documentation Platinum-HTML.zip in Platinum/Docs/Doxygen subfolder
0309 added: fix for detecting requests with url decoded paths (for example from Windows Media Player)
0310 changed: PLT_SsdpListenTask timeout to 1 sec only for iPhone
0311 changed: Removed some PLT_HttpHelper functions that were problematic
0312 changed: No need to force contentlength to 0, task should set it automatically if no entity
0313 fixed: Socket leak in PLT_UPnP
0314 changed: completely reworked HTTP response handling
0315 changed: osx default target is leopard now
0316 fixed: osx i386 build issue
0317 changed: revamped & simplified media server delegate
0318 changed: updated latest Neptune and now use new time/date support
0319 changed: PLT_HttpRequestHandler not a template anymore
0320 updated: normalized use of timeout
0321 added: basic HTTP caching headers support to HTTP file server
0322 added: made PLT_MediaCache generic, MediaServer now sorts by date and caches directory listing
0323 added: axTls to build system for ssl connections (HTTPS)
0324 added: MicroMediaController can be specified a folder directly using the "cd" command
0325 fixed: Renderer Channel environment variable attribute name (must be "channel")
0326 fixed: crashes when enumerating net interfaces on iPhone
0327 added: more log to MicroMediaController
0328 added: XmlHelper Serialize function
0329 
0330 
0331 Platinum 0.5.4
0332 --------------
0333 updated: msdev 2008 output
0334 fixed: incorrect local filepath extraction from url
0335 fixed: xcode project
0336 fixed: gcc warnings
0337 added: CocoaTouchBrowser sample iphone app started (not finished)
0338 added: Platinum xcode proj for iphone into arm-apple-darwin
0339 changed: handling of http requests when device host server is being used for serving content from derived device (like FileMediaServer Device)
0340 added: more log to MicroMediaController
0341 added: XmlHelper Serialize function
0342 fixed: WMP wouldn't return resource url if the browse filter didn't contain 'res'
0343 changed: be more relaxed about invalid  or missing resource uri and invalid protocolinfo, maybe the filter didn't request it after all
0344 
0345 Platinum 0.5.3
0346 --------------
0347 fixed: MediaCrawler app updated
0348 fixed: crash on exit while Browse action is requested
0349 fixed: bug in ChunkDecoder
0350 changed: better support for HTTP 100 continue
0351 changed: DLNA compliance (handle 1xx responses, shutdown sockets better)
0352 added: code to check if ip or interface is within same network
0353 changed: increased stream copy buffer to 16k for better streaming performance
0354 fixed: crash on exit due to logging in PosixThread wait function
0355 changed: FileMediaServer now serves files at the root url and not "/content" anymore so that it can serve "/crossdomain.xml" url for Flash if needed.
0356 changed: putting back GetVolumeDBRange & GetVolumeDB since it seems to be required by DLNA
0357 fixed: GetTransportAction not returning current protocol info
0358 changed: remove argument from argument list if value was not allowed
0359 changed: now returns NPT_ERROR_INVALID_PARAMETERS when validating state variable value if failed
0360 changed: don't fail if action contains unknown argument names, simply return NPT_ERROR_NO_SUCH_NAME
0361 changed: now uses individual scpd cpp files for each scpd
0362 updated: now uses a batch file and header tool to convert scpd xml file to cpp for inclusion
0363 added: PlayTo functionality by supporting advertising and responding on localhost
0364 changed: more DLNA compliance
0365 added: time class
0366 
0367 Platinum 0.5.2
0368 --------------
0369 fixed: recursive posix deadlock when notifying new devices are ready and delegates try to subscribe to services
0370 added: seek command to MicroMediaController
0371 changed: lowered log levels
0372 changed: removed SsdpProxy from Build.scons
0373 updated: scpd for MediaRenderer now has GetVolumeDB, SetVolumeDB, GetVolumeDBRange
0374 changed: now attach root device to action instead of device (in case of embedded) since embedded devices are not referenced, they're children of main root device
0375 changed: better embedded devices support in ctrl point, now keeps only root devices in list
0376 fixed: crashes when device goes away while an action is performed on service or waiting for responses
0377 fixed: scpd retrieval for embedded devices with same service (Sonos with onnectionManager service for example in both DMS and DMR)
0378 fixed: action arguments are serialized in same order as defined as scpd (to make WMP12 happy)
0379 changed: Search sockets are bound on port > 1024 and different than 1900 according to DLNA
0380 added: When looking for device, can return root if device is known to be embedded
0381 fixed: root device reference is attached to task that need to access service or action in response to prevent release if device goes away while waiting
0382 fixed: don't check if subscriber sid start with 'uuid:' even though it's the spec
0383 added: more WMP12 support parsing xml responses (uses UPnPError instead of upnp_error and any namespace)
0384 fixed: random crashes
0385 fixed: PS3 DLNA errors
0386 changed: Advertise on localhost now and respond properly if search was receiving on localhost
0387 changed: Now can ignore all local UUIDs when multiple devices are attached
0388 fixed: MediaController made AVTransport optional and RenderingControl required service
0389 added: MediaController added SetVolume, GetVolume
0390 fixed: MediaController better handling of invalid timestamp or duration
0391 added: MediaRenderer GetVolumeDBRange and SetVolumeDB
0392 added: Didl support for bitspersample, nraudiochannels and samplefrequency
0393 changed: Didl adding .000 for frame in timestamp otherwise 360 won't play tracks
0394 improved: Didl parsing if invalid xml node found
0395 fixed: Filter criteria was missing in Search function prototype
0396 added: Can now decide if protocol info should contain DLNA info or not
0397 added: MediaBrowser added search
0398 fixed: When receiving didl for item, don't try to validate resource url protocol and ip as it could be rtsp:// or FQDN addresses
0399 fixed: SetVariableValue can pass csvs and each value will be indepedently validated
0400 added: Can now set extra attributes to a state variables (for Volume that has a Channel)
0401 changed: The state variable now serializes itself into an xml node instead of the service doing it. That way we can add extra parameters if needed
0402 added: helper GetIPAddresses can be passed a flag to add localhost to list if needed
0403 fixed: vs2005 projects with new Neptune path
0404 changed: simplified AVTransport scpd for renderer
0405 added: Renderer now supports Windows 7 WMP PlayTo feature!
0406 added: now can choose to add xml header or not (some implementations like WMP needs it)
0407 fixed: bug where it would never keep a connection alive on the server side
0408 added: more DLNA improvements
0409 removed: Neptune from ThirdParty, now same level as Platinum in PlatinumKit
0410 fixed: 360 can play mov files now
0411 added: mimetype by extension
0412 fixed: WMP can see Platinum again (needs <?xml ?>
0413 changed: change mediatype after calling ServeFile instead of before, or it may get changed
0414 
0415 Platinum 0.5.1
0416 --------------
0417 removed: DMS 1.5 for 360, no need for it
0418 changed: more DLNA support, fixed deadlock when removing devices
0419 changed: moved back apps to Platinum proj on OSX
0420 fixed: ctrl point now renews subscribers in time
0421 added: mute/unmute function to micromediacontroller to pass DLNA tests
0422 fixed: fixed subscriber renewal, now wait 10 secs before doing first house keeping of old devices not renewed
0423 fixed: scons 1.2 support
0424 fixed: osx config for scons 1.2
0425 added: MediaServer Device Discovery & Control DLNA compliance
0426 changed: uses built-in Platinum icons instead of file based
0427 fixed: iPhone build
0428 fixed: xbox 360 was not playing divx anymore
0429 
0430 Platinum 0.5.0
0431 --------------
0432 added: better dlna support for embedded devices
0433 changed: now wait a bit before fetching device description after receiving first ssdp message just in case we have more ssdp byebye messages we have not received yet which could cause the device to be removed after we've just added it
0434 added: full support for HTTP/1.1 and persistent connections in compliance with dlna 1.5
0435 fixed: fixed rare deadlock
0436 changed: now uses http 1.1 for DLNA compliance
0437 changed: queues scpd requests instead of using one thread per scpd
0438 added: near DLNA compliance for device host and control point
0439 fixed: http server returning more than requested during HTTP byte range requests (fixed iphone playback)
0440 change: now DMS 1.5 for 360
0441 fixed: browse issue with syncbrowser
0442 added: SetDelegate functions to PLT_MediaBrowser and PLT_MediaController in case it is subclassed and this cannot be passed to ctor
0443 
0444 Platinum 0.4.9
0445 --------------
0446 added: PlatinumiPhone target to Platinum.xcodeproj
0447 changed: PlatinumApps.xcodeproj now depends on Platinum.xcodeproj
0448 changed: PLT_MediaBrowser and PLT_MediaController now asks delegate before subscribing to events to let a chance to decide if device is worth listening to events
0449 changed: renamed PLT_MediaBrowserListener to PLT_MediaBrowserDelegate and PLT_MediaControllerListener to PLT_MediaControllerDelegate
0450 changed: check for new event to notify every 100ms instead of 10ms, also reduce link list modifications to reduce allocatio/free
0451 added: can now specify custom user-agent and server http header
0452 fixed: missing didl resource if no protection attribute was set
0453 fixed: can now stop/restart devices without restarting entire upnp stack
0454 changed: honor Connection header from response if keep-alive is true
0455 fixed: more PS3 support
0456 added: now can specify initial port can be ignored if failed and try again with a random port
0457 added: support for resolution in didl, can now prevent certain files from being advertised in didl, better mimetype support in FileServer
0458 fixed: now aborts properly client socket tasks
0459 removed: null/null in array, uses NPT_ARRAY_SIZE instead
0460 removed: NPT_ERROR_INTERNAL result when closing a socket while still reading on it, now returns NPT_ERROR_EOS
0461 added: support for icons (MediaConnect sample for PS3)
0462 added: PLT_HttpRequestContext can hold a request and a context now
0463 changed: better dlna support, can now use request information to decide what to return (important to support xbox 360, ps3, etc..)
0464 fixed: XBox 360 not finding us anymore, don't hardcode same guid! and fix mp4 playback on 360
0465 
0466 Platinum 0.4.8
0467 --------------
0468 fixed: XBox 360 and PS3 video playback
0469 added: removed some FATAL logs, can pass path to MediaConnect cmd line
0470 changed: changes to http server to support path without a query
0471 added: frame streamer example (mjpeg live stream advertised via upnp)
0472 changed: verified that content-length was indeed set on the entity before writing it, to avoid writing 0 when the length wasn't known (multipart)
0473 
0474 Platinum 0.4.7
0475 --------------
0476 fixed: listener being called multiple times with same device when appearing or disapearing
0477 added: dc:date support in didl
0478 added: better dlna support for videos
0479 changed: don't cache empty results in media cache
0480 fixed: WMP 11 crash when unsubscribing
0481 fixed: crash after 15 min due to not cleaning up properly interface list before reusing it
0482 changed: allow for services with no actions (although not upnp compliant)
0483 fixed: lock media cache before access
0484 changed: switching to native eol
0485 changed: fixed xcode proj, add delay to get description/scpd for Rhapsody to be happy
0486 changed: uses HTTP 1.1 in server with keep-alive. Greatly improves performance
0487 updated: license is now GPLv2 or later
0488 changed: do not search, announce or respond on localhost anymore
0489 
0490 Platinum 0.4.6
0491 --------------
0492 changed: upnp server now uses same port for upnp and serving files (helps with firewall)
0493 added: upnp support for embedded devices
0494 changed: upnp device description can now be modified according to request (user agent header)
0495 fixed: better upnp eventing mechanism, can now pause eventing to set multiple state variables, and send update in a batch
0496 changed: detect xbox and change description to pretend to be WMP
0497 fixed: artist role attribute is not supposed to be in upnp namespace
0498 updated: Neptune to support Unicode filenames
0499 added: Sonos support! XBMC server can now be browsed by Sonos Desktop Controller and music can be played on multiple Sonos ZonePlayers all synchronously and streamed from XBMC. Sweeeeeeeeeeet!
0500 fixed: deadlock on subscribe
0501 fixed: crach on subscription cancellation
0502 fixed: first event notification was sent to early and could be missed
0503 fixed: UPnP Renderer Intel Validity Tool tests
0504 
0505 Platinum 0.4.5
0506 --------------
0507 fixed: better embedded devices support
0508 fixed: Unicode support on Win32 platforms
0509 changed: now can pause eventing to set multiple state variables and resume eventing then
0510 
0511 Platinum 0.4.3
0512 --------------
0513 fixed: vs2008 solution
0514 fixed: mp3 invalid protocol
0515 
0516 Platinum 0.4.2
0517 --------------
0518 changed: don't set an entity on request if nobody is expected
0519 added: support for PS3 (basic dlna support)
0520 changed: MediaCrawler now derives from MediaConnect so that it's seen by XBox 360
0521 fixed: now passes the proper reachable interface when subscribing to events by keeping track of which interface was used when retrieving a device description
0522 fixed: gcc 4.2.3 errors (Ubuntu 8.04)
0523 changed: removed all NPT_Integer references
0524 fixed: didl parsing of resource with size > 2GB
0525 changed: didl resource duration is now unsigned
0526 added: support for SCons 1.0 (0.98.5)
0527 fixed: support for files > 4GB
0528 fixed: SIGPIPE errors on both Ubuntu and MacOSX
0529 fixed: potential memory leaks reported by valgrind
0530 changed: updated to use Neptune 1.0.1
0531 
0532 Platinum 0.4.1
0533 --------------
0534 fixed: crash caused by typo when fixing gcc warnings, was adding the wrong http handler
0535 changed: don't use an outside lock for requests in PltHttpClientTask which can cause delay and hang out when queuing requests in a row like when updating state (Thanks Andy B.!)
0536 added: copyright 2008
0537 
0538 Platinum 0.4.0
0539 --------------
0540 added: new PlatinumApps project for XCode
0541 added: apple iphone target
0542 fixed: fixing scons build, automatic stripping in release mode now
0543 fixed: potential crash due to trying to use connector of a client that didn't exist anymore
0544 added: support for Vs2008
0545 fixed: leopard support with both 10.4 and 10.5 sdk installed
0546 fixed: gcc 4 warnings
0547 changed: renamed fopen_s to fopen_wrapper
0548 fixed: Fix for unbuffered file streams on OSX (was callign setvbuf after seek)
0549 added: Support for SO_REUSEPORT on OSX
0550 added: Set NOSIGPIPE flag
0551 
0552 Platinum 0.3.9
0553 --------------
0554 added: Xbox360 support!
0555 fixed: warning appearing with gcc4 on macosx
0556 fixed: leaks when getting ip addresses
0557 added: new ring buffer stream and tests
0558 changed: Browse to pass a flag instead of UPnP browse text flag
0559 changed: Browse prototype
0560 changed: switched to static crt
0561 added: can now pass http port to FileMediaServerTest
0562 added: more mediatypes (avi, divx) support
0563 fixed: content-type not being set properly if file extension was uppercase
0564 fixed: MediaCrawler prototypes due to changes to Browse signature
0565 added: MediaConnect project
0566 added: arm-unknown-linux config (iphone support)
0567 added: RingBufferStream class
0568 fixed: NPT_Xml now writes the xml header
0569 changed: listen task now passed to Start/Stop function to have ctrlpoint, device remove themselves from it
0570 changed: working on better subscriber support in ctrlpoints (switching to references)
0571 removed: embedded devices support until we have a better idea on how to support it (is it DLNA compliant anyway?)
0572 added: a PresentationUrl element to description only if present otherwise Intel UPnP DeviceSpy is confused!
0573 added: avi & divx extension support to content-type
0574 added: custom http chunk decoder even though we don't support HTTP 1.1 yet
0575 fixed: server not reading socket info properly when receiving datagrams which would cause a device to respond to M-SEARCH requests on the wrong udp port (and Xbox360s to not discover our server!)
0576 fixed: Http Server handlers seem to trigger only on the path of a url NOT including the query which means that SCPD Urls with queries currently don't work! For now we switch to not use queries in SCPD urls
0577 changed: now announce and respond to search requests on loopback adapter
0578 fixed: Task manager thread was not sleeping enough! now 100ms
0579 added: ContentDirectorywSearchSCPD.xml SCPD (Xbox 360 needs Search !)
0580 updated: latest Neptune
0581 added: jpg content-type
0582 fixed: now don't allow to start if specified port for server is in use already
0583 added: more mimetype to class support
0584 added: can now pass a port for the file server of PLT_FileMediaServer
0585 changed: Device host and ctrl points now get their own task manager so that when they stop, all tasks stop so there's no need to keep track of running tasks
0586 changed: ctrl point now issue a search at least on localhost if no interfaces were found
0587 fixed: UPnP devices and ctrl points are now freed when stopped (removed)
0588 fixed: UPnP devices and ctrl points can be restarted (reused) now
0589 added: better support for icons
0590 fixed: EventSubscribers now have their own task and try to reuse the socket (Connection Keep-Alive) when possible
0591 changed: Service uses NPT_List instead of NPT_Arrays to improve manipulation of state vars
0592 added: Can now use Connection keep-alive with HTTP/1.0 clients
0593 added: State variables can now be moderated. Service has a task that monitors if vars have changed and send updates if it's time (according to moderation)
0594 added: Service now supports the "LastChange" state variable
0595 changed: PLT_SsdpInitMulticastIterator joins group on any interface
0596 fixed: possible lock when stopping all tasks (lock, notify tasks to stop, unlock then wait for list to be empty)
0597 added: some dlna support
0598 changed: moved File Media server from PLT_MediaServer to PLT_FileMediaServer
0599 added: placeholder for Search in PLT_MediaServer
0600 changed: removed MediaRenderer and MediaServer projects, now all is in Platinum project
0601 changed: moved MediaConnect source in Source/Devices
0602 fixed: build to not include ../ in path.. hopefully fixing gcc 3.3.5 errors
0603 added: MediaServer now sets variable rate
0604 fixed: bug where subscribers were deleted all the time after first notification
0605 fixed: eventing of moderated state variable changes
0606 fixed: temporary hack for XBMC support of Xbox360, we urlencoded the ? to that the 360 doesn't strip out the query and then the query ends being parsed as part of the path
0607 changed: didl now forces an empty upnp:artist
0608 added: Search action to look for ContainerID instead of ObjectId in xml since that's what the xbox 360 sends!
0609 changed: refactored to use NPT_HttpRequestContext instead of NPT_SocketInfo
0610 added: new macosx target (universal)
0611 fixed: use of NPT_CONFIG_THREAD_STACK_SIZE for xbox
0612 added: can now reset the connector of a NPT_HttpClient
0613 changed: Updates missing headers only if they're really missing (user_agent, connection, ..)
0614 changed: Updated NPT_MessageQueue to reflect new blocking way
0615 changed: Neptune Http server now uses reuse_address when binding
0616 fixed: single quote in urls
0617 changed: now can abort NPT_HttpServer
0618 fixed: If a request is forwarded, don't try to send the body if there's no content length...
0619 fixed: UPnP Renderer now receives moderated events properly
0620 fixed: Platinum scons Build, added MediaConnect target
0621 improved: HttpClientSocketTask now uses keep-alive so if the server is 1.1 or 1.0 with Connection: Keep-alive, it reuses the socket, useful for eventing
0622 added: Split up MediaConnect support and services into separate class, now CUPnPServer derives from PLT_MediaConnect.
0623 refactored: move httpserver in start/stop so that it actually stops and cleans up when the device is stopped
0624 fixed: now starts a thread only when there's a need to event state variable changes to subscribers instead of in the ctor. Useful since the class is also used by ctrl points and they don't need to notify.
0625 fixed: check that the body stream of a request is rewindable before trying to send a request on a keep-alive socket. If it fails, we wouldn't be able to resend it, so instead, we close the socket and reopen a new one.
0626 added: new downloader class
0627 fixed: potential deadlock when stopping upnp while devices are running
0628 changed: made file server port public in PLT_FileMediaServer so that we can update/query it without recreating a new class (no need for setter/getter)
0629 
0630 Platinum 0.3.8
0631 ---------------
0632 
0633 fixed: crash in MicroMediaController (ctrlpoint really) when devices go away and a new one reappear. The control point was not removing subscribers from its list for the removed device.
0634 added: Visual Studio 2005 project files
0635 changed: switched to using new Neptune Logging system
0636 changed: PLT_DeviceHost now appends the ip address to friendly name if asked
0637 
0638 Platinum 0.3.7
0639 ---------------
0640 changed: removed projects in the works from solution
0641 changed: dont restrict an interface to have the MULTICAST flag to send multicast data. If it's not multicast, it just won't send it. Cygwin doesn't report MULTICAST flag properly on interfaces that are multicast so that's why.
0642 fixed: clear SyncMediaBrowser cache for a device when it disappears
0643 changed: put back interface matching in proxy using netmask
0644 fixed: linux build
0645 fixed: workaround Windows Media Player bug that replaces back slashes to forward slashes in a url query !
0646 fixed: duplicate headers in crawler response
0647 changed: fileserver now defaults to serving root "/" with all children so that crawler can use /foo.wma
0648 changed: made ProcessFileRequest overridable for Crawler
0649 changed: Mega update:
0650  - revamped to use http handlers from Neptune
0651  - extensive switch to using address instead of pointers for NPT_HttpRequest & NPT_HttpResponse
0652  - using eventhandlers now in devicehost (static for desc & scpds + dynamic for control/event) and controlpoint (event notifications)
0653  - fixed host advertising twice byebye on exit
0654  - Moved DeviceHost and Ctrlpoint Start/Stop into protected. It's PLT_UPnP now that starts and stop a device (via Add/Remove..)
0655  - Created templated PLT_HttpRequestHandler
0656 fixed: 10 secs to get a M-SEARCH response is fine
0657 fixed: make it possible to pass an address to send the response back from a search, this is necessary when the udp.connect didn't actually find out which local interface to use
0658 fixed: now advertises on all interfaces even in broadcast
0659 fixed: setting MX to 1 in proxy, setting extra header to make sure we don't loop more
0660 changed: new ssdp proxy using broadcast instead of unicast, no need to keep track of unicasters anymore
0661 changed: when using broadcast mode, try to use interface broadcast address instead of 255.255.255.255
0662 changed: made presentation url public (so it can be overridden from the outside)
0663 hacked: device icons
0664 changed: better advertising in broadcast mode (less verbose)
0665 fixed: crash when a device disappears while trying to unsubscribe
0666 fixed: subscribers being added twice
0667 fixed: no need to set random seed in task, must be done in threads instead (using thread id)
0668 changed: added a media cache to cache data responses from servers to speed up
0669 fixed: better event support (fixed a couple of bugs), unsubscribe on device remove, still need to implement subscription renewal
0670 changed: improved NPT_Directory to read size & type with 1 call
0671 fixed: assuming forward unix style delimiters in resource urls was wrong, we want to keep whatever we're passed, it may matter
0672 changed: now can specify to keep file extension in item title
0673 changed: can now put a list of UUIDs to ignore in a ctrl point
0674 changed: now sends a search on localhost if no valid interfaces were found
0675 changed: now supports broadcast announcements for devices (mainly used by XBOX)
0676 fixed: changed callbackurls list to be NPT_List<NPT_String> instead of NPT_List<NPT_String*> for event subscribers to fix a weird crash
0677 fixed: SsdpListenTask takes a true UdpSocket if broadcast mode set
0678 changed: adding support of NPT_StringFinder for NPT_List<NPT_String> containers
0679 changed: using a HttpUrl for base urls instead of string
0680 changed: StreamHandler interface, now passing socket info to ModifyResource
0681 
0682 Platinum 0.3.6
0683 ---------------
0684 - fixed list of devices not being cleared when ctrl point is stopped
0685 - fixed setting bad content length when serving a file with a byte-range request causing
0686 - filemediaserver now exposes one resource per network interface and put the proper one first (one the browse request was received on)
0687 - start listening for ssdp when upnp starts and stops when it stops
0688 - reversing back adding the Search method to ContentDirectory service
0689 - rewrite of action processing after finding a major flaw due to parallel processing of multiple calls to the same action. Now each invocation of an action gets its own sets of arguments (in and out).
0690 
0691 Platinum 0.3.5
0692 ---------------
0693 Fixes/Changes:
0694 - updated directory structure so that everything falls under Build/Targets (even scons based stuff)
0695 - Fixing ip address being 0.0.0.0 in media resources under cygwin in some cases
0696 - switching to using HTTP/1.0 for http responses
0697 - scons build output to Targets top level folder now
0698 - fixed bug where files with no extensions were not advertised (linux)
0699 - now strips the executables in Targets folder only in release build
0700 - Fixed cygwin bug where devices wouldn't be detected when started after a Control Point. Was advertising on disconnected interfaces.
0701 - Fixed logging wrong ip address, now defaults to 127.0.0.1 if no valid one found
0702 - fixed bug in server socket task
0703 - added back HttpClientTests to solution
0704 - fixed bug in client socket task
0705 - switch to using NPT_StringOutputStream instead of PLT_OutputStringStream
0706 - improved PLT_Downloader
0707 - started working on a SQLite abstraction layer for a better Media Server (work in progress)
0708 
0709 Platinum 0.3.2
0710 ---------------
0711 Fixes/Changes:
0712 - Tasks and TaskManager rewrote. No more housekeeping thread to cleanup tasks. Tasks are automatically cleaned up when done.
0713 - Stopping a ControlPoint will also stop the SSDP search tasks.
0714 - HttpServer can limit the number of connections (threads) it can handle at once.
0715 - Didl processing rewrote. Didl objects are more C++ oriented now.
0716 - Some progress in regard to DLNA validation. HTTP Server is 1.0 only (connections are closed immediately once all data has been sent. No more keep-alive support).
0717 - Started working on Ozone (Sqlite3 abstraction layer)
0718 
0719 Platinum 0.3.1
0720 ---------------
0721 Fixes/Changes:
0722 - Fixed LightSample Test
0723 - Fixed MediaRenderer Test
0724 - Removed old source and project files to avoid confusion
0725 
0726 Platinum 0.3.00
0727 ---------------
0728 Fixes/Changes:
0729 - Added MacOSX support.
0730 - Fixed socket abortion problem on Linux (using a pipe).
0731 - Complete rewrite to use threads instead of interrupt driven round-robin. The benefit is that throughput is now greatly improved (for streaming especially).
0732 - Addded a new App: MediaCrawler
0733 - Split up AV MediaServer code. Now the FileMediaServer is one implementation of the AV MediaServer. More to follow.
0734 - Added README, CHANGELOG, LICENSE files
0735 
0736 Known issues:
0737 - AV MediaServer Search not implemented yet.
0738 - Http server does not use a thread pool. This can be a problem with hungry ControlPoints like the Intel Tools AV MediaController.
0739 
0740 Platinum 0.2.00
0741 ---------------
0742 Fixes/Changes:
0743 - Added support for Linux, Xbox, cygwin platforms (using Scons http://scons.org)
0744 - Now using timeouts on sockets. Fixed search not being repeatly sent.
0745 - Moved Neptune under ThirdParty folder
0746 
0747 Known issues:
0748 - Aborting on some platforms (linux/xbox) is not immediate. Sockets cannot be easily aborted by simply calling closesocket.
0749 
0750 Platinum 0.1.00
0751 ---------------
0752 Initial Release