2009-01-05  Ross Burton  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * configure.ac:
       * NEWS:
       Version 0.12.4.

2008-11-14  Ross Burton  <[email protected]>

       * libgupnp/gupnp-service-proxy.c:
       Set the Content Type header correctly (#1257, Zeeshan Ali Khattak)

2008-11-14  Ross Burton  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-context.c:
       Handle fscanf failing in get_default_host_ip (thanks Sven Neumann).

2008-11-14  Ross Burton  <[email protected]>

       * libgupnp/gupnp-service-proxy.c:
       Fix typos (thanks Sven Neumann)

2008-11-12  Jussi Kukkonen  <[email protected]>

       * doc/glossary.xml:
       * doc/overview.xml:

       Add DIDL-Lite and SSDP to glossary, mention upnp and dlna specs.

2008-11-11  Jussi Kukkonen  <[email protected]>

       * README.release:

       Add release instructions for GUPnP components

2008-11-06  Zeeshan Ali (Khattak)  <[email protected]>

       * 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  <[email protected]>

       * configure.ac:
       * NEWS:
       Version 0.12.3.

2008-10-27  Ross Burton  <[email protected]>

       * Makefile.am:
       Enable gtk-doc in distcheck.

2008-10-27  Ross Burton  <[email protected]>

       * libgupnp/http-headers.c:
       Don't use NULL return values from g_get_application_name() (#1176).

2008-10-22  Jussi Kukkonen  <[email protected]>

       * tools/gupnp-binding-tool:

       Use inline functions.
       Fix generated code indent, remove trailing whitespace.

2008-10-20  Jussi Kukkonen  <[email protected]>

       * tools/gupnp-binding-tool:

       Don't include specific glib/gupnp headers, use gupnp.h.

2008-10-17  Jussi Kukkonen  <[email protected]>

       * 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 <[email protected]>

       * 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)  <[email protected]>

      * libgupnp/gupnp-service-introspection.c:

      Add some missing checks for NULL.

2008-09-27  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * configure.ac:

       Increase version number.

2008-09-27  Jorn Baayen  <[email protected]>

       * 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 <[email protected]>.

2008-08-30  Jorn Baayen  <[email protected]>

       * examples/Makefile.am:

       Link examples to gthread.

2008-08-27  Jorn Baayen  <[email protected]>

       * configure.ac:
       * tests/Makefile.am:

       Link tests to gthread.

2008-07-14  Jorn Baayen  <[email protected]>

       * 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
       <[email protected]>.

2008-06-30  Jorn Baayen  <[email protected]>

       * NEWS:
       * configure.ac:

       Release 0.12.1.

2008-06-20  Jorn Baayen  <[email protected]>

       * libgupnp/http-headers.c (http_request_get_range):
       Support Range headers without upper bound.

2008-06-20  Jorn Baayen  <[email protected]>

       * libgupnp/gupnp-context.c (host_path_handler):
       Remove superfluous free.

2008-06-16  Jorn Baayen  <[email protected]>

       * NEWS:
       * configure.ac:
       Release 0.12.

2008-06-11  Ross Burton  <[email protected]>

       * doc/server-tutorial.xml:
       Add *correct* comments about when query-variable is called.

2008-06-11  Ross Burton  <[email protected]>

       * doc/server-tutorial.xml:
       Add comments about when query-variable is called.

2008-06-10  Ross Burton  <[email protected]>

       * doc/glossary.xml:
       Add links to the cross references.

2008-06-10  Ross Burton  <[email protected]>

       * doc/client-tutorial.xml:
       * doc/server-tutorial.xml:
       Lots of proof reading.

2008-06-10  Ross Burton  <[email protected]>

       * examples/BinaryLight1.xml:
       Use better friendly and model names.

2008-06-10  Ross Burton  <[email protected]>

       * doc/glossary.xml:
       Add UDN, fix acronyms.

2008-06-10  Ross Burton  <[email protected]>

       * 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  <[email protected]>

       * doc/gupnp-binding-tool.xml:
       * doc/gupnp-docs.sgml:
       Don't use entities to get the version, use XInclude.

2008-06-10  Ross Burton  <[email protected]>

       * 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  <[email protected]>

       * doc/glossary.xml:
       Add SCPD and remove baseform attributes.

2008-06-10  Ross Burton  <[email protected]>

       * doc/gupnp-docs.sgml:
       Merge the overview into the tutorial part.

2008-06-10  Ross Burton  <[email protected]>

       * doc/gupnp-docs.sgml:
       Add an index.

2008-06-10  Ross Burton  <[email protected]>

       * doc/server-tutorial.xml:
       Document service description files.

2008-06-09  Ross Burton  <[email protected]>

       * 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  <[email protected]>

       * examples/:
       * Makefile.am:
       * configure.ac:
       Add some basic but non-trivial examples.

