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.