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.