2008-06-09  Ross Burton  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * doc/gupnp-docs.sgml:
       Add more section IDs.

2008-06-05  Zeeshan Ali Khattak  <[email protected]>

       * gupnp/libgupnp/gupnp-service.c:

       Refactor connect_names_to_signal_handlers() function.

2008-06-05  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-context.c (host_path_handler):
       Don't free path_to_open too early.

2008-06-03  Jorn Baayen  <[email protected]>

       * doc/server-tutorial.xml:
       Update for new gupnp_root_device_new() API.

2008-06-03  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * doc/server-tutorial.xml:
       Add more content.

2008-05-29  Ross Burton  <[email protected]>

       * libgupnp/gupnp-service.c:
       Add gtk-doc markup to signal names so they are links.

2008-05-29  Ross Burton  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * doc/gupnp-sections.txt:
       Add a symbol which somehow decided it wanted to be documented.

2008-05-27  Ross Burton  <[email protected]>

       * libgupnp/gupnp-service.c:
       Fix doc typo.

2008-05-27  Ross Burton  <[email protected]>

       * 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  <[email protected]>

       * tools/gupnp-binding-tool:
       Add async wrappers too.

2008-05-23  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * configure.ac:

       Version to 0.10.1.99.

2008-05-22  Ross Burton  <[email protected]>

       * libgupnp/gupnp-device-info.[ch]:
       * doc/gupnp-sections.txt:
       Add gupnp_device_info_get_presentation_url().

2008-05-21  Ross Burton  <[email protected]>

       * libgupnp/gupnp-context.c:
       When guessing the host's IP address, try and use the default
       route's interface.

2008-05-19  Jorn Baayen  <[email protected]>

       * NEWS:
       * configure.ac:
       * libgupnp/Makefile.am:

       Bump soname, and release 0.10.1.

2008-05-16  Ross Burton  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-types.c:
       Last missing bit of documentation, now 100% API coverage.

2008-05-15  Ross Burton  <[email protected]>

       * 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  <[email protected]>

       * NEWS:
       * configure.ac:

       GUPnP 0.10.

2008-05-12  Ross Burton  <[email protected]>

       * libgupnp/gupnp-types.h:
       Document the special types.

2008-05-12  Ross Burton  <[email protected]>

       * libgupnp/gupnp-service-info.c:
       Complete API documentation.

2008-05-12  Ross Burton  <[email protected]>

       * doc/gupnp-docs.sgml:
       * doc/Makefile.am:
       * docs/client-tutorial.xml:
       Add *very basic* first draft at a tutorial.

2008-05-12  Ross Burton  <[email protected]>

       * libgupnp/gupnp-control-point.c:
       Document the search target, and enforce target != NULL.

2008-05-11  Zeeshan Ali Khattak  <[email protected]>

       * libgupnp/gupnp-service.c:

       Emit a warning on failure to retreive requested action argument.

2008-05-11  Zeeshan Ali Khattak  <[email protected]>

       * libgupnp/gupnp-context.c:

       GContentType is not guaranteed to be a mime-type.

2008-05-10  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service-proxy.c (emit_notifications),
       (server_handler):

       Cosmetic: fit into 80 columns.

2008-05-09  Ross Burton  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service.c:
       Fix typo, remove unused variable.

2008-05-07  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gvalue-util.c:
       Fix type marshalling for doubles.

2008-05-07  Ross Burton  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-context.c:
       Add the ability to set GUPNP_DEBUG to spew the HTTP messages to
       the console.

2008-05-06  Ross Burton  <[email protected]>

       * 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  <[email protected]>

       * doc/gupnp-sections.txt:
       Add missing symbols.

2008-05-06  Ross Burton  <[email protected]>

       * doc/gupnp.types:
       Add a .types file so the objects get introspected.

2008-05-06  Ross Burton  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-context.c:
       Fix some compile warnings.

2008-04-29  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-context.c (hosting_server_handler):

       Use GMappedFile.

2008-04-15  Jorn Baayen  <[email protected]>

       * configure.ac:
       * libgupnp/Makefile.am:
       * libgupnp/gupnp-context.c (hosting_server_handler):

       Use GContentType.

       * libgupnp/xdgmime:

       Removed.

2008-04-15  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service.c (notify_subscriber):

       Set request, not response.

2008-04-15  Jorn Baayen  <[email protected]>
           Zeeshan Ali Khattak  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-context.c (gupnp_context_init):

       Use SOUP_SESSION_IDLE_TIMEOUT when available.

2008-03-18  Jorn Baayen  <[email protected]>

       * configure.ac:
       * libgupnp/gupnp-service.c (gupnp_service_signals_autoconnect):

       Release gupnp 0.8.

2008-03-06  Jorn Baayen  <[email protected]>

       * libgupnp/gupnp-device-info.c (resource_type_match):

       Interpret strncmp() return value correctly.

2008-03-05  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service-proxy.c:

       Critical bug fix: Don't free the action in check_action_response().

2008-02-26  Jorn Baayen  <[email protected]>

       * autogen.sh:

       Don't call glib-gettextize.

2008-02-23  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/http-headers.c: (message_set_user_agent):

       Add DLNA string.

2008-02-09  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gvalue-util.c:
       Fix build on 64-bit systems (#711, thanks Bastien Nocera).

2008-01-17  Zeeshan Ali Khattak  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * Makefile.am:
       * configure.ac:

       Remove unused translation framework.

2008-01-14  Jorn Baayen  <[email protected]>

       * libgupnp/gupnp-types.c:

       Recursively copy xmlNodes.

2008-01-14  Jorn Baayen  <[email protected]>

       * doc/Makefile.am:

       Update list of ignored header files.

2008-01-07  Jorn Baayen  <[email protected]>

       * libgupnp/gvalue-util.c: (gvalue_util_set_value_from_string):

       Use atol() for 64-bit int parsing.

2007-12-16  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-context.c:

       Rewrite local IP detection to be IPv6-friendly.

2007-11-23  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service.c: (control_server_handler),
       (create_property_set):

       Set embedded xml docs to not be standalone.

2007-11-22  Jorn Baayen  <[email protected]>

       * configure.ac:

       Set XDG_PREFIX. Avoids symbol collisions with other xdgmimes.
       Patch by Ross Burton <[email protected]>.

2007-11-22  Jorn Baayen  <[email protected]>

       * libgupnp/gupnp-service.c: (strip_camel_case):

       Don't split up 2 letter abbreviations when coverting from camel case.

2007-11-21  Jorn Baayen  <[email protected]>

       * libgupnp/xml-util.c: (xml_util_node_get_content_value):
       * libgupnp/xml-util.h:

       Remove unused function.

2007-10-23  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>
           Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gena-protocol.h:
       * libgupnp/gupnp-service-proxy.c: (subscribe_got_response):

       Resubscribe 30 seconds before subscription times out.

2007-10-03  Jorn Baayen  <[email protected]>

       * configure.ac:

       Version number to 0.6.99.

2007-10-03  Zeeshan Ali  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * doc/gupnp-sections.txt:

       Add _control_point_new_full() and _root_device_new_full() to docs.

2007-10-01  Zeeshan Ali  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * NEWS:
       * configure.ac:

       Release 0.6.

2007-09-21  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service-proxy.c: (unsubscribe):

       subscription_timeout_id can be 0 (when we are resubscribing).

2007-09-20  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gvalue-util.c:

       Accept 'yes' and 'no' as boolean values as well.

2007-09-17  Jorn Baayen  <[email protected]>

       * libgupnp/gupnp-service-proxy.c:

       Specify the reason why notify subscription failed in subscription-lost
       signal.

2007-09-17  Zeeshan Ali  <[email protected]>

       * libgupnp/gupnp-service.c:

       Specify the reason why notify failed in the error to the notify-failed
       signal.

2007-09-10  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service-info.h:
       * tests/test-introspection.c: (print_state_variables):

       Mark GUPnPServiceIntrospectionCallback() 'error' argument as 'const'.

2007-09-09  Zeeshan Ali  <[email protected]>
           Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-device-info.c:

       gupnp_device_info_get_model_number() returns model number and not
       model description.

2007-09-08  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-device-info.c:

       BUGFIX: Don't use a NULL pointer.

2007-09-03  Zeeshan Ali  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service-introspection.c:

       Use gvalue_util_set_value_from_string() for conversion from
       G_TYPE_STRING.

2007-08-30  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * configure.in:

       Bump version number to 0.4.99.

2007-08-28  Zeeshan Ali  <[email protected]>
           Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * NEWS:
       * configure.ac:

       Release gupnp 0.4.

2007-08-14  Jorn Baayen  <[email protected]>

       * libgupnp/gupnp-device.c: (gupnp_device_class_init):

       Remove unused function.

2007-08-13  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * Makefile.am:
       * configure.ac:
       * gupnp-1.0-uninstalled.pc.in:

       Enable the users to build/link against uninstalled gupnp.

2007-08-03  Jorn Baayen  <[email protected]>

       * libgupnp/gupnp-service.c: (gupnp_service_constructor):

       Only include evented state variables in the initial event message.

2007-08-02  Jorn Baayen  <[email protected]>

       * NEWS:
       * configure.ac:

       Release 0.3.

2007-08-01  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * configure.ac:

       Bump version number to 0.2.

2007-07-26  Zeeshan Ali  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service-proxy.h:
       * libgupnp/gupnp-service.h:

       Cosmetic changes.

2007-07-26  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * gupnp-1.0.pc.in:

       List all dependencies.

2007-07-26  Zeeshan Ali  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service-introspection.h:

       Fix struct docs for gtk-doc.

2007-07-25  Zeeshan Ali  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service-introspection.c:

       Added a comment warning people against using introspection in
       regular apps.

2007-07-25  Jorn Baayen  <[email protected]>

       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  <[email protected]>

       * libgupnp/gupnp-service-introspection.c:
       * libgupnp/gupnp-service-introspection.h:

       Remove unneeded functions.

2007-07-25  Jorn Baayen  <[email protected]>

       * README:

       Added text from website.

2007-07-25  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service-proxy.c: (subscribe_got_response):

       Remove server handler on all subscription errors.

2007-07-25  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service-proxy.c: (server_handler):

       Remove debug spew.

2007-07-25  Jorn Baayen  <[email protected]>

       * libgupnp/gupnp-service-introspection.c:
       * libgupnp/gupnp-types.c:

       Doc polish.

2007-07-24  Zeeshan Ali  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service-proxy.c: (server_handler):

       Don't allow g_main_context_iteration() to block.

2007-07-24  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * NEWS:

       Added news items for 0.2.

2007-07-23  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>
           Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service-proxy.c:
       (gupnp_service_proxy_begin_action_valist):

       Set error if no controlURL is defined.

2007-07-08  Jorn Baayen  <[email protected]>

       * libgupnp/gupnp-control-point.c: (got_description_url),
       (load_description):

       Fix description doc refcounting bugs.

2007-07-08  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>
           Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * doc/gupnp-docs.sgml:
       * libgupnp/gupnp-types.h:

       Include gupnp-types in doc TOC.

2007-07-07  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-control-point.c:
       (gupnp_control_point_resource_unavailable):

       Handle resource-unavailable in the same way.

2007-07-07  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service-info.c: (gupnp_service_info_get_property),
       (gupnp_service_info_dispose):

       Rearrange some code.

2007-07-07  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service-proxy.c:
       * libgupnp/gupnp-types.c:

       Handle conversion of strings to GUPnP string-based types.

2007-07-06  Zeeshan Ali  <[email protected]>
           Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service-proxy.c:

       Remove unused includes.

2007-07-01  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service-introspection.c:
       (gupnp_service_introspection_finalize),
       (contstruct_introspection_info):

       Added small optimization + missing NULL checks.

2007-07-01  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service.c: (gupnp_service_class_init):

       Use G_TYPE_VALUE for "value" argument on "query-variable" signal.

2007-07-01  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service-proxy.c:
       (gupnp_service_proxy_begin_action):

       Use M-POST when POST fails.

2007-06-30  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-control-point.c:
       (gupnp_control_point_resource_unavailable):

       Remove unavailable device from correct list!

2007-06-29  Jorn Baayen  <[email protected]>

       * AUTHORS: Added Zeeshan.

2007-06-29  Zeeshan Ali  <[email protected]>

       reviewed by: Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service.c: (query_state_variable),
       (control_server_handler):

       Implement QueryStateVariable.

2007-06-26  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-context.c: (gupnp_context_init):

       Remove unnecessary initialisations.

2007-06-19  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-root-device.h:
       * libgupnp/gupnp-service.h:

       API tweaks.

2007-06-11  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-control-point.c:
       (gupnp_control_point_resource_unavailable):

       Remove unavailable proxies from cache.

2007-05-29  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * configure.ac:
       * doc/Makefile.am:
       * doc/gupnp-docs.sgml:

       Added doc preamble.

2007-05-22  Jorn Baayen  <[email protected]>

       * libgupnp/gupnp-device-proxy.h:
       * libgupnp/gupnp-service-proxy.h:

       Doc coverage to 100%.

2007-05-21  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * doc/Makefile.am:

       Hide private bits.

       * doc/gupnp-docs.sgml:

       Added.

2007-05-21  Jorn Baayen  <[email protected]>

       * configure.ac:

       Point to gupnp.org.

       * po/*:

       Added missing files.

2007-05-10  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service-proxy.c:
       (gupnp_service_proxy_end_action_valist):

       Correct error message.

2007-05-09  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-service-proxy.c: (subscribe_got_response):

       Support infinite timeouts.

2007-05-08  Jorn Baayen  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * libgupnp/gupnp-device-info.h:
       * tests/test.c: (device_proxy_available_cb):

       Add some device type defines.

2007-04-16  Jorn Baayen  <[email protected]>

       * libgupnp/gupnp-context-private.h:

       Added missing header. Spotted by Priit Laes.