2009-01-05 Ross Burton * libgupnp/gena-protocol.h: * libgupnp/gupnp-service-proxy.c: Don't assume subscription timeout is > 30s. Instead choose a random timeout value that is between 1 and half the timeout value given by service (thanks Zeeshan Ali) 2008-12-08 Ross Burton * libgupnp/gupnp-device-info.c: Don't look for closest icon if there are no icons. Fixes the crash in case of empty iconList nodes in device descriptions. (thanks Zeeshan Ali) 2008-11-29 Jorn Baayen * libgupnp/gupnp-device.c (gupnp_device_get_device), (gupnp_device_get_service), (gupnp_device_set_property), (gupnp_device_dispose): * libgupnp/gupnp-service.c (gupnp_service_set_property), (gupnp_service_dispose): Reference the root device weakly to avoid reference loops when subclassing RootDevice. Based on patch from Zeeshan Ali. 2008-11-28 Jorn Baayen * libgupnp/gupnp-control-point.c (got_description_url): * libgupnp/gupnp-root-device.c (download_and_parse): * libgupnp/gupnp-service-info.c (gupnp_service_info_get_introspection), (got_scpd_url): * libgupnp/gupnp-service-proxy.c (check_action_response), (server_handler): * libgupnp/gupnp-service.c (control_server_handler): Use xmlRecoverMemory instead of xmlParseMemory when parsing xml. Hopefully we now manage better with the masses of über-broken xml out there. (Thanks Jussi for the suggestion) 2008-11-24 Ross Burton * libgupnp/gupnp-resource-factory.c: Use the correct value to key_equal_func argument of g_hash_table_new_full (thanks Zeeshan Ali) 2008-11-18 Jorn Baayen * AUTHORS: New e-mail address. * configure.ac: Depend on glib 2.18. * libgupnp/gupnp-error-private.h: * libgupnp/gupnp-error.c (_gupnp_error_set_server_error), (_gupnp_error_new_server_error): * libgupnp/gupnp-service-info.c (gupnp_service_info_get_introspection), (got_scpd_url): * libgupnp/gupnp-service-proxy.c (check_action_response): Use g_set_error_literal(). (instead of our own home-cooked set_error_literal()) Mark private error functions as G_GNUC_INTERNAL. 2008-11-18 Jorn Baayen * libgupnp/gupnp-service-proxy.c (subscribe_got_response): * libgupnp/gupnp-service.c (notify_got_response), (notify_subscriber): Use g_error_new_literal() instead of passing literal error messages through "%s". Specify character set (UTF-8) in NOTIFY messages. 2008-11-18 Ross Burton * tests/test-proxy.c: * tests/test-server.c: * tests/test-browsing.c: * tests/test-introspection.c: * examples/light-client.c: * examples/light-server.c: Don't user g_error but g_printerr (Sven Neumann). 2008-11-17 Jussi Kukkonen * configure.ac: * NEWS: Version 0.12.4. 2008-11-14 Ross Burton * libgupnp/gupnp-service-proxy.c: Set the Content Type header correctly (#1257, Zeeshan Ali Khattak) 2008-11-14 Ross Burton * libgupnp/gupnp-service.c: * libgupnp/gupnp-service-proxy.c: * tests/test-proxy.c: * tests/test-server.c: * tests/test-browsing.c: * tests/test-introspection.c: * examples/light-client.c: * examples/light-server.c: Don't pass arbitrary strings to printf() for security (thanks Sven Neumann) 2008-11-14 Ross Burton * libgupnp/gupnp-context.c: Handle fscanf failing in get_default_host_ip (thanks Sven Neumann). 2008-11-14 Ross Burton * libgupnp/gupnp-service-proxy.c: Fix typos (thanks Sven Neumann) 2008-11-12 Jussi Kukkonen * doc/glossary.xml: * doc/overview.xml: Add DIDL-Lite and SSDP to glossary, mention upnp and dlna specs. 2008-11-11 Jussi Kukkonen * README.release: Add release instructions for GUPnP components 2008-11-06 Zeeshan Ali (Khattak) * AUTHORS: * libgupnp/gupnp-resource-factory-private.h: * libgupnp/gupnp-resource-factory.c: * libgupnp/gupnp-resource-factory.h: * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-service-introspection.h: * libgupnp/gupnp-types-private.h: * libgupnp/gupnp-types.c: * libgupnp/gupnp-types.h: * tests/test-introspection.c: Replace my non-working "@gstreamer.net" email with "@gnome.org" one. 2008-10-27 Ross Burton * configure.ac: * NEWS: Version 0.12.3. 2008-10-27 Ross Burton * Makefile.am: Enable gtk-doc in distcheck. 2008-10-27 Ross Burton * libgupnp/http-headers.c: Don't use NULL return values from g_get_application_name() (#1176). 2008-10-22 Jussi Kukkonen * tools/gupnp-binding-tool: Use inline functions. Fix generated code indent, remove trailing whitespace. 2008-10-20 Jussi Kukkonen * tools/gupnp-binding-tool: Don't include specific glib/gupnp headers, use gupnp.h. 2008-10-17 Jussi Kukkonen * tools/gupnp-binding-tool: Add serverside binding generation. * doc/client-tutorial.xml * doc/server-tutorial.xml * doc/gupnp-binding-tool.xml Update documentation for new binding generation. 2008-10-17 Jussi Kukkonen * tools/gupnp-binding-tool: gupnp-binding-tool improvements - add support for all upnp types - add "--prefix" option - prettify binding tool output - make var and function names lower_case, not CamelCase - generate state variable notification bindings This change makes gupnp-binding-tool output incompatible with old one 2008-10-14 Zeeshan Ali (Khattak) * libgupnp/gupnp-service-introspection.c: Add some missing checks for NULL. 2008-09-27 Jorn Baayen * doc/gupnp-sections.txt: * libgupnp/gupnp-context-private.h: * libgupnp/gupnp-context.c (gupnp_context_get_property), (gupnp_context_class_init), (gupnp_context_get_session): * libgupnp/gupnp-context.h: * libgupnp/gupnp-control-point.c (gupnp_control_point_dispose), (load_description): * libgupnp/gupnp-root-device.c (download_and_parse): * libgupnp/gupnp-service-info.c (gupnp_service_info_dispose), (gupnp_service_info_get_introspection), (gupnp_service_info_get_introspection_async): * libgupnp/gupnp-service-proxy.c (gupnp_service_proxy_dispose), (finish_action_msg), (gupnp_service_proxy_cancel_action), (subscription_expire), (subscribe), (unsubscribe): * libgupnp/gupnp-service.c (subscription_data_free), (notify_got_response), (notify_subscriber): Make gupnp_context_get_session() public. 2008-09-27 Jorn Baayen * configure.ac: Increase version number. 2008-09-27 Jorn Baayen * libgupnp/gupnp-context.c (gupnp_context_init), (gupnp_context_constructor), (gupnp_context_class_init), (gupnp_context_get_server), (host_path_handler): * libgupnp/gupnp-resource-factory.c (gupnp_resource_factory_create_device_proxy), (gupnp_resource_factory_create_device), (gupnp_resource_factory_create_service): * libgupnp/gupnp-root-device.c (gupnp_root_device_constructor): * libgupnp/gupnp-service-proxy.c (gupnp_service_proxy_dispose), (emit_notifications), (server_handler), (subscription_expire), (subscribe_got_response), (unsubscribe): * libgupnp/gupnp-service.c (subscription_data_free), (subscribe), (resubscribe): Use the specified GMainContext for timeouts and plug several leaks. Based on a patch from Olivier Crete . 2008-08-30 Jorn Baayen * examples/Makefile.am: Link examples to gthread. 2008-08-27 Jorn Baayen * configure.ac: * tests/Makefile.am: Link tests to gthread. 2008-07-14 Jorn Baayen * configure.ac: Bump version to 0.12.1.99. * libgupnp/gupnp-service.c (finalize_action), (gupnp_service_action_return), (gupnp_service_action_return_error), (control_server_handler), (subscription_server_handler), (gupnp_service_class_init): Support returning actions outside of the 'action-invoked' signal handler. Based on a patch from Zeeshan Ali Khattak . 2008-06-30 Jorn Baayen * NEWS: * configure.ac: Release 0.12.1. 2008-06-20 Jorn Baayen * libgupnp/http-headers.c (http_request_get_range): Support Range headers without upper bound. 2008-06-20 Jorn Baayen * libgupnp/gupnp-context.c (host_path_handler): Remove superfluous free. 2008-06-16 Jorn Baayen * NEWS: * configure.ac: Release 0.12. 2008-06-11 Ross Burton * doc/server-tutorial.xml: Add *correct* comments about when query-variable is called. 2008-06-11 Ross Burton * doc/server-tutorial.xml: Add comments about when query-variable is called. 2008-06-10 Ross Burton * doc/glossary.xml: Add links to the cross references. 2008-06-10 Ross Burton * doc/client-tutorial.xml: * doc/server-tutorial.xml: Lots of proof reading. 2008-06-10 Ross Burton * examples/BinaryLight1.xml: Use better friendly and model names. 2008-06-10 Ross Burton * doc/glossary.xml: Add UDN, fix acronyms. 2008-06-10 Ross Burton * doc/Makefile.am: * doc/gupnp-docs.sgml: * doc/gupnp-docs.xml: Rename the main document to .xml, this isn't 1980 any more. 2008-06-10 Ross Burton * doc/gupnp-binding-tool.xml: * doc/gupnp-docs.sgml: Don't use entities to get the version, use XInclude. 2008-06-10 Ross Burton * doc/gupnp-binding-tool.xml: * doc/gupnp-docs.sgml: * doc/Makefile.am: Add a refentry for gupnp-binding-tool and add it to the documentation. 2008-06-10 Ross Burton * doc/glossary.xml: Add SCPD and remove baseform attributes. 2008-06-10 Ross Burton * doc/gupnp-docs.sgml: Merge the overview into the tutorial part. 2008-06-10 Ross Burton * doc/gupnp-docs.sgml: Add an index. 2008-06-10 Ross Burton * doc/server-tutorial.xml: Document service description files. 2008-06-09 Ross Burton * doc/server-tutorial.xml: Talk about the UPnP lightbulb instead of a made up interface, so we can refer to the example code. 2008-06-09 Ross Burton * examples/: * Makefile.am: * configure.ac: Add some basic but non-trivial examples. 2008-06-09 Ross Burton * doc/gupnp-docs.sgml: * doc/glossary.xml: * doc/overview.xml: * doc/Makefile.am: Add a basic glossary, and reference the Intel UPnP book. 2008-06-06 Ross Burton * doc/gupnp-docs.sgml: * doc/overview.xml: * doc/Makefile.am: Split the (currently very small) overview out into a separate file. 2008-06-06 Ross Burton * doc/gupnp-docs.sgml: Add more section IDs. 2008-06-05 Zeeshan Ali Khattak * gupnp/libgupnp/gupnp-service.c: Refactor connect_names_to_signal_handlers() function. 2008-06-05 Jorn Baayen * libgupnp/gupnp-marshal.list: * libgupnp/gupnp-service.c (gupnp_service_class_init): Revert back to G_TYPE_POINTER for GValue argument type. We do not want the GValue to be boxed as it is passed as an outward argument. * libgupnp/gupnp-service.c (notify_got_response): Cancel subscription on Precondition Failed. 2008-06-04 Jorn Baayen * libgupnp/gupnp-root-device.c (download_and_parse), (gupnp_root_device_constructor): Split out description document downloading code into a separate function. 2008-06-04 Jorn Baayen * libgupnp/gupnp-context.c (construct_local_path), (append_locale), (redirect_to_folder), (host_path_handler), (host_path_data_new), (host_path_data_free), (gupnp_context_host_path): * libgupnp/gupnp-control-point.c (load_description): * libgupnp/gupnp-root-device.c (gupnp_root_device_constructor): * libgupnp/gupnp-service-info.c (gupnp_service_info_get_introspection), (gupnp_service_info_get_introspection_async): * libgupnp/gupnp-service-proxy.c (begin_action_msg): * libgupnp/gupnp-service.c (gupnp_service_action_get_locales): * libgupnp/http-headers.c (http_language_from_locale), (locale_from_http_language), (http_request_get_range), (http_request_set_accept_language), (http_request_get_accept_locales), (http_request_set_user_agent), (http_response_set_content_locale), (http_response_set_content_type), (http_response_set_content_range): * libgupnp/http-headers.h: Cleanup of hosting logic. Reprefix message_ functions with http_request_/http_response_. 2008-06-03 Jorn Baayen * libgupnp/gupnp-context.c (host_path_handler): Don't free path_to_open too early. 2008-06-03 Jorn Baayen * doc/server-tutorial.xml: Update for new gupnp_root_device_new() API. 2008-06-03 Jorn Baayen * libgupnp/Makefile.am: Bump ABI version. * libgupnp/gupnp-context.c (host_path_handler), (gupnp_context_host_path): Fix a couple of bugs regarding Accept-Language handling. * libgupnp/gupnp-control-point.c (load_description): * libgupnp/gupnp-service-proxy.c (begin_action_msg), (finish_action_msg), (check_action_response), (gupnp_service_proxy_cancel_action): * libgupnp/gupnp-service.c (gupnp_service_action_get_locales): * libgupnp/http-headers.c (message_get_range), (message_set_accept_language), (message_get_accept_locales): * libgupnp/http-headers.h: Add Accept-Language header to more messages. Some restructuring for clarity. * libgupnp/gupnp-root-device.c (gupnp_root_device_finalize), (gupnp_root_device_init), (gupnp_root_device_constructor), (gupnp_root_device_new): * libgupnp/gupnp-root-device.h: Remove xmlDoc argument from gupnp_root_device_new() for simplicity. xmlDocs can still be passed to gupnp_root_device_new_full(). * tests/test-server.c (main): Update for API change. 2008-05-30 Ross Burton * doc/server-tutorial.xml: Add more content. 2008-05-29 Ross Burton * libgupnp/gupnp-service.c: Add gtk-doc markup to signal names so they are links. 2008-05-29 Ross Burton * doc/client-tutorial.xml: * doc/gupnp-docs.sgml: * doc/Makefile.am: Run the client tutorial through gtk-doc for symbol linking and fix some tags. 2008-05-29 Ross Burton * doc/server-tutorial.xml: * doc/gupnp-docs.sgml: * doc/Makefile.am: Add rather poor first draft of the server guide. 2008-05-28 Ross Burton * doc/gupnp-sections.txt: Add a symbol which somehow decided it wanted to be documented. 2008-05-27 Ross Burton * libgupnp/gupnp-service.c: Fix doc typo. 2008-05-27 Ross Burton * libgupnp/gupnp-control-point.c: * libgupnp/gupnp-root-device.c: * libgupnp/gupnp-context.c: * libgupnp/gupnp-service-info.c: * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-service.c: * libgupnp/http-headers.c: * libgupnp/gupnp-service-proxy.c: * libgupnp/gupnp-device-info.c: * libgupnp/gupnp-resource-factory.c: Documentation cleanups. 2008-05-23 Ross Burton * tools/gupnp-binding-tool: Add async wrappers too. 2008-05-23 Jorn Baayen * libgupnp/gupnp-marshal.list: * libgupnp/gupnp-service.c (gupnp_service_action_get_type), (gupnp_service_class_init): * libgupnp/gupnp-service.h: Use G_TYPE_VALUE and GUPNP_TYPE_SERVICE_ACTION in signal declarations where appropriate. 2008-05-22 Ross Burton * tools/gupnp-binding-tool: * tools/Makefile.am: * configure.ac: * Makefile.am: Initial commit of gupnp-binding-tool, to generate convenience C wrappers for GUPnP service definitions. 2008-05-22 Jorn Baayen * configure.ac: Version to 0.10.1.99. 2008-05-22 Ross Burton * libgupnp/gupnp-device-info.[ch]: * doc/gupnp-sections.txt: Add gupnp_device_info_get_presentation_url(). 2008-05-21 Ross Burton * libgupnp/gupnp-context.c: When guessing the host's IP address, try and use the default route's interface. 2008-05-19 Jorn Baayen * NEWS: * configure.ac: * libgupnp/Makefile.am: Bump soname, and release 0.10.1. 2008-05-16 Ross Burton * doc/Makefile.am: * doc/device-description.rnc: * doc/service-description.rnc: * doc/gupnp-docs.sgml: Add RELAX NG schemas for the device and service description files, and add them to the reference manual. 2008-05-16 Ross Burton * libgupnp/gupnp-types.c: Last missing bit of documentation, now 100% API coverage. 2008-05-15 Ross Burton * libgupnp/gupnp-context.c: * libgupnp/gupnp-service-info.c: * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-types.c: * libgupnp/gupnp-service-proxy.c: * libgupnp/gupnp-device-info.c: * libgupnp/gupnp-error.c: * libgupnp/gupnp-resource-factory.c: * libgupnp/gupnp-error.h: More documentation work, almost at 100% now. 2008-05-13 Jorn Baayen * NEWS: * configure.ac: GUPnP 0.10. 2008-05-12 Ross Burton * libgupnp/gupnp-types.h: Document the special types. 2008-05-12 Ross Burton * libgupnp/gupnp-service-info.c: Complete API documentation. 2008-05-12 Ross Burton * doc/gupnp-docs.sgml: * doc/Makefile.am: * docs/client-tutorial.xml: Add *very basic* first draft at a tutorial. 2008-05-12 Ross Burton * libgupnp/gupnp-control-point.c: Document the search target, and enforce target != NULL. 2008-05-11 Zeeshan Ali Khattak * libgupnp/gupnp-service.c: Emit a warning on failure to retreive requested action argument. 2008-05-11 Zeeshan Ali Khattak * libgupnp/gupnp-context.c: GContentType is not guaranteed to be a mime-type. 2008-05-10 Jorn Baayen * libgupnp/gupnp-service-proxy.c (server_handler): Do not error out if proxy->priv->sid is NIL as the subscription response may not have been processed yet. 2008-05-09 Jorn Baayen * libgupnp/gupnp-service-proxy.c (emit_notifications), (server_handler): Cosmetic: fit into 80 columns. 2008-05-09 Ross Burton * libgupnp/gupnp-service-proxy.c: Emit notifications in an idle handler, because some stacks block when sending the NOTIFY message. 2008-05-07 Ross Burton * libgupnp/gupnp-service.c: Fix typo, remove unused variable. 2008-05-07 Jorn Baayen * libgupnp/gupnp-service.c (subscription_data_free), (gupnp_service_dispose), (notify_got_response), (notify_subscriber): Store pending notifications on the SubscriptionData structure. 2008-05-07 Ross Burton * libgupnp/gvalue-util.c: Fix type marshalling for doubles. 2008-05-07 Ross Burton * libgupnp/gupnp-control-point.c: * libgupnp/gupnp-control-point.h: * libgupnp/gupnp-root-device.c: * libgupnp/gupnp-context.c: * libgupnp/gupnp-root-device.h: * libgupnp/gupnp-context.h: * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service.c: * libgupnp/gupnp-service-introspection.h: * libgupnp/gupnp-device.h: * libgupnp/gupnp-service.h: * libgupnp/gupnp-service-proxy.c: * libgupnp/gupnp-device-proxy.h: * libgupnp/gupnp-service-proxy.h: * libgupnp/gupnp-resource-factory.c: * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-resource-factory.h: More documentation tweaks, up to 76% now. * doc/Makefile.am: * doc/gupnp-sections.txt: Remove unused sections and ignore private headers. 2008-05-06 Ross Burton * libgupnp/gupnp-context.c: Add the ability to set GUPNP_DEBUG to spew the HTTP messages to the console. 2008-05-06 Ross Burton * libgupnp/gupnp-control-point.c: * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-service-proxy.c: * libgupnp/gupnp-error.c: * libgupnp/gupnp-service-proxy.h: Fix small problems which upset gtk-doc. 2008-05-06 Ross Burton * doc/gupnp-sections.txt: Add missing symbols. 2008-05-06 Ross Burton * doc/gupnp.types: Add a .types file so the objects get introspected. 2008-05-06 Ross Burton * configure.ac: Add AC_SYS_LARGEFILE to use 64-bit offsets, thus both fixing 32-bit compiles and making the world a better place. 2008-05-06 Ross Burton * libgupnp/gupnp-context.c: Fix some compile warnings. 2008-04-29 Jorn Baayen * libgupnp/gupnp-context.c (hosting_server_handler): * libgupnp/http-headers.c (range_get): * libgupnp/http-headers.h: Support HTTP Range header. 2008-04-29 Jorn Baayen * libgupnp/gupnp-context.c (hosting_server_handler): Use GMappedFile. 2008-04-15 Jorn Baayen * configure.ac: * libgupnp/Makefile.am: * libgupnp/gupnp-context.c (hosting_server_handler): Use GContentType. * libgupnp/xdgmime: Removed. 2008-04-15 Jorn Baayen * libgupnp/gupnp-service-proxy.c (subscribe_got_response): * libgupnp/gupnp-service.c (subscribe), (resubscribe): Use g_timeout_add_seconds(). We can because soup 2.4 depends on glib 2.16. 2008-04-15 Jorn Baayen * libgupnp/gupnp-context.c (hosting_server_handler), (path_data_new), (path_data_free), (gupnp_context_host_path): Correct HTTP GET logic. 2008-04-15 Jorn Baayen * libgupnp/gupnp-service.c (notify_subscriber): Set request, not response. 2008-04-15 Jorn Baayen Zeeshan Ali Khattak * configure.ac: * gupnp-1.0-uninstalled.pc.in: * gupnp-1.0.pc.in: * libgupnp/gupnp-context.c (gupnp_context_init), (default_server_handler), (gupnp_context_get_server), (hosting_server_handler), (gupnp_context_host_path): * libgupnp/gupnp-control-point.c (gupnp_control_point_dispose), (process_service_list), (process_device_list), (description_loaded), (got_description_url), (load_description): * libgupnp/gupnp-device-info.c (gupnp_device_info_class_init), (gupnp_device_info_get_icon_url): * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy.c (gupnp_device_proxy_get_device), (gupnp_device_proxy_get_service): * libgupnp/gupnp-device.c (gupnp_device_get_device), (gupnp_device_get_service): * libgupnp/gupnp-resource-factory-private.h: * libgupnp/gupnp-resource-factory.c (gupnp_resource_factory_create_device_proxy), (gupnp_resource_factory_create_service_proxy), (gupnp_resource_factory_create_device), (gupnp_resource_factory_create_service): * libgupnp/gupnp-root-device.c (gupnp_root_device_constructor): * libgupnp/gupnp-service-info.c (gupnp_service_info_dispose), (gupnp_service_info_class_init), (gupnp_service_info_get_introspection), (got_scpd_url), (gupnp_service_info_get_introspection_async): * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-proxy.c (gupnp_service_proxy_dispose), (begin_action_msg), (action_got_response), (finish_action_msg), (write_in_parameter), (gupnp_service_proxy_begin_action_valist), (gupnp_service_proxy_begin_action_hash), (check_action_response), (read_out_parameter), (gupnp_service_proxy_end_action_valist), (gupnp_service_proxy_end_action_hash), (gupnp_service_proxy_cancel_action), (server_handler), (subscription_expire), (subscribe_got_response), (subscribe), (unsubscribe): * libgupnp/gupnp-service.c (control_server_handler), (subscription_response), (subscription_server_handler), (gupnp_service_constructor), (gupnp_service_dispose), (notify_got_response), (notify_subscriber): * libgupnp/http-headers.c (accept_language_get_locales), (message_set_user_agent): * libgupnp/xml-util.c (xml_util_get_child_element_content_uri), (xml_util_get_child_element_content_url): * libgupnp/xml-util.h: Port to libsoup 2.4. 2008-03-19 Jorn Baayen * libgupnp/gupnp-context.c (gupnp_context_init): Use SOUP_SESSION_IDLE_TIMEOUT when available. 2008-03-18 Jorn Baayen * configure.ac: * libgupnp/gupnp-service.c (gupnp_service_signals_autoconnect): Release gupnp 0.8. 2008-03-06 Jorn Baayen * libgupnp/gupnp-device-info.c (resource_type_match): Interpret strncmp() return value correctly. 2008-03-05 Jorn Baayen * doc/gupnp-sections.txt: * libgupnp/gupnp-context-private.h: * libgupnp/gupnp-context.c (gupnp_context_get_property), (gupnp_context_class_init), (gupnp_context_get_server), (make_server_url), (gupnp_context_get_port), (gupnp_context_host_path), (gupnp_context_unhost_path): * libgupnp/gupnp-context.h: * libgupnp/gupnp-service-proxy.c (subscribe_got_response), (subscribe), (unsubscribe): * libgupnp/gupnp-service.c (gupnp_service_constructor): Make gupnp_context_get_server() public. Fixes #832. 2008-03-05 Jorn Baayen * libgupnp/gupnp-device-info.c (resource_type_match), (gupnp_device_info_get_device), (gupnp_device_info_get_service): Return subresources with version greater or equal than requested version. * libgupnp/gupnp-root-device.c (add_resource_with_earlier_versions), (fill_resource_group): Announce all earlier versions of resources in addition to the implemented version. 2008-03-04 Jorn Baayen * libgupnp/gupnp-device-info.c (gupnp_device_info_get_device), (gupnp_device_info_get_service): Allow version-agnostic subresource retrieval. 2008-02-29 Zeeshan Ali Khattak * libgupnp/gupnp-service-proxy.c: Critical bug fix: Don't free the action in check_action_response(). 2008-02-26 Jorn Baayen * autogen.sh: Don't call glib-gettextize. 2008-02-23 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_action_free), (gupnp_service_proxy_send_action_valist), (gupnp_service_proxy_send_action_hash), (begin_action_msg), (action_got_response), (gupnp_service_proxy_begin_action_valist), (gupnp_service_proxy_begin_action_hash), (gupnp_service_proxy_end_action_valist), (gupnp_service_proxy_end_action_hash), (gupnp_service_proxy_cancel_action): * libgupnp/gupnp-service-proxy.h: Remove error argument from begin_action() method series. The error is now saved and returned by end_action(). 2008-02-23 Jorn Baayen * libgupnp/http-headers.c: (message_set_user_agent): Add DLNA string. 2008-02-09 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/accept-language.c: * libgupnp/accept-language.h: * libgupnp/gupnp-context.c: * libgupnp/gupnp-control-point.c: (load_description): * libgupnp/gupnp-service-info.c: (gupnp_service_info_get_introspection), (gupnp_service_info_get_introspection_async): * libgupnp/gupnp-service-proxy.c: (begin_action_msg), (gupnp_service_proxy_get_subscribed): * libgupnp/gupnp-service.c: * libgupnp/http-headers.c: * libgupnp/http-headers.h: Include "User-Agent" header in requests. 2008-01-31 Jorn Baayen * libgupnp/gupnp-context-private.h: * libgupnp/gupnp-device-info-private.h: * libgupnp/gupnp-resource-factory-private.h: * libgupnp/gupnp-resource-factory.c: (gupnp_resource_factory_unregister_resource_proxy_type): * libgupnp/gupnp-service-introspection-private.h: Add missing G_GNUC_INTERNALs. 2008-01-23 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_set_property): * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property): Fix compiler warning. Patch by Zeeshan Ali Khattak. 2008-01-17 Ross Burton * libgupnp/gvalue-util.c: Fix build on 64-bit systems (#711, thanks Bastien Nocera). 2008-01-17 Zeeshan Ali Khattak * libgupnp/accept-language.h: * libgupnp/gvalue-util.h: * libgupnp/xml-util.h: Use 'G_GNUC_INTERNAL' macro to declare functions we don't want to export. 2008-01-17 Jorn Baayen * libgupnp/gupnp-types.c: * libgupnp/gupnp-types.h: * libgupnp/gvalue-util.c: (gvalue_util_set_value_from_xml_node): Remove ugly and luckily unnecessary XML_NODE and XML_CHUNK types. 2008-01-14 Jorn Baayen * Makefile.am: * configure.ac: Remove unused translation framework. 2008-01-14 Jorn Baayen * libgupnp/gupnp-types.c: Recursively copy xmlNodes. 2008-01-14 Jorn Baayen * doc/Makefile.am: Update list of ignored header files. 2008-01-07 Jorn Baayen * libgupnp/gvalue-util.c: (gvalue_util_set_value_from_string): Use atol() for 64-bit int parsing. 2007-12-16 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (read_out_parameter), (server_handler): * libgupnp/gupnp-service.c: (gupnp_service_action_get_value): * libgupnp/gvalue-util.c: (gvalue_util_set_value_from_string), (gvalue_util_set_value_from_xml_node), (gvalue_util_value_append_to_xml_string): * libgupnp/gvalue-util.h: * libgupnp/xml-util.c: (xml_util_get_element): * libgupnp/xml-util.h: Allow use of GUPNP_TYPE_XML_CHUNK and GUPNP_TYPE_XML_NODE to be mixed through text->xmlDoc->text conversion. (Which is obviously slow, so use of XML_CHUNK on the sending side, and XML_NODE on the receiving side is recommended.) 2007-12-16 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (read_out_parameter): * libgupnp/gupnp-types.c: (gupnp_xml_node_get_type), (gupnp_string_type_to_string), (gupnp_string_to_string_type), (register_string_type), (gupnp_xml_chunk_get_type), (gupnp_bin_base64_get_type), (gupnp_bin_hex_get_type), (gupnp_date_get_type), (gupnp_date_time_get_type): * libgupnp/gupnp-types.h: Add an xmlNode data type (can now retrieve arguments as xmlNodes: avoids excess parsing), and clean up types code. 2007-12-16 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action), (begin_action_msg), (action_got_response), (finish_action_msg), (gupnp_service_proxy_begin_action_valist), (gupnp_service_proxy_begin_action_hash), (gupnp_service_proxy_end_action), (check_action_response): * libgupnp/gupnp-service.c: (gupnp_service_action_set_value), (gupnp_service_action_return_error), (control_server_handler), (subscribe): * libgupnp/gupnp-types.c: (gupnp_string_to_type): * libgupnp/gupnp-types.h: * libgupnp/gvalue-util.c: (gvalue_util_set_value_from_string), (gvalue_util_value_append_to_xml_string): * libgupnp/gvalue-util.h: * libgupnp/xml-util.c: (xml_doc_wrapper_new), (xml_util_get_attribute_contents): * libgupnp/xml-util.h: Don't use libxml for message construction. This allows us to embed chunks of xml into messages without them being escaped. 2007-11-26 Jorn Baayen * libgupnp/gupnp-context.c: Rewrite local IP detection to be IPv6-friendly. 2007-11-23 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (begin_action_msg): * libgupnp/gupnp-service.c: (gupnp_service_action_set_value), (gupnp_service_action_return_error), (control_server_handler), (notify_subscriber), (create_property_set): Tweak XML generation to match spec to the letter. 2007-11-22 Jorn Baayen * libgupnp/gupnp-service.c: (control_server_handler), (create_property_set): Set embedded xml docs to not be standalone. 2007-11-22 Jorn Baayen * configure.ac: Set XDG_PREFIX. Avoids symbol collisions with other xdgmimes. Patch by Ross Burton . 2007-11-22 Jorn Baayen * libgupnp/gupnp-service.c: (strip_camel_case): Don't split up 2 letter abbreviations when coverting from camel case. 2007-11-21 Jorn Baayen * libgupnp/xml-util.c: (xml_util_node_get_content_value): * libgupnp/xml-util.h: Remove unused function. 2007-10-23 Jorn Baayen * libgupnp/gena-protocol.h: * libgupnp/gupnp-context.c: (gupnp_context_class_init): * libgupnp/gupnp-service.c: (subscription_timeout), (parse_and_limit_timeout), (subscribe), (resubscribe): Add an upper bound of 7 days to subscription timeouts. 2007-10-09 Zeeshan Ali Jorn Baayen * libgupnp/gupnp-resource-factory.c: * libgupnp/gupnp-resource-factory.h: - Instead of asking the users to subclass resource factory, provide an API to register GTypes for UPnP types. - Make the resource and resource proxy creation functions private. * libgupnp/gupnp-resource-factory-private.h: Make the resource and resource proxy creation functions private. * libgupnp/gupnp-control-point.c: * libgupnp/gupnp-root-device.c: - "resource-factory" prop can only be set at contruction time. - Make _new() a wrapper around_new_full(). - Provide getter for resource factory. - Fix a copy&paste mistake. * libgupnp/gupnp-control-point.h: * libgupnp/gupnp-root-device.h: Provide getter for resource factory. * libgupnp/gupnp-device.c: * libgupnp/gupnp-device.h: * libgupnp/gupnp-device-info.c: * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy.c: Move "resource-factory" prop to DeviceInfo class. * libgupnp/Makefile.am: Add gupnp-resource-factory-private.h to build. * doc/gupnp-sections.txt: - Add resource factory getter functions. - Add type assignment (un)registeration functions. - Remove the now private resource and resource proxy creation functions. 2007-10-09 Jorn Baayen * libgupnp/gena-protocol.h: * libgupnp/gupnp-service-proxy.c: (subscribe_got_response): Resubscribe 30 seconds before subscription times out. 2007-10-03 Jorn Baayen * configure.ac: Version number to 0.6.99. 2007-10-03 Zeeshan Ali * libgupnp/gupnp-control-point.c: * libgupnp/gupnp-root-device.c: Fix the type check for factory argument of _new_full() functions. 2007-10-01 Zeeshan Ali * libgupnp/gupnp-resource-factory.c: Add doc comments. * doc/gupnp-docs.sgml: * doc/gupnp-sections.txt: Add ResourceFactory API to the docs. 2007-10-01 Zeeshan Ali * doc/gupnp-sections.txt: Add _control_point_new_full() and _root_device_new_full() to docs. 2007-10-01 Zeeshan Ali * libgupnp/gupnp-resource-factory.c: * libgupnp/gupnp-resource-factory.h: * libgupnp/gupnp-control-point.c: * libgupnp/gupnp-root-device.c: Replace _resource_factory_new() with _resource_factory_get_default() that only returns a pointer to a singleton object rather than creating a new one. 2007-10-01 Zeeshan Ali * libgupnp/gupnp-resource-factory.c: * libgupnp/gupnp-resource-factory.h: * libgupnp/gupnp-control-point.c: * libgupnp/gupnp-control-point.h: * libgupnp/gupnp-device-proxy.c: * libgupnp/gupnp-device-proxy.h: * libgupnp/gupnp-device.c: * libgupnp/gupnp-root-device.c: * libgupnp/gupnp-root-device.h: * libgupnp/gupnp-service-proxy.c: * libgupnp/gupnp-service.c: New resource factory that handles the creation of device, service and device and service proxy objects. * libgupnp/gupnp-service-private.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-device-proxy-private.h: Remove unneeded headers. * libgupnp/Makefile.am: - Add the new resource factory to build. - Remove unneeded headers from build. 2007-09-23 Jorn Baayen * NEWS: * configure.ac: Release 0.6. 2007-09-21 Jorn Baayen * libgupnp/gupnp-control-point.c: (load_description): * libgupnp/gupnp-service-info.c: (got_scpd_url), (gupnp_service_info_get_introspection_async): Add pending GET requests to pending_gets before sending off the message, and remove them again before emitting any callbacks on response. 2007-09-21 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose), (subscription_expire), (subscribe_got_response), (subscribe): * libgupnp/gupnp-service.c: (gupnp_service_dispose), (gupnp_service_notify_valist), (notify_got_response), (notify_subscriber): Cancel all pending SoupMessages on dispose. 2007-09-20 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (unsubscribe): subscription_timeout_id can be 0 (when we are resubscribing). 2007-09-20 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-control-point.c: (gupnp_control_point_dispose), (gupnp_control_point_finalize), (process_service_list), (process_device_list), (description_loaded), (got_description_url), (load_description), (gupnp_control_point_resource_unavailable): * libgupnp/gupnp-device-info-private.h: * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property), (gupnp_device_info_dispose), (gupnp_device_info_class_init), (gupnp_device_info_get_service): * libgupnp/gupnp-device-proxy-private.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_device), (gupnp_device_proxy_get_service), (_gupnp_device_proxy_new): * libgupnp/gupnp-service-info.c: (gupnp_service_info_set_property), (gupnp_service_info_dispose), (gupnp_service_info_class_init): * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (_gupnp_service_proxy_new): * libgupnp/xml-util.c: * libgupnp/xml-util.h: Introduce a wrapper object for xmlDocs. Each proxy takes a reference on the xmlDoc wrapper it uses. 2007-09-18 Zeeshan Ali * libgupnp/gvalue-util.c: Accept 'yes' and 'no' as boolean values as well. 2007-09-17 Jorn Baayen * libgupnp/gupnp-service-proxy.c: Specify the reason why notify subscription failed in subscription-lost signal. 2007-09-17 Zeeshan Ali * libgupnp/gupnp-service.c: Specify the reason why notify failed in the error to the notify-failed signal. 2007-09-10 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_dispose): * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose), (finish_action_msg), (server_handler), (subscribe), (unsubscribe), (gupnp_service_proxy_set_subscribed): Always unsubscribe proxy on dispose, but do it asynchronously. This means that the unsubscribe request may not always be sent on exit. The UPnP spec, however, does not require this to happen. This should fix bug #500 as well. 2007-09-09 Jorn Baayen * libgupnp/gupnp-service-info.h: * tests/test-introspection.c: (print_state_variables): Mark GUPnPServiceIntrospectionCallback() 'error' argument as 'const'. 2007-09-09 Zeeshan Ali Jorn Baayen * tests/test-introspection.c: Correct the order of arguments in a function call, and free GError in sync code only. 2007-09-08 Zeeshan Ali * libgupnp/gupnp-device-info.c: gupnp_device_info_get_model_number() returns model number and not model description. 2007-09-08 Jorn Baayen * libgupnp/gupnp-control-point.c: (got_description_url): * libgupnp/gupnp-service-info.c: (got_scpd_url): * libgupnp/gupnp-service-proxy.c: (action_got_response), (finish_action_msg): Do not double-free message structures on cancel. 2007-09-05 Zeeshan Ali * libgupnp/gupnp-device-info.c: BUGFIX: Don't use a NULL pointer. 2007-09-03 Zeeshan Ali * libgupnp/accept-language.c: * libgupnp/accept-language.h: * libgupnp/gena-protocol.h: * libgupnp/gupnp-context-private.h: * libgupnp/gupnp-context.c: * libgupnp/gupnp-context.h: * libgupnp/gupnp-control-point.c: * libgupnp/gupnp-control-point.h: * libgupnp/gupnp-device-info.c: * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy-private.h: * libgupnp/gupnp-device-proxy.c: * libgupnp/gupnp-device-proxy.h: * libgupnp/gupnp-device.c: * libgupnp/gupnp-device.h: * libgupnp/gupnp-error-private.h: * libgupnp/gupnp-error.c: * libgupnp/gupnp-error.h: * libgupnp/gupnp-root-device.c: * libgupnp/gupnp-root-device.h: * libgupnp/gupnp-service-info.c: * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-introspection-private.h: * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-service-introspection.h: * libgupnp/gupnp-service-private.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: * libgupnp/gupnp-service-proxy.h: * libgupnp/gupnp-service.h: * libgupnp/gupnp-types-private.h: * libgupnp/gupnp-types.c: * libgupnp/gupnp-types.h: * libgupnp/gupnp.h: * libgupnp/gvalue-util.c: * libgupnp/gvalue-util.h: * libgupnp/xml-util.c: * libgupnp/xml-util.h: * tests/test-browsing.c: * tests/test-introspection.c: * tests/test-proxy.c: Remove trailing whitespace. * tests/test-server.c: - Remove trailing whitespace. - Provide "UpdateID" in response of Browse action. 2007-09-03 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: Use gvalue_util_set_value_from_string() for conversion from G_TYPE_STRING. 2007-08-30 Jorn Baayen * libgupnp/gupnp-device-info.c: (gupnp_device_info_list_device_types), (gupnp_device_info_get_device), (gupnp_device_info_list_service_types): Clarify subresource retrieval in docs. 2007-08-29 Jorn Baayen * configure.in: Bump version number to 0.4.99. 2007-08-28 Zeeshan Ali Jorn Baayen * libgupnp/gupnp-service.c: * libgupnp/gupnp-service.h: * doc/gupnp-sections.txt: - Add gupnp_service_signals_autoconnect () - Remove whitespace * configure.ac: * gupnp-1.0.pc.in: * gupnp-1.0-uninstalled.pc.in: Require gmodule. * tests/Makefile.am: * tests/test-server.c: Modify the test server to utilize gupnp_service_signals_autoconnect(). 2007-08-26 Jorn Baayen * gupnp-1.0-uninstalled.pc.in: * gupnp-1.0.pc.in: Move libsoup back into Requires.. we do include it in public headers after all. 2007-08-23 Jorn Baayen * gupnp-1.0-uninstalled.pc.in: * gupnp-1.0.pc.in: Move libsoup and uuid reqs to Requires.Private, and remove the shared-mime-data req altogether. 2007-08-21 Jorn Baayen * NEWS: * configure.ac: Release gupnp 0.4. 2007-08-14 Jorn Baayen * libgupnp/gupnp-device.c: (gupnp_device_class_init): Remove unused function. 2007-08-13 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-service-proxy.c: (write_in_parameter), (read_out_parameter): * libgupnp/gupnp-service.c: (gupnp_service_action_set_value), (create_property_set): * libgupnp/gvalue-util.c: * libgupnp/gvalue-util.h: * libgupnp/xml-util.c: (xml_util_node_get_content_value): Add more elaborate GValue conversion functions and use them instead of old conversion code. 2007-08-09 Jorn Baayen * configure.ac: Bump version number to 0.3.99. * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_send_action_valist), (gupnp_service_proxy_send_action_hash), (gupnp_service_proxy_begin_action), (begin_action_msg), (action_got_response), (finish_action_msg), (write_in_parameter), (gupnp_service_proxy_begin_action_valist), (gupnp_service_proxy_begin_action_hash), (gupnp_service_proxy_end_action), (check_action_response), (read_out_parameter), (gupnp_service_proxy_end_action_valist): * libgupnp/gupnp-service-proxy.h: Added a new series of functions for sending actions taking hash tables of parameter name-GValue pairs. * libgupnp/gupnp-service.c: (gupnp_service_action_get_valist), (gupnp_service_action_set_valist), (gupnp_service_notify_valist): Don't fail completely on GValue collection errors. * doc/gupnp-sections.txt: Added the new _hash() functions. 2007-08-08 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: (set_variable_type), (state_variable_search_func), (gupnp_service_introspection_get_state_variable), (action_search_func), (gupnp_service_introspection_get_action): * libgupnp/gupnp-service-introspection.h: - Add methods to reteive state variable and action by name. - Default value of 'step' in state variable info should be '1' for compatibility with GtkSpinButton API. 2007-08-07 Zeeshan Ali * Makefile.am: * configure.ac: * gupnp-1.0-uninstalled.pc.in: Enable the users to build/link against uninstalled gupnp. 2007-08-03 Jorn Baayen * libgupnp/gupnp-service.c: (gupnp_service_constructor): Only include evented state variables in the initial event message. 2007-08-02 Jorn Baayen * NEWS: * configure.ac: Release 0.3. 2007-08-01 Jorn Baayen * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_device): * libgupnp/gupnp-device.c: (gupnp_device_get_device): Allow embedded devices to have their own UDNs. 2007-07-27 Priit Laes * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist): Use G_VA_COPY to get things build on some weird architectures. 2007-07-26 Jorn Baayen * configure.ac: Bump version number to 0.2. 2007-07-26 Zeeshan Ali * libgupnp/gupnp-service.c: (new_action_response_node): A small fix to the last change from jorn to fix the build. 2007-07-26 Jorn Baayen * libgupnp/gupnp-control-point.c: (process_service_list), (process_device_list), (gupnp_control_point_resource_unavailable): * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property), (gupnp_device_info_get_property), (gupnp_device_info_finalize), (gupnp_device_info_class_init), (gupnp_device_info_get_url_base), (gupnp_device_info_get_udn), (gupnp_device_info_get_device_type), (gupnp_device_info_get_friendly_name), (gupnp_device_info_get_manufacturer), (gupnp_device_info_get_manufacturer_url), (gupnp_device_info_get_model_description), (gupnp_device_info_get_model_name), (gupnp_device_info_get_model_number), (gupnp_device_info_get_model_url), (gupnp_device_info_get_serial_number): * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_service): * libgupnp/gupnp-service-info.c: (gupnp_service_info_set_property), (gupnp_service_info_get_property), (gupnp_service_info_dispose), (gupnp_service_info_finalize), (gupnp_service_info_class_init), (gupnp_service_info_get_url_base), (gupnp_service_info_get_udn), (gupnp_service_info_get_service_type), (gupnp_service_info_get_id), (gupnp_service_info_get_scpd_url), (gupnp_service_info_get_control_url): * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist), (gupnp_service_proxy_get_subscribed), (_gupnp_service_proxy_new): * libgupnp/gupnp-service.c: (new_action_response_node): * tests/test-browsing.c: (device_proxy_available_cb): * tests/test-introspection.c: (service_proxy_unavailable_cb): Handle the case where no serviceType (or deviceType) is specified in the description document: - ControlPoint saves the discovered types into the proxies, so that unavailability can be detected even if the description document is bogus. - Service and ServiceProxy warn if serviceType is not specified. This has the side effect that the return value of _get_{device,service}_type() now returns a const. Also added additional checks. 2007-07-26 Zeeshan Ali * libgupnp/gupnp-device-info.c: * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy-private.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_device), (gupnp_device_proxy_get_service), (_gupnp_device_proxy_new): * libgupnp/gupnp-device.c: (gupnp_device_get_device), (gupnp_device_get_service), (_gupnp_device_new): * libgupnp/gupnp-service-info.c: * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-private.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (_gupnp_service_proxy_new): * libgupnp/gupnp-service.c: (_gupnp_service_new): Make it clear to the user that return value of gupnp_{device,service}_info_get_url_base() must not be freed o modified. 2007-07-26 Jorn Baayen * libgupnp/gupnp-service-proxy.h: * libgupnp/gupnp-service.h: Cosmetic changes. 2007-07-26 Jorn Baayen * doc/gupnp-sections.txt: * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-proxy.h: Document callback prototypes. * libgupnp/gupnp-service-info.c: (got_scpd_url), (gupnp_service_info_get_introspection_async): * tests/test-introspection.c: (print_state_variables): Switch the order of the 'error' and 'user-data' arguments in the async introspection retrieval callback, so that 'user-data' is now last for consistency. 2007-07-26 Jorn Baayen * gupnp-1.0.pc.in: List all dependencies. 2007-07-26 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: (gupnp_service_action_arg_info_free), (gupnp_service_action_info_free), (gupnp_service_introspection_finalize), (get_actions), (get_state_variables), (construct_introspection_info), (collect_action_names), (collect_variable_names), (gupnp_service_introspection_new), (gupnp_service_introspection_list_action_names), (gupnp_service_introspection_list_actions), (gupnp_service_introspection_list_state_variables), (gupnp_service_introspection_list_state_variable_names): Get rid of the hashtables since the function that needed them have been removed. 2007-07-25 Zeeshan Ali * libgupnp/gupnp-service-introspection.h: Fix struct docs for gtk-doc. 2007-07-25 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-service-introspection.h: Add docs for structs and only mention once the extremely dependency on the availability of SCPD. :) 2007-07-25 Jorn Baayen * libgupnp/gupnp-service-introspection.c: Added a comment warning people against using introspection in regular apps. 2007-07-25 Jorn Baayen A doc/gupnp-sections.txt: * libgupnp/gupnp-error.c: * libgupnp/gupnp-service-introspection.h: * libgupnp/gupnp-service.h: * libgupnp/gupnp-types.c: Doc polish. 2007-07-25 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-service-introspection.h: Remove unneeded functions. 2007-07-25 Jorn Baayen * README: Added text from website. 2007-07-25 Jorn Baayen * libgupnp/gupnp-device.c: (gupnp_device_get_device), (gupnp_device_get_service), (gupnp_device_get_property), (gupnp_device_dispose), (gupnp_device_init), (gupnp_device_class_init), (_gupnp_device_find_element_for_udn): * libgupnp/gupnp-root-device.c: (gupnp_root_device_new): * libgupnp/gupnp-service-private.h: * libgupnp/gupnp-service.c: (gupnp_service_action_return_error), (gupnp_service_constructor), (gupnp_service_set_property), (gupnp_service_get_property), (gupnp_service_dispose), (gupnp_service_finalize), (gupnp_service_class_init), (notify_got_response), (notify_subscriber), (create_property_set), (flush_notifications), (gupnp_service_notify_value), (gupnp_service_freeze_notify), (gupnp_service_thaw_notify), (_gupnp_service_new): Devices and Services reference their RootDevice. On RootDevice unavailability Service purges its subscriptions. * tests/test-server.c: (main): Unref content_dir. 2007-07-25 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_dispose): * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose), (subscribe_got_response), (gupnp_service_proxy_set_subscribed): Unsubscribe proxies automatically only at control point dispose. 2007-07-25 Jorn Baayen * libgupnp/gupnp-control-point.c: (load_description), (gupnp_control_point_resource_unavailable): Destroy proxy before destroying the associated xmlDoc. * libgupnp/gupnp-error.h: * libgupnp/gupnp-service-info.c: (gupnp_service_info_get_introspection), (gupnp_service_info_get_introspection_async): * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist), (subscription_expire), (subscribe), (unsubscribe): * libgupnp/gupnp-service.c: (notify_subscriber): Better invalid URL error handling. * tests/Makefile.am: R tests/test-client.c: A tests/test-browsing.c: (device_proxy_unavailable_cb): A tests/test-proxy.c: Split out test-client into test-browsing and test-proxy better illustrating how to use the API. 2007-07-25 Jorn Baayen * libgupnp/gupnp-service.c: (gupnp_service_init), (gupnp_service_finalize), (notify_got_response): Create & destroy notify queue. * libgupnp/gupnp-service.h: Added 'const' to constant signal arguments. * tests/test-client.c: (device_proxy_unavailable_cb), (service_proxy_available_cb): Connect to 'subscription-lost' signal. * tests/test-server.c: (browse_cb), (query_cb), (main): Connect to 'notify-failed' signal. Print action locales. Test gupnp_service_notify(). 2007-07-25 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (subscribe_got_response): Remove server handler on all subscription errors. 2007-07-25 Jorn Baayen * libgupnp/gupnp-marshal.list: * libgupnp/gupnp-service.c: (gupnp_service_class_init): Don't box the to-be-filled GValue. * tests/test-client.c: (notify_cb), (service_proxy_available_cb): * tests/test-server.c: (browse_cb), (main): Test event notification. 2007-07-25 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (server_handler): Remove debug spew. 2007-07-25 Jorn Baayen * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-types.c: Doc polish. 2007-07-24 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: (gupnp_service_state_variable_info_free), (gupnp_service_action_info_free), (gupnp_service_introspection_finalize), (set_string_value_limits), (get_action_arguments), (action_argument_list_free), (get_actions), (collect_hash_keys), (collect_action_arguments), (collect_actions), (collect_state_variables): * libgupnp/gupnp-service-introspection.h: * libgupnp/gupnp-service.c: (gupnp_service_constructor): * tests/test-introspection.c: (print_action_arguments), (print_actions), (print_state_variables): Use GList instead of GSList for compatibility with the rest of the library. 2007-07-24 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (server_handler): Don't allow g_main_context_iteration() to block. 2007-07-24 Jorn Baayen * configure.ac: Depend on gssdp 0.3. * libgupnp/gupnp-control-point.c: (gupnp_control_point_resource_unavailable): Don't depend on deleted list items in loop. 2007-07-24 Jorn Baayen * NEWS: Added news items for 0.2. 2007-07-23 Jorn Baayen * libgupnp/gupnp-control-point.c: (load_description): * libgupnp/gupnp-service-info.c: (gupnp_service_info_get_introspection), (gupnp_service_info_get_introspection_async): * libgupnp/gupnp-service-proxy.c: (subscription_expire), (subscribe), (unsubscribe): * libgupnp/gupnp-service.c: (notify_subscriber): Warn on invalid URL (don't crash!). 2007-07-23 Jorn Baayen * libgupnp/gupnp-marshal.list: * libgupnp/gupnp-service-proxy.c: (server_handler), (subscription_expire), (subscribe_got_response), (subscribe): * libgupnp/gupnp-service.c: (parse_timeout), (subscribe), (subscription_server_handler), (gupnp_service_constructor), (gupnp_service_finalize), (gupnp_service_class_init), (gupnp_service_notify), (gupnp_service_notify_valist), (notify_got_response), (notify_subscriber), (create_property_set), (flush_notifications), (gupnp_service_notify_value): * libgupnp/gupnp-service.h: Handle multiple callbacks URLs. Send initial event message. 2007-07-23 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: (construct_introspection_info), (collect_hash_keys), (gupnp_service_introspection_list_action_names), (gupnp_service_introspection_list_state_variable_names): * libgupnp/gupnp-service-introspection.h: - Add _list_state_variable_names() method. - a minor optimization. * tests/test-introspection.c: (service_proxy_available_cb): centralize the error handling. 2007-07-23 Jorn Baayen * libgupnp/gupnp-service-info.c: (gupnp_service_info_get_introspection), (got_scpd_url): * libgupnp/gupnp-service-introspection.c: (gupnp_service_introspection_set_property), (gupnp_service_introspection_finalize): Don't keep xmlDoc around longer than necessary. 2007-07-23 Zeeshan Ali Jorn Baayen * libgupnp/gupnp-error.c: * libgupnp/gupnp-error-private.h: * libgupnp/gupnp-service-proxy.c: Add & use server error utility functions. * libgupnp/gupnp-service-info.c: (gupnp_service_info_get_introspection), (scpd_loaded), (got_scpd_url), (gupnp_service_info_get_introspection_async): * libgupnp/gupnp-service-info.h: Report non-programmer errors using GError. * libgupnp/gupnp-service-introspection.c: (gupnp_service_introspection_set_property), (construct_introspection_info), (gupnp_service_introspection_new), (gupnp_service_introspection_get_state_variable): Fix some typos and conditions. * tests/test-introspection.c: (got_introspection), (service_proxy_available_cb): Update the test app to use the new GError-using API. 2007-07-11 Jorn Baayen * libgupnp/gupnp-error.h: * libgupnp/gupnp-service-proxy.c: (set_error_literal), (gupnp_service_proxy_end_action_valist): Propagate UPnPError codes. 2007-07-11 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist): Set error if no controlURL is defined. 2007-07-08 Jorn Baayen * libgupnp/gupnp-control-point.c: (got_description_url), (load_description): Fix description doc refcounting bugs. 2007-07-08 Jorn Baayen * libgupnp/gupnp-control-point.c: (description_loaded): * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property): * libgupnp/gupnp-service-info.c: (gupnp_service_info_set_property): Each info object stores its own copy of the URLBase SoupUri. 2007-07-08 Jorn Baayen * libgupnp/gupnp-control-point.c: (process_service_list), (process_device_list), (load_description), (gupnp_control_point_resource_unavailable): * libgupnp/gupnp-service-proxy-private.h: Correct constructor argument order. Plug leak. Update ref count on cached description doc correctly. 2007-07-08 Zeeshan Ali Jorn Baayen * libgupnp/gupnp-service-info.c: (get_scpd_url_data_free), (gupnp_service_info_class_init), (gupnp_service_info_get_introspection), (scpd_ready), (got_scpd_url), (gupnp_service_info_get_introspection_async): * libgupnp/gupnp-service-info.h: Use a callback instead of a signal. * tests/test-introspection.c: (interrupt_signal_handler), (got_introspection), (service_proxy_available_cb), (main): - Use the new callback API. - Terminate cleanly on SIGTERM. * tests/test-client.c: (interrupt_signal_handler), (main): * tests/test-server.c: (interrupt_signal_handler), (main): Terminate cleanly on SIGTERM. 2007-07-07 Jorn Baayen * doc/gupnp-docs.sgml: * libgupnp/gupnp-types.h: Include gupnp-types in doc TOC. 2007-07-07 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_dispose): * libgupnp/gupnp-service-info.c: (gupnp_service_info_dispose): * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_cancel_action): Set message status to SOUP_STATUS_CANCELLED before cancelling. * libgupnp/gupnp-service-proxy.c: Elaborate begin_action() comments. 2007-07-07 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-types-private.h: * libgupnp/gupnp-types.c: (gupnp_type_to_string): * libgupnp/gupnp-types.h: Make private gupnp_data_type_to_gtype(). Add gupnp_value_get_string() macro. * libgupnp/xml-util.c: (xml_util_node_get_content_value): Smarter value transformation like in ServiceProxy. 2007-07-07 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_resource_unavailable): Handle resource-unavailable in the same way. 2007-07-07 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_finalize), (process_service_list), (process_device_list), (description_loaded), (got_description_url): * libgupnp/gupnp-device-proxy-private.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_device), (gupnp_device_proxy_get_service): * libgupnp/gupnp-device.c: (gupnp_device_get_device), (gupnp_device_get_service), (_gupnp_device_find_element_for_udn): * libgupnp/gupnp-service-private.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_get_subscribed): * libgupnp/gupnp-service.c: (gupnp_service_thaw_notify): Create proxies for all, not just one, matching devices and services. 2007-07-07 Jorn Baayen * libgupnp/gupnp-service-info.c: (gupnp_service_info_get_property), (gupnp_service_info_dispose): Rearrange some code. 2007-07-07 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-service-info.c: * libgupnp/gupnp-service-introspection-private.h: * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-service-introspection.h: * libgupnp/gupnp.h: Make introspection constructor private. 2007-07-07 Jorn Baayen * libgupnp/gupnp-service-proxy.c: * libgupnp/gupnp-types.c: Handle conversion of strings to GUPnP string-based types. 2007-07-06 Zeeshan Ali Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-types.h: * libgupnp/gupnp-types.c: (gupnp_type_to_string), (gupnp_bin_base64_get_type), (gupnp_bin_hex_get_type), (gupnp_date_get_type), (gupnp_date_time_get_type), (gupnp_date_time_tz_get_type), (gupnp_time_get_type), (gupnp_time_tz_get_type), (gupnp_uri_get_type), (gupnp_uuid_get_type), (gupnp_data_type_to_gtype): Introduce new types for some UPnP data types that do not have a direct equivalent in glib. * libgupnp/xml-util.c: (xml_util_get_attribute_contents): * libgupnp/xml-util.h: Add helper function for getting the contents of an attribute. * libgupnp/gupnp-service-introspection.c: (gupnp_service_state_variable_info_free), (gupnp_service_introspection_set_property), (gupnp_service_introspection_finalize), (gupnp_service_introspection_class_init), (set_variable_type), (get_state_variable), (get_action_argument), (contstruct_introspection_info), (gupnp_service_introspection_new): * libgupnp/gupnp-service-introspection.h: - Use the new GUPnP types instead of string type for some UPnP types. - Take a pointer to SCPD xml instead of it's url in the constructor and leave the download of the document to the caller. - Expect documents to specify 'sendEvents' as an attribute of the state variable node. * libgupnp/gupnp-service-info.c: (gupnp_service_info_init), (get_scpd_url_data_free), (gupnp_service_info_dispose), (gupnp_service_info_class_init), (get_scpd), (gupnp_service_info_get_introspection), (scpd_ready), (got_scpd_url), (gupnp_service_info_get_introspection_async): * libgupnp/gupnp-service-info.h: - Handle the SCPD GET for and provide introspection's constructor a pointer to the xml document rather than the SCPD URL. - Provide an asynchronous way of geting the introspection object. * tests/test-introspection.c: (print_state_variables), (got_introspection), (service_proxy_available_cb), (main): Provide a way to specify that the introspection object be created/requested asynchronously through a command-line argument. 2007-07-04 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: (gupnp_service_state_variable_info_free), (gupnp_service_action_info_free), (gupnp_service_introspection_finalize), (set_variable_limits), (set_variable_type), (get_action_argument), (gupnp_service_action_arg_info_free), (collect_action_names), (collect_action_arguments), (collect_actions), (collect_state_variables), (gupnp_service_introspection_list_action_names), (gupnp_service_introspection_list_action_arguments), (gupnp_service_introspection_list_actions), (gupnp_service_introspection_list_state_variables), (gupnp_service_introspection_get_state_variable): * libgupnp/gupnp-service-introspection.h: * tests/test-introspection.c: (print_action_arguments), (print_actions), (print_state_variables): - Return local copies of data to avoid malloc()s and free()s. - Cache the returned GSLists to avoid allocating the list each time. - return a 'const' from each function and update doc comments to make it very clear to the user that the return data can't be modified or freed. - Rename 'gtype' field to 'type' for consistancy. - Introduce an enum type for the direction of the action argument and use that instead of a string. - Add a function for getting state variable information by name. 2007-07-01 Jorn Baayen * libgupnp/gupnp-service-proxy.c: Remove unused includes. 2007-07-01 Jorn Baayen * libgupnp/gupnp-device-info.c: (gupnp_device_info_list_device_types), (gupnp_device_info_list_service_types): Use xml_util_get_child_element_content_glib(). 2007-07-01 Jorn Baayen * doc/gupnp-docs.sgml: * libgupnp/gupnp-control-point.c: * libgupnp/gupnp-device-info.c: (gupnp_device_info_class_init): * libgupnp/gupnp-device-proxy.c: * libgupnp/gupnp-device.c: * libgupnp/gupnp-service-info.c: (gupnp_service_info_class_init): * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-service-proxy.c: * libgupnp/gupnp-service.c: Documentation updates. 2007-07-01 Jorn Baayen * libgupnp/gupnp-service-introspection.c: (gupnp_service_introspection_finalize), (contstruct_introspection_info): Added small optimization + missing NULL checks. 2007-07-01 Jorn Baayen * libgupnp/gupnp-device-info.c: * libgupnp/gupnp-device-proxy.c: (_gupnp_device_proxy_new_from_doc): * libgupnp/gupnp-root-device.c: (gupnp_root_device_constructor): * libgupnp/gupnp-service-info.c: (gupnp_service_info_finalize), (gupnp_service_info_get_udn): * libgupnp/gupnp-service-introspection.c: (set_variable_type), (get_state_variable), (get_action_argument), (get_actions), (get_state_variables): * libgupnp/gupnp-service-proxy.c: (_gupnp_service_proxy_new_from_doc): * libgupnp/xml-util.c: (xml_util_get_element): * libgupnp/xml-util.h: Add more shared XML helpers. 2007-07-01 Jorn Baayen * libgupnp/gupnp-device-info.c: (get_property), (gupnp_device_info_get_friendly_name), (gupnp_device_info_get_manufacturer), (gupnp_device_info_get_model_name), (gupnp_device_info_get_model_number): Use get_url_property() for all URL properties. 2007-07-01 Jorn Baayen * libgupnp/gupnp-service.c: (gupnp_service_class_init): Use G_TYPE_VALUE for "value" argument on "query-variable" signal. 2007-07-01 Jorn Baayen * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property), (gupnp_device_info_get_property), (gupnp_device_info_finalize), (gupnp_device_info_class_init), (icon_parse): * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_device), (gupnp_device_proxy_get_service), (_gupnp_device_proxy_new_from_doc), (_gupnp_device_proxy_new_from_element): * libgupnp/gupnp-device.c: (gupnp_device_get_device), (gupnp_device_get_service), (_gupnp_device_new_from_element): * libgupnp/gupnp-service-info.c: (gupnp_service_info_set_property), (gupnp_service_info_get_property), (gupnp_service_info_finalize), (gupnp_service_info_class_init), (get_url_property): * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-private.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (_gupnp_service_proxy_new_from_doc), (_gupnp_service_proxy_new_from_element): * libgupnp/gupnp-service.c: (_gupnp_service_new_from_element): Store URL base as SoupUri, and use description file location as URL base if no base is specified explicitly. * libgupnp/gupnp-root-device.c: (gupnp_root_device_finalize), (gupnp_root_device_set_property), (gupnp_root_device_get_property), (gupnp_root_device_constructor): * libgupnp/gupnp-root-device.h: Remove API for setting URL base as the explicit specification of a URL base is discouraged. Don't autohost description file. * tests/test-server.c: (main): Updated for changed API. 2007-06-30 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action): Use M-POST when POST fails. 2007-06-30 Jorn Baayen * libgupnp/gupnp-error.h: * libgupnp/gupnp-service.c: (gupnp_service_action_return_error): Fill in description automatically for known error codes. * libgupnp/gupnp-service-proxy.c: (convert_error_code): Handle unknown error codes. 2007-06-30 Jorn Baayen * libgupnp/gupnp-error.c: * libgupnp/gupnp-error.h: * libgupnp/gupnp-service-proxy.c: (set_error_literal), (convert_error_code), (gupnp_service_proxy_end_action_valist), (subscription_expire), (subscribe_got_response): * libgupnp/gupnp-service.c: (notify_got_response): More detailed erroring. 2007-06-30 Jorn Baayen * libgupnp/gupnp-error.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist), (set_error_literal), (gupnp_service_proxy_end_action_valist), (subscribe_got_response): * libgupnp/gupnp-service.c: (notify_got_response): Don't report GValue errors through GError, and define error codes. 2007-06-30 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_end_action), (gupnp_service_proxy_end_action_valist): Added set_error_literal() helper function. 2007-06-30 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_end_action_valist): Handle SOAP Faults. * libgupnp/gupnp-service.c: (gupnp_service_action_set_value), (gupnp_service_action_return_error): Return SOAP Fault in correct format. * tests/test-client.c: (service_proxy_available_cb): Return on error. 2007-06-30 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (subscribe_got_response): Remove obsolete comment and correct warning message. * libgupnp/gupnp-service.c: (subscription_response), (subscription_timeout), (parse_timeout), (subscribe), (resubscribe): Return correct timeout to subscriber. 2007-06-30 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_resource_unavailable): Remove unavailable device from correct list! 2007-06-29 Jorn Baayen * AUTHORS: Added Zeeshan. 2007-06-29 Zeeshan Ali reviewed by: Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp.h: * libgupnp/gupnp-service-introspection.c: (gupnp_service_introspection_init), (gupnp_service_introspection_set_property), (gupnp_service_introspection_get_property), (gupnp_service_introspection_dispose), (gupnp_service_introspection_finalize), (gupnp_service_introspection_class_init), (get_scpd), (set_default_value), (set_string_value_limits), (set_value_limit_by_name), (set_variable_limits), (set_variable_type), (get_state_variable), (get_action_argument), (get_action_arguments), (action_argument_list_free), (get_actions), (get_state_variables), (contstruct_introspection_info), (collect_action_names), (collect_action_arguments), (collect_actions), (collect_allowed_values), (copy_state_variable), (collect_state_variables), (gupnp_service_introspection_new), (gupnp_service_introspection_list_action_names), (gupnp_service_introspection_list_action_arguments), (gupnp_service_introspection_list_actions), (gupnp_service_action_arg_info_free), (gupnp_service_action_info_free), (gupnp_service_introspection_list_state_variables), (gupnp_service_state_variable_info_free): * libgupnp/gupnp-service-introspection.h: Add service introspection support. * libgupnp/gupnp-service-info.c: (gupnp_service_proxy_request_introspection): * libgupnp/gupnp-service-info.h: - Add service introspection support. * tests/Makefile.am: * tests/test-introspection.c: (print_action_arguments), (print_actions), (print_state_variables), (service_proxy_available_cb), (service_proxy_unavailable_cb), (main): Add a test application for the introspection API. 2007-06-27 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_send_action_valist): Only run the main loop if it hasn't been quit before yet. Fixes a hang. 2007-06-27 Jorn Baayen * libgupnp/gupnp-service.c: (subscription_data_free), (subscribe), (gupnp_service_constructor), (gupnp_service_finalize), (gupnp_service_class_init), (gupnp_service_notify_valist), (notify_got_response), (notify_subscriber), (flush_notifications), (gupnp_service_notify_value), (gupnp_service_freeze_notify), (gupnp_service_thaw_notify): * libgupnp/gupnp-service.h: Implement notification. 2007-06-27 Jorn Baayen * configure.ac: Depend on uuid. * libgupnp/gena-protocol.h: Added minimum timeout value. * libgupnp/gupnp-context.c: (gupnp_context_class_init): Use minimum timeout value. * libgupnp/gupnp-service.c: (gupnp_service_action_return_error), (gupnp_service_init), (query_state_variable), (control_server_handler), (subscription_response), (generate_sid), (subscription_timeout), (parse_timeout), (subscribe), (resubscribe), (unsubscribe), (subscription_server_handler), (gupnp_service_constructor), (gupnp_service_finalize), (gupnp_service_class_init), (gupnp_service_notify), (gupnp_service_notify_valist), (gupnp_service_notify_value), (gupnp_service_freeze_notify), (gupnp_service_thaw_notify), (_gupnp_service_new_from_element): Implement subscription. 2007-06-27 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-error.h: * libgupnp/gupnp-service.c: (gupnp_service_action_return_error), (query_state_variable), (control_server_handler): * libgupnp/gupnp-service.h: * libgupnp/upnp-protocol.h: More flexible error handling. 2007-06-27 Jorn Baayen * libgupnp/gupnp-service.c: (gupnp_service_action_get_value), (gupnp_service_action_set_valist), (gupnp_service_action_set_value), (gupnp_service_action_return), (gupnp_service_action_return_error), (gupnp_service_init), (new_action_response_node), (query_state_variable), (control_server_handler), (gupnp_service_notify_valist), (gupnp_service_notify_value), (gupnp_service_freeze_notify), (gupnp_service_thaw_notify), (_gupnp_service_new_from_element): * libgupnp/gupnp-service.h: Fully implement actioning. * libgupnp/Makefile.am: * libgupnp/gupnp-error.h: * libgupnp/upnp-protocol.h: Added error codes and descriptions. * libgupnp/xml-util.c: (xml_util_node_get_content_int): * libgupnp/xml-util.h: Added xml_util_node_get_content_value() for retrieving xmlNode contents as GValues. * libgupnp/gupnp-service-proxy.c: (server_handler): Use xml_util_node_get_content_value(). * tests/test-server.c: (browse_cb): Test actioning. 2007-06-26 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_end_action_valist): Small cleanup. * libgupnp/gupnp-service.c: (gupnp_service_action_get_locales), (gupnp_service_action_get), (gupnp_service_action_get_valist), (gupnp_service_action_get_value), (gupnp_service_action_set), (gupnp_service_action_set_valist), (gupnp_service_action_set_value), (gupnp_service_action_return), (gupnp_service_action_return_error), (gupnp_service_class_init), (gupnp_service_notify), (gupnp_service_notify_valist), (gupnp_service_notify_value), (gupnp_service_freeze_notify), (gupnp_service_thaw_notify): Boilerplate code. 2007-06-26 Jorn Baayen * libgupnp/gupnp-service.c: (query_state_variable), (control_server_handler): Implement QueryStateVariable. 2007-06-26 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist): * libgupnp/gupnp-service.c: (gupnp_service_action_get_name), (gupnp_service_action_get_locales), (gupnp_service_action_set_value), (gupnp_service_action_return), (gupnp_service_action_return_error), (gupnp_service_init), (query_state_variable), (control_server_handler), (subscription_server_handler), (gupnp_service_constructor), (gupnp_service_dispose), (gupnp_service_finalize), (gupnp_service_class_init), (gupnp_service_notify), (gupnp_service_notify_valist), (gupnp_service_notify_value), (gupnp_service_freeze_notify), (gupnp_service_thaw_notify), (_gupnp_service_new_from_element): * libgupnp/gupnp-service.h: Basic server-side actioning. No argument handling yet. * tests/test-server.c: (browse_cb), (main): Test actioning. 2007-06-26 Jorn Baayen * libgupnp/accept-language.c: (accept_language_get_header): * libgupnp/accept-language.h: Cleanup, additional functions to convert between locale and HTTP language tag representations. * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist): Updated for accept-language function rename. * configure.ac: Depend on shared-mime-data. * libgupnp/Makefile.am: * libgupnp/xdgmime/Makefile.am: * libgupnp/xdgmime/xdgmime.c: * libgupnp/xdgmime/xdgmime.h: * libgupnp/xdgmime/xdgmimealias.c: * libgupnp/xdgmime/xdgmimealias.h: * libgupnp/xdgmime/xdgmimecache.c: * libgupnp/xdgmime/xdgmimecache.h: * libgupnp/xdgmime/xdgmimeglob.c: * libgupnp/xdgmime/xdgmimeglob.h: * libgupnp/xdgmime/xdgmimeint.c: * libgupnp/xdgmime/xdgmimeint.h: * libgupnp/xdgmime/xdgmimemagic.c: * libgupnp/xdgmime/xdgmimemagic.h: * libgupnp/xdgmime/xdgmimeparent.c: * libgupnp/xdgmime/xdgmimeparent.h: * libgupnp/gupnp-context.c: (hosting_server_handler): Use xdgmime to set correct Content-Type HTTP headers. * tests/test-server.c: (main): Print port number on startup. 2007-06-22 Jorn Baayen * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property), (gupnp_device_info_get_udn): Re-use get_property() in one more spot. * libgupnp/gupnp-service.h: Added G_GNUC_NULL_TERMINATED. * libgupnp/gupnp-root-device.c: (server_handler), (fill_resource_group), (gupnp_root_device_constructor): * libgupnp/xml-util.c: (xml_util_node_get_content_int): * libgupnp/xml-util.h: Move some XML utils to xml-util.c 2007-06-22 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/accept-language.c: * libgupnp/accept-language.h: * libgupnp/gupnp-context.c: (gupnp_context_get_subscription_timeout), (hosting_server_handler), (unregister_hosting_server_handler): Proper Accept-Language support. * libgupnp/gupnp-device.c: (gupnp_device_get_service): * libgupnp/gupnp-service-private.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action), (gupnp_service_proxy_begin_action_valist): * libgupnp/gupnp-service.c: (gupnp_service_action_get_name), (gupnp_service_thaw_notify): * libgupnp/gupnp-service.h: Handle service object creation. 2007-06-19 Jorn Baayen * doc/Makefile.am: * doc/api-design.txt: Remove obsolete API design document. * libgupnp/gupnp-device.c: Small doc correction. * libgupnp/Makefile.am: * libgupnp/gupnp-service.c: * libgupnp/gupnp-service.h: Added Service skels. * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_class_init): Delete obsolete code. 2007-06-19 Jorn Baayen * libgupnp/gupnp-context.c: (_gupnp_context_get_session), (gupnp_context_get_subscription_timeout): * libgupnp/gupnp-context.h: * tests/test-server.c: (main): Add regular web server functionality. 2007-06-19 Jorn Baayen * libgupnp/gupnp-control-point.c: (description_loaded): * libgupnp/gupnp-device-proxy-private.h: * libgupnp/gupnp-device-proxy.c: (_gupnp_device_proxy_find_element_for_udn): * libgupnp/gupnp-device-proxy.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (find_service_element_for_type): * libgupnp/gupnp-service-proxy.h: Make ServiceProxy and DeviceProxy constructors private. 2007-06-19 Jorn Baayen * libgupnp/gupnp-context.c: (gupnp_context_dispose): * libgupnp/gupnp-control-point.c: (gupnp_control_point_dispose): * libgupnp/gupnp-root-device.c: (gupnp_root_device_finalize), (gupnp_root_device_dispose): * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose): Chain up to parent class dispose and finalize methods. 2007-06-19 Jorn Baayen * libgupnp/gupnp-context.c: (gupnp_context_init): Remove unnecessary initialisations. 2007-06-19 Jorn Baayen * libgupnp/gupnp-context.c: (gupnp_context_class_init): * libgupnp/gupnp-device-info.c: (gupnp_device_info_class_init): * libgupnp/gupnp-service-info.c: (gupnp_service_info_class_init): * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_class_init): Added G_PARAM_STATIC_{NAME,NICK,BLURB}. 2007-06-19 Jorn Baayen * tests/test-server.c: (main): Use g_object_weak_ref() to destroy the description document when the root device is finalized. 2007-06-19 Jorn Baayen * libgupnp/gupnp-root-device.c: (fill_resource_group): Do not overwrite 'element' with child elements as it is still needed later. * tests/Makefile.am: * tests/test-server.c: D tests/test.c: A tests/test-client.c: Added server test case. 2007-06-18 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-device.c: * libgupnp/gupnp-root-device.c: * libgupnp/gupnp-root-device.h: Implement Device and RootDevice. * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property), (gupnp_device_info_class_init): Detect UDN if not explicitly specified. * libgupnp/gupnp-control-point.c: (parse_usn): * libgupnp/gupnp-service.h: Fix typos. * libgupnp/gupnp-device-proxy.c: * libgupnp/gupnp-device-proxy.h: No need for a private structure any more. 2007-06-14 Jorn Baayen * libgupnp/gupnp-context.c: (get_default_host_ip): Set IP to 127.0.0.1 if no non-loopback device could be found. * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property), (gupnp_device_info_get_property), (gupnp_device_info_dispose), (gupnp_device_info_finalize), (gupnp_device_info_class_init), (gupnp_device_info_get_context), (gupnp_device_info_get_location), (gupnp_device_info_get_url_base), (gupnp_device_info_get_udn), (get_property), (gupnp_device_info_get_serial_number), (gupnp_device_info_get_upc), (icon_parse), (icon_free), (gupnp_device_info_get_icon_url), (gupnp_device_info_list_devices), (gupnp_device_info_list_device_types), (gupnp_device_info_get_device), (gupnp_device_info_list_services), (gupnp_device_info_list_service_types), (gupnp_device_info_get_service): * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_new): * libgupnp/gupnp-service-info.c: (gupnp_service_info_set_property), (gupnp_service_info_get_property), (gupnp_service_info_dispose), (gupnp_service_info_finalize), (gupnp_service_info_class_init), (gupnp_service_info_get_context), (gupnp_service_info_get_location), (gupnp_service_info_get_url_base), (gupnp_service_info_get_udn), (get_property), (get_url_property): * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_class_init), (gupnp_service_proxy_new): Add 'context' and 'url-base' properties to info classes. * libgupnp/gupnp-service.h: * libgupnp/gupnp-root-device.h: Server side API changes. 2007-06-11 Jorn Baayen * libgupnp/gupnp-root-device.h: * libgupnp/gupnp-service.h: API tweaks. 2007-06-11 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-device.h: * libgupnp/gupnp-root-device.h: * libgupnp/gupnp-service.h: * libgupnp/gupnp.h: Headers for server side. These are not final yet. 2007-05-30 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_resource_unavailable): Remove unavailable proxies from cache. 2007-05-29 Jorn Baayen * configure.ac: Bump version to 0.1.99. * libgupnp/gupnp-device-info.c: (gupnp_device_info_get_icon_url): * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_url_base), (gupnp_device_proxy_get_device), (gupnp_device_proxy_get_service), (gupnp_device_proxy_init), (gupnp_device_proxy_class_init): * libgupnp/gupnp-device-proxy.h: Move device subdevice and service retreival from DeviceProxy to DeviceInfo. This so that client and server side code can expose identical info API. * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action), (get_current_language), (action_got_response), (gupnp_service_proxy_begin_action_valist): * tests/test.c: (main): Set Accept-Language header on action requests. 2007-05-26 Jorn Baayen * libgupnp/gupnp-context.c: * libgupnp/gupnp-context.h: * libgupnp/gupnp-control-point.c: * libgupnp/gupnp-control-point.h: * libgupnp/gupnp-device-info.c: * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy.c: * libgupnp/gupnp-device-proxy.h: * libgupnp/gupnp-error.c: * libgupnp/gupnp-service-info.c: * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-proxy.c: * libgupnp/gupnp-service-proxy.h: More gtkdoc-fu. 2007-05-26 Jorn Baayen * configure.ac: * doc/Makefile.am: * doc/gupnp-docs.sgml: Added doc preamble. 2007-05-22 Jorn Baayen * libgupnp/gupnp-device-proxy.h: * libgupnp/gupnp-service-proxy.h: Doc coverage to 100%. 2007-05-21 Jorn Baayen * libgupnp/Makefile.am: Make sure all files get packaged. * libgupnp/gupnp-context.c: (gupnp_context_class_init): * libgupnp/gupnp-context.h: * libgupnp/gupnp-control-point.c: (gupnp_control_point_class_init): * libgupnp/gupnp-control-point.h: * libgupnp/gupnp-device-info.c: (gupnp_device_info_class_init), (icon_parse), (icon_free): * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-error.c: * libgupnp/gupnp-service-info.c: (gupnp_service_info_class_init), (get_url_property), (gupnp_service_info_get_service_type), (gupnp_service_info_get_id), (gupnp_service_info_get_scpd_url), (gupnp_service_info_get_control_url): * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_class_init): Doc updates. 2007-05-21 Jorn Baayen * doc/Makefile.am: Hide private bits. * doc/gupnp-docs.sgml: Added. 2007-05-21 Jorn Baayen * configure.ac: Point to gupnp.org. * po/*: Added missing files. 2007-05-10 Jorn Baayen * NEWS: * README: Added some text. * libgupnp/gupnp-device-info.h: Removed device type defines. These belong in any higher level libs now. * tests/test.c: (device_proxy_available_cb), (service_proxy_available_cb), (service_proxy_unavailable_cb), (main): Added notification test and cleaned up. 2007-05-09 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (server_handler): Parse XML part of NOTIFY messages and call notify callbacks. This means that now the client side of GUPnP is feature complete. Yay! * tests/test.c: Remove old comments. 2007-05-09 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_get_element), (gupnp_service_proxy_get_url_base), (notify_data_free), (gupnp_service_proxy_init), (gupnp_service_proxy_dispose), (gupnp_service_proxy_finalize), (gupnp_service_proxy_end_action_valist), (gupnp_service_proxy_cancel_action): * libgupnp/gupnp-service-proxy.h: Add notification management. 2007-05-09 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_end_action_valist): Correct error message. 2007-05-09 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (server_handler), (subscription_expire), (subscribe_got_response), (subscribe), (unsubscribe): Emit 'subscription-lost' when appropriate. Keep track of notify sequence numbers and resubscribe when we notice dropped notifications. 2007-05-09 Jorn Baayen * libgupnp/gupnp-context-private.h: * libgupnp/gupnp-context.c: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_finalize), (gupnp_service_proxy_remove_notify), (subscription_expire), (subscribe_got_response), (subscribe), (unsubscribe): Generate a unique path for each proxy on the server, and use soup_server_add_handler() to capture its requests instead of using a 'server-message-received' signal from GUPnPContext. 2007-05-09 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_remove_notify), (subscription_expire), (subscribe_got_response), (subscribe), (unsubscribe): Correct "Callback" URL format is subscription message. Disable Date header parsing for now as getting a local time (taking into account daylight saving) out of an RFC 1123 time is a total pain. 2007-05-09 Jorn Baayen * libgupnp/gupnp-context-private.h: * libgupnp/gupnp-context.c: (gupnp_context_class_init), (_gupnp_context_get_session), (server_handler), (_gupnp_context_get_server): Add hidden 'server-message-received' signal, emitted whenever the SoupServer receives a message. 2007-05-09 Jorn Baayen * libgupnp/gupnp-context.c: (_gupnp_context_get_session), (default_server_handler), (_gupnp_context_get_server), (gupnp_context_get_port), (gupnp_context_set_subscription_timeout): * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_remove_notify), (make_timeout_header), (subscription_expire), (subscribe_got_response), (subscribe): Support infinite timeout locally. Add a default server handler returning 501. 2007-05-08 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose), (subscribe), (unsubscribe), (gupnp_service_proxy_set_subscribed): Send unsubscription message synchronised on dispose. 2007-05-08 Jorn Baayen * libgupnp/gupnp-context.c: (gupnp_context_init), (gupnp_context_set_property), (gupnp_context_get_property), (gupnp_context_class_init), (_gupnp_context_get_server_url), (gupnp_context_new): * libgupnp/gupnp-context.h: * libgupnp/gupnp-service-proxy.c: (subscription_expire), (subscribe_got_response), (subscribe): Added subscription-timeout property to Context and use in ServiceProxy. 2007-05-08 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (subscribe_got_response): Support infinite timeouts. 2007-05-08 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-device-proxy.c: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose), (gupnp_service_proxy_begin_action), (action_got_response), (gupnp_service_proxy_end_action_valist), (gupnp_service_proxy_remove_notify), (subscription_expire), (subscribe_got_response), (subscribe), (unsubscribe), (gupnp_service_proxy_set_subscribed): Implement subscription. * tests/test.c: (service_proxy_available_cb): Test subscription. 2007-05-08 Jorn Baayen * libgupnp/gupnp-context-private.h: * libgupnp/gupnp-context.c: (make_server_id), (get_ip), (get_default_host_ip), (gupnp_context_init), (gupnp_context_set_property), (gupnp_context_get_property), (gupnp_context_dispose), (gupnp_context_finalize), (gupnp_context_class_init), (_gupnp_context_get_session): * libgupnp/gupnp-context.h: Start a SOAP server on demand, and add internal API for retrieving a URL to the server itself. * tests/test.c: (main): Updated to use changed GUPnPContext constructor. 2007-05-07 Jorn Baayen * libgupnp/gupnp-device-info.c: (icon_parse), (icon_free), (gupnp_device_info_get_icon_url): * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_finalize), (gupnp_device_proxy_get_element), (gupnp_device_proxy_get_url_base), (gupnp_device_proxy_init), (gupnp_device_proxy_list_devices), (gupnp_device_proxy_get_device), (gupnp_device_proxy_list_services), (gupnp_device_proxy_get_service), (_gupnp_device_proxy_find_element_for_udn), (gupnp_device_proxy_new), (_gupnp_device_proxy_new_from_element): * libgupnp/gupnp-service-info.c: (get_property), (gupnp_service_info_get_service_type), (gupnp_service_info_get_id), (gupnp_service_info_get_scpd_url), (gupnp_service_info_get_control_url): * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_action_free), (gupnp_service_proxy_get_element), (gupnp_service_proxy_get_property), (gupnp_service_proxy_dispose), (gupnp_service_proxy_finalize), (gupnp_service_proxy_class_init), (gupnp_service_proxy_send_action_valist), (gupnp_service_proxy_begin_action_valist), (gupnp_service_proxy_end_action), (gupnp_service_proxy_end_action_valist), (find_service_element_for_type), (gupnp_service_proxy_new), (_gupnp_service_proxy_new_from_element): Take URLBase into account. Make sending actions and parsing action responses work correctly. * tests/test.c: (service_proxy_available_cb), (service_proxy_unavailable_cb), (main): Add a little control test case for ContentDirectories. 2007-05-07 Jorn Baayen * libgupnp/gupnp-control-point.c: (description_loaded), (parse_usn): Correct USN parsing. * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist): Added assertion. 2007-05-03 Jorn Baayen * libgupnp/gupnp-control-point.c: (parse_usn), (gupnp_control_point_resource_available), (gupnp_control_point_class_init), (gupnp_control_point_get_context): * libgupnp/gupnp-control-point.h: * tests/test.c: (main): GSSDPServiceBrowser -> GSSDPResourceBrowser. 2007-04-25 Zeeshan Ali * libgupnp/gupnp-device-info.h: * tests/test.c: (device_proxy_available_cb): Add some device type defines. 2007-04-16 Jorn Baayen * libgupnp/gupnp-context-private.h: Added missing header. Spotted by Priit Laes.