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