2007-07-26 Jorn Baayen * configure.ac: Bump version number to 0.2. 2007-07-26 Zeeshan Ali * libgupnp/gupnp-service.c: (new_action_response_node): A small fix to the last change from jorn to fix the build. 2007-07-26 Jorn Baayen * libgupnp/gupnp-control-point.c: (process_service_list), (process_device_list), (gupnp_control_point_resource_unavailable): * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property), (gupnp_device_info_get_property), (gupnp_device_info_finalize), (gupnp_device_info_class_init), (gupnp_device_info_get_url_base), (gupnp_device_info_get_udn), (gupnp_device_info_get_device_type), (gupnp_device_info_get_friendly_name), (gupnp_device_info_get_manufacturer), (gupnp_device_info_get_manufacturer_url), (gupnp_device_info_get_model_description), (gupnp_device_info_get_model_name), (gupnp_device_info_get_model_number), (gupnp_device_info_get_model_url), (gupnp_device_info_get_serial_number): * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_service): * libgupnp/gupnp-service-info.c: (gupnp_service_info_set_property), (gupnp_service_info_get_property), (gupnp_service_info_dispose), (gupnp_service_info_finalize), (gupnp_service_info_class_init), (gupnp_service_info_get_url_base), (gupnp_service_info_get_udn), (gupnp_service_info_get_service_type), (gupnp_service_info_get_id), (gupnp_service_info_get_scpd_url), (gupnp_service_info_get_control_url): * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist), (gupnp_service_proxy_get_subscribed), (_gupnp_service_proxy_new): * libgupnp/gupnp-service.c: (new_action_response_node): * tests/test-browsing.c: (device_proxy_available_cb): * tests/test-introspection.c: (service_proxy_unavailable_cb): Handle the case where no serviceType (or deviceType) is specified in the description document: - ControlPoint saves the discovered types into the proxies, so that unavailability can be detected even if the description document is bogus. - Service and ServiceProxy warn if serviceType is not specified. This has the side effect that the return value of _get_{device,service}_type() now returns a const. Also added additional checks. 2007-07-26 Zeeshan Ali * libgupnp/gupnp-device-info.c: * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy-private.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_device), (gupnp_device_proxy_get_service), (_gupnp_device_proxy_new): * libgupnp/gupnp-device.c: (gupnp_device_get_device), (gupnp_device_get_service), (_gupnp_device_new): * libgupnp/gupnp-service-info.c: * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-private.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (_gupnp_service_proxy_new): * libgupnp/gupnp-service.c: (_gupnp_service_new): Make it clear to the user that return value of gupnp_{device,service}_info_get_url_base() must not be freed o modified. 2007-07-26 Jorn Baayen * libgupnp/gupnp-service-proxy.h: * libgupnp/gupnp-service.h: Cosmetic changes. 2007-07-26 Jorn Baayen * doc/gupnp-sections.txt: * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-proxy.h: Document callback prototypes. * libgupnp/gupnp-service-info.c: (got_scpd_url), (gupnp_service_info_get_introspection_async): * tests/test-introspection.c: (print_state_variables): Switch the order of the 'error' and 'user-data' arguments in the async introspection retrieval callback, so that 'user-data' is now last for consistency. 2007-07-26 Jorn Baayen * gupnp-1.0.pc.in: List all dependencies. 2007-07-26 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: (gupnp_service_action_arg_info_free), (gupnp_service_action_info_free), (gupnp_service_introspection_finalize), (get_actions), (get_state_variables), (construct_introspection_info), (collect_action_names), (collect_variable_names), (gupnp_service_introspection_new), (gupnp_service_introspection_list_action_names), (gupnp_service_introspection_list_actions), (gupnp_service_introspection_list_state_variables), (gupnp_service_introspection_list_state_variable_names): Get rid of the hashtables since the function that needed them have been removed. 2007-07-25 Zeeshan Ali * libgupnp/gupnp-service-introspection.h: Fix struct docs for gtk-doc. 2007-07-25 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-service-introspection.h: Add docs for structs and only mention once the extremely dependency on the availability of SCPD. :) 2007-07-25 Jorn Baayen * libgupnp/gupnp-service-introspection.c: Added a comment warning people against using introspection in regular apps. 2007-07-25 Jorn Baayen A doc/gupnp-sections.txt: * libgupnp/gupnp-error.c: * libgupnp/gupnp-service-introspection.h: * libgupnp/gupnp-service.h: * libgupnp/gupnp-types.c: Doc polish. 2007-07-25 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-service-introspection.h: Remove unneeded functions. 2007-07-25 Jorn Baayen * README: Added text from website. 2007-07-25 Jorn Baayen * libgupnp/gupnp-device.c: (gupnp_device_get_device), (gupnp_device_get_service), (gupnp_device_get_property), (gupnp_device_dispose), (gupnp_device_init), (gupnp_device_class_init), (_gupnp_device_find_element_for_udn): * libgupnp/gupnp-root-device.c: (gupnp_root_device_new): * libgupnp/gupnp-service-private.h: * libgupnp/gupnp-service.c: (gupnp_service_action_return_error), (gupnp_service_constructor), (gupnp_service_set_property), (gupnp_service_get_property), (gupnp_service_dispose), (gupnp_service_finalize), (gupnp_service_class_init), (notify_got_response), (notify_subscriber), (create_property_set), (flush_notifications), (gupnp_service_notify_value), (gupnp_service_freeze_notify), (gupnp_service_thaw_notify), (_gupnp_service_new): Devices and Services reference their RootDevice. On RootDevice unavailability Service purges its subscriptions. * tests/test-server.c: (main): Unref content_dir. 2007-07-25 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_dispose): * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose), (subscribe_got_response), (gupnp_service_proxy_set_subscribed): Unsubscribe proxies automatically only at control point dispose. 2007-07-25 Jorn Baayen * libgupnp/gupnp-control-point.c: (load_description), (gupnp_control_point_resource_unavailable): Destroy proxy before destroying the associated xmlDoc. * libgupnp/gupnp-error.h: * libgupnp/gupnp-service-info.c: (gupnp_service_info_get_introspection), (gupnp_service_info_get_introspection_async): * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist), (subscription_expire), (subscribe), (unsubscribe): * libgupnp/gupnp-service.c: (notify_subscriber): Better invalid URL error handling. * tests/Makefile.am: R tests/test-client.c: A tests/test-browsing.c: (device_proxy_unavailable_cb): A tests/test-proxy.c: Split out test-client into test-browsing and test-proxy better illustrating how to use the API. 2007-07-25 Jorn Baayen * libgupnp/gupnp-service.c: (gupnp_service_init), (gupnp_service_finalize), (notify_got_response): Create & destroy notify queue. * libgupnp/gupnp-service.h: Added 'const' to constant signal arguments. * tests/test-client.c: (device_proxy_unavailable_cb), (service_proxy_available_cb): Connect to 'subscription-lost' signal. * tests/test-server.c: (browse_cb), (query_cb), (main): Connect to 'notify-failed' signal. Print action locales. Test gupnp_service_notify(). 2007-07-25 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (subscribe_got_response): Remove server handler on all subscription errors. 2007-07-25 Jorn Baayen * libgupnp/gupnp-marshal.list: * libgupnp/gupnp-service.c: (gupnp_service_class_init): Don't box the to-be-filled GValue. * tests/test-client.c: (notify_cb), (service_proxy_available_cb): * tests/test-server.c: (browse_cb), (main): Test event notification. 2007-07-25 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (server_handler): Remove debug spew. 2007-07-25 Jorn Baayen * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-types.c: Doc polish. 2007-07-24 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: (gupnp_service_state_variable_info_free), (gupnp_service_action_info_free), (gupnp_service_introspection_finalize), (set_string_value_limits), (get_action_arguments), (action_argument_list_free), (get_actions), (collect_hash_keys), (collect_action_arguments), (collect_actions), (collect_state_variables): * libgupnp/gupnp-service-introspection.h: * libgupnp/gupnp-service.c: (gupnp_service_constructor): * tests/test-introspection.c: (print_action_arguments), (print_actions), (print_state_variables): Use GList instead of GSList for compatibility with the rest of the library. 2007-07-24 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (server_handler): Don't allow g_main_context_iteration() to block. 2007-07-24 Jorn Baayen * configure.ac: Depend on gssdp 0.3. * libgupnp/gupnp-control-point.c: (gupnp_control_point_resource_unavailable): Don't depend on deleted list items in loop. 2007-07-24 Jorn Baayen * NEWS: Added news items for 0.2. 2007-07-23 Jorn Baayen * libgupnp/gupnp-control-point.c: (load_description): * libgupnp/gupnp-service-info.c: (gupnp_service_info_get_introspection), (gupnp_service_info_get_introspection_async): * libgupnp/gupnp-service-proxy.c: (subscription_expire), (subscribe), (unsubscribe): * libgupnp/gupnp-service.c: (notify_subscriber): Warn on invalid URL (don't crash!). 2007-07-23 Jorn Baayen * libgupnp/gupnp-marshal.list: * libgupnp/gupnp-service-proxy.c: (server_handler), (subscription_expire), (subscribe_got_response), (subscribe): * libgupnp/gupnp-service.c: (parse_timeout), (subscribe), (subscription_server_handler), (gupnp_service_constructor), (gupnp_service_finalize), (gupnp_service_class_init), (gupnp_service_notify), (gupnp_service_notify_valist), (notify_got_response), (notify_subscriber), (create_property_set), (flush_notifications), (gupnp_service_notify_value): * libgupnp/gupnp-service.h: Handle multiple callbacks URLs. Send initial event message. 2007-07-23 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: (construct_introspection_info), (collect_hash_keys), (gupnp_service_introspection_list_action_names), (gupnp_service_introspection_list_state_variable_names): * libgupnp/gupnp-service-introspection.h: - Add _list_state_variable_names() method. - a minor optimization. * tests/test-introspection.c: (service_proxy_available_cb): centralize the error handling. 2007-07-23 Jorn Baayen * libgupnp/gupnp-service-info.c: (gupnp_service_info_get_introspection), (got_scpd_url): * libgupnp/gupnp-service-introspection.c: (gupnp_service_introspection_set_property), (gupnp_service_introspection_finalize): Don't keep xmlDoc around longer than necessary. 2007-07-23 Zeeshan Ali Jorn Baayen * libgupnp/gupnp-error.c: * libgupnp/gupnp-error-private.h: * libgupnp/gupnp-service-proxy.c: Add & use server error utility functions. * libgupnp/gupnp-service-info.c: (gupnp_service_info_get_introspection), (scpd_loaded), (got_scpd_url), (gupnp_service_info_get_introspection_async): * libgupnp/gupnp-service-info.h: Report non-programmer errors using GError. * libgupnp/gupnp-service-introspection.c: (gupnp_service_introspection_set_property), (construct_introspection_info), (gupnp_service_introspection_new), (gupnp_service_introspection_get_state_variable): Fix some typos and conditions. * tests/test-introspection.c: (got_introspection), (service_proxy_available_cb): Update the test app to use the new GError-using API. 2007-07-11 Jorn Baayen * libgupnp/gupnp-error.h: * libgupnp/gupnp-service-proxy.c: (set_error_literal), (gupnp_service_proxy_end_action_valist): Propagate UPnPError codes. 2007-07-11 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist): Set error if no controlURL is defined. 2007-07-08 Jorn Baayen * libgupnp/gupnp-control-point.c: (got_description_url), (load_description): Fix description doc refcounting bugs. 2007-07-08 Jorn Baayen * libgupnp/gupnp-control-point.c: (description_loaded): * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property): * libgupnp/gupnp-service-info.c: (gupnp_service_info_set_property): Each info object stores its own copy of the URLBase SoupUri. 2007-07-08 Jorn Baayen * libgupnp/gupnp-control-point.c: (process_service_list), (process_device_list), (load_description), (gupnp_control_point_resource_unavailable): * libgupnp/gupnp-service-proxy-private.h: Correct constructor argument order. Plug leak. Update ref count on cached description doc correctly. 2007-07-08 Zeeshan Ali Jorn Baayen * libgupnp/gupnp-service-info.c: (get_scpd_url_data_free), (gupnp_service_info_class_init), (gupnp_service_info_get_introspection), (scpd_ready), (got_scpd_url), (gupnp_service_info_get_introspection_async): * libgupnp/gupnp-service-info.h: Use a callback instead of a signal. * tests/test-introspection.c: (interrupt_signal_handler), (got_introspection), (service_proxy_available_cb), (main): - Use the new callback API. - Terminate cleanly on SIGTERM. * tests/test-client.c: (interrupt_signal_handler), (main): * tests/test-server.c: (interrupt_signal_handler), (main): Terminate cleanly on SIGTERM. 2007-07-07 Jorn Baayen * doc/gupnp-docs.sgml: * libgupnp/gupnp-types.h: Include gupnp-types in doc TOC. 2007-07-07 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_dispose): * libgupnp/gupnp-service-info.c: (gupnp_service_info_dispose): * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_cancel_action): Set message status to SOUP_STATUS_CANCELLED before cancelling. * libgupnp/gupnp-service-proxy.c: Elaborate begin_action() comments. 2007-07-07 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-types-private.h: * libgupnp/gupnp-types.c: (gupnp_type_to_string): * libgupnp/gupnp-types.h: Make private gupnp_data_type_to_gtype(). Add gupnp_value_get_string() macro. * libgupnp/xml-util.c: (xml_util_node_get_content_value): Smarter value transformation like in ServiceProxy. 2007-07-07 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_resource_unavailable): Handle resource-unavailable in the same way. 2007-07-07 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_finalize), (process_service_list), (process_device_list), (description_loaded), (got_description_url): * libgupnp/gupnp-device-proxy-private.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_device), (gupnp_device_proxy_get_service): * libgupnp/gupnp-device.c: (gupnp_device_get_device), (gupnp_device_get_service), (_gupnp_device_find_element_for_udn): * libgupnp/gupnp-service-private.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_get_subscribed): * libgupnp/gupnp-service.c: (gupnp_service_thaw_notify): Create proxies for all, not just one, matching devices and services. 2007-07-07 Jorn Baayen * libgupnp/gupnp-service-info.c: (gupnp_service_info_get_property), (gupnp_service_info_dispose): Rearrange some code. 2007-07-07 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-service-info.c: * libgupnp/gupnp-service-introspection-private.h: * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-service-introspection.h: * libgupnp/gupnp.h: Make introspection constructor private. 2007-07-07 Jorn Baayen * libgupnp/gupnp-service-proxy.c: * libgupnp/gupnp-types.c: Handle conversion of strings to GUPnP string-based types. 2007-07-06 Zeeshan Ali Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-types.h: * libgupnp/gupnp-types.c: (gupnp_type_to_string), (gupnp_bin_base64_get_type), (gupnp_bin_hex_get_type), (gupnp_date_get_type), (gupnp_date_time_get_type), (gupnp_date_time_tz_get_type), (gupnp_time_get_type), (gupnp_time_tz_get_type), (gupnp_uri_get_type), (gupnp_uuid_get_type), (gupnp_data_type_to_gtype): Introduce new types for some UPnP data types that do not have a direct equivalent in glib. * libgupnp/xml-util.c: (xml_util_get_attribute_contents): * libgupnp/xml-util.h: Add helper function for getting the contents of an attribute. * libgupnp/gupnp-service-introspection.c: (gupnp_service_state_variable_info_free), (gupnp_service_introspection_set_property), (gupnp_service_introspection_finalize), (gupnp_service_introspection_class_init), (set_variable_type), (get_state_variable), (get_action_argument), (contstruct_introspection_info), (gupnp_service_introspection_new): * libgupnp/gupnp-service-introspection.h: - Use the new GUPnP types instead of string type for some UPnP types. - Take a pointer to SCPD xml instead of it's url in the constructor and leave the download of the document to the caller. - Expect documents to specify 'sendEvents' as an attribute of the state variable node. * libgupnp/gupnp-service-info.c: (gupnp_service_info_init), (get_scpd_url_data_free), (gupnp_service_info_dispose), (gupnp_service_info_class_init), (get_scpd), (gupnp_service_info_get_introspection), (scpd_ready), (got_scpd_url), (gupnp_service_info_get_introspection_async): * libgupnp/gupnp-service-info.h: - Handle the SCPD GET for and provide introspection's constructor a pointer to the xml document rather than the SCPD URL. - Provide an asynchronous way of geting the introspection object. * tests/test-introspection.c: (print_state_variables), (got_introspection), (service_proxy_available_cb), (main): Provide a way to specify that the introspection object be created/requested asynchronously through a command-line argument. 2007-07-04 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: (gupnp_service_state_variable_info_free), (gupnp_service_action_info_free), (gupnp_service_introspection_finalize), (set_variable_limits), (set_variable_type), (get_action_argument), (gupnp_service_action_arg_info_free), (collect_action_names), (collect_action_arguments), (collect_actions), (collect_state_variables), (gupnp_service_introspection_list_action_names), (gupnp_service_introspection_list_action_arguments), (gupnp_service_introspection_list_actions), (gupnp_service_introspection_list_state_variables), (gupnp_service_introspection_get_state_variable): * libgupnp/gupnp-service-introspection.h: * tests/test-introspection.c: (print_action_arguments), (print_actions), (print_state_variables): - Return local copies of data to avoid malloc()s and free()s. - Cache the returned GSLists to avoid allocating the list each time. - return a 'const' from each function and update doc comments to make it very clear to the user that the return data can't be modified or freed. - Rename 'gtype' field to 'type' for consistancy. - Introduce an enum type for the direction of the action argument and use that instead of a string. - Add a function for getting state variable information by name. 2007-07-01 Jorn Baayen * libgupnp/gupnp-service-proxy.c: Remove unused includes. 2007-07-01 Jorn Baayen * libgupnp/gupnp-device-info.c: (gupnp_device_info_list_device_types), (gupnp_device_info_list_service_types): Use xml_util_get_child_element_content_glib(). 2007-07-01 Jorn Baayen * doc/gupnp-docs.sgml: * libgupnp/gupnp-control-point.c: * libgupnp/gupnp-device-info.c: (gupnp_device_info_class_init): * libgupnp/gupnp-device-proxy.c: * libgupnp/gupnp-device.c: * libgupnp/gupnp-service-info.c: (gupnp_service_info_class_init): * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-service-proxy.c: * libgupnp/gupnp-service.c: Documentation updates. 2007-07-01 Jorn Baayen * libgupnp/gupnp-service-introspection.c: (gupnp_service_introspection_finalize), (contstruct_introspection_info): Added small optimization + missing NULL checks. 2007-07-01 Jorn Baayen * libgupnp/gupnp-device-info.c: * libgupnp/gupnp-device-proxy.c: (_gupnp_device_proxy_new_from_doc): * libgupnp/gupnp-root-device.c: (gupnp_root_device_constructor): * libgupnp/gupnp-service-info.c: (gupnp_service_info_finalize), (gupnp_service_info_get_udn): * libgupnp/gupnp-service-introspection.c: (set_variable_type), (get_state_variable), (get_action_argument), (get_actions), (get_state_variables): * libgupnp/gupnp-service-proxy.c: (_gupnp_service_proxy_new_from_doc): * libgupnp/xml-util.c: (xml_util_get_element): * libgupnp/xml-util.h: Add more shared XML helpers. 2007-07-01 Jorn Baayen * libgupnp/gupnp-device-info.c: (get_property), (gupnp_device_info_get_friendly_name), (gupnp_device_info_get_manufacturer), (gupnp_device_info_get_model_name), (gupnp_device_info_get_model_number): Use get_url_property() for all URL properties. 2007-07-01 Jorn Baayen * libgupnp/gupnp-service.c: (gupnp_service_class_init): Use G_TYPE_VALUE for "value" argument on "query-variable" signal. 2007-07-01 Jorn Baayen * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property), (gupnp_device_info_get_property), (gupnp_device_info_finalize), (gupnp_device_info_class_init), (icon_parse): * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_device), (gupnp_device_proxy_get_service), (_gupnp_device_proxy_new_from_doc), (_gupnp_device_proxy_new_from_element): * libgupnp/gupnp-device.c: (gupnp_device_get_device), (gupnp_device_get_service), (_gupnp_device_new_from_element): * libgupnp/gupnp-service-info.c: (gupnp_service_info_set_property), (gupnp_service_info_get_property), (gupnp_service_info_finalize), (gupnp_service_info_class_init), (get_url_property): * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-private.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (_gupnp_service_proxy_new_from_doc), (_gupnp_service_proxy_new_from_element): * libgupnp/gupnp-service.c: (_gupnp_service_new_from_element): Store URL base as SoupUri, and use description file location as URL base if no base is specified explicitly. * libgupnp/gupnp-root-device.c: (gupnp_root_device_finalize), (gupnp_root_device_set_property), (gupnp_root_device_get_property), (gupnp_root_device_constructor): * libgupnp/gupnp-root-device.h: Remove API for setting URL base as the explicit specification of a URL base is discouraged. Don't autohost description file. * tests/test-server.c: (main): Updated for changed API. 2007-06-30 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action): Use M-POST when POST fails. 2007-06-30 Jorn Baayen * libgupnp/gupnp-error.h: * libgupnp/gupnp-service.c: (gupnp_service_action_return_error): Fill in description automatically for known error codes. * libgupnp/gupnp-service-proxy.c: (convert_error_code): Handle unknown error codes. 2007-06-30 Jorn Baayen * libgupnp/gupnp-error.c: * libgupnp/gupnp-error.h: * libgupnp/gupnp-service-proxy.c: (set_error_literal), (convert_error_code), (gupnp_service_proxy_end_action_valist), (subscription_expire), (subscribe_got_response): * libgupnp/gupnp-service.c: (notify_got_response): More detailed erroring. 2007-06-30 Jorn Baayen * libgupnp/gupnp-error.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist), (set_error_literal), (gupnp_service_proxy_end_action_valist), (subscribe_got_response): * libgupnp/gupnp-service.c: (notify_got_response): Don't report GValue errors through GError, and define error codes. 2007-06-30 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_end_action), (gupnp_service_proxy_end_action_valist): Added set_error_literal() helper function. 2007-06-30 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_end_action_valist): Handle SOAP Faults. * libgupnp/gupnp-service.c: (gupnp_service_action_set_value), (gupnp_service_action_return_error): Return SOAP Fault in correct format. * tests/test-client.c: (service_proxy_available_cb): Return on error. 2007-06-30 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (subscribe_got_response): Remove obsolete comment and correct warning message. * libgupnp/gupnp-service.c: (subscription_response), (subscription_timeout), (parse_timeout), (subscribe), (resubscribe): Return correct timeout to subscriber. 2007-06-30 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_resource_unavailable): Remove unavailable device from correct list! 2007-06-29 Jorn Baayen * AUTHORS: Added Zeeshan. 2007-06-29 Zeeshan Ali reviewed by: Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp.h: * libgupnp/gupnp-service-introspection.c: (gupnp_service_introspection_init), (gupnp_service_introspection_set_property), (gupnp_service_introspection_get_property), (gupnp_service_introspection_dispose), (gupnp_service_introspection_finalize), (gupnp_service_introspection_class_init), (get_scpd), (set_default_value), (set_string_value_limits), (set_value_limit_by_name), (set_variable_limits), (set_variable_type), (get_state_variable), (get_action_argument), (get_action_arguments), (action_argument_list_free), (get_actions), (get_state_variables), (contstruct_introspection_info), (collect_action_names), (collect_action_arguments), (collect_actions), (collect_allowed_values), (copy_state_variable), (collect_state_variables), (gupnp_service_introspection_new), (gupnp_service_introspection_list_action_names), (gupnp_service_introspection_list_action_arguments), (gupnp_service_introspection_list_actions), (gupnp_service_action_arg_info_free), (gupnp_service_action_info_free), (gupnp_service_introspection_list_state_variables), (gupnp_service_state_variable_info_free): * libgupnp/gupnp-service-introspection.h: Add service introspection support. * libgupnp/gupnp-service-info.c: (gupnp_service_proxy_request_introspection): * libgupnp/gupnp-service-info.h: - Add service introspection support. * tests/Makefile.am: * tests/test-introspection.c: (print_action_arguments), (print_actions), (print_state_variables), (service_proxy_available_cb), (service_proxy_unavailable_cb), (main): Add a test application for the introspection API. 2007-06-27 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_send_action_valist): Only run the main loop if it hasn't been quit before yet. Fixes a hang. 2007-06-27 Jorn Baayen * libgupnp/gupnp-service.c: (subscription_data_free), (subscribe), (gupnp_service_constructor), (gupnp_service_finalize), (gupnp_service_class_init), (gupnp_service_notify_valist), (notify_got_response), (notify_subscriber), (flush_notifications), (gupnp_service_notify_value), (gupnp_service_freeze_notify), (gupnp_service_thaw_notify): * libgupnp/gupnp-service.h: Implement notification. 2007-06-27 Jorn Baayen * configure.ac: Depend on uuid. * libgupnp/gena-protocol.h: Added minimum timeout value. * libgupnp/gupnp-context.c: (gupnp_context_class_init): Use minimum timeout value. * libgupnp/gupnp-service.c: (gupnp_service_action_return_error), (gupnp_service_init), (query_state_variable), (control_server_handler), (subscription_response), (generate_sid), (subscription_timeout), (parse_timeout), (subscribe), (resubscribe), (unsubscribe), (subscription_server_handler), (gupnp_service_constructor), (gupnp_service_finalize), (gupnp_service_class_init), (gupnp_service_notify), (gupnp_service_notify_valist), (gupnp_service_notify_value), (gupnp_service_freeze_notify), (gupnp_service_thaw_notify), (_gupnp_service_new_from_element): Implement subscription. 2007-06-27 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-error.h: * libgupnp/gupnp-service.c: (gupnp_service_action_return_error), (query_state_variable), (control_server_handler): * libgupnp/gupnp-service.h: * libgupnp/upnp-protocol.h: More flexible error handling. 2007-06-27 Jorn Baayen * libgupnp/gupnp-service.c: (gupnp_service_action_get_value), (gupnp_service_action_set_valist), (gupnp_service_action_set_value), (gupnp_service_action_return), (gupnp_service_action_return_error), (gupnp_service_init), (new_action_response_node), (query_state_variable), (control_server_handler), (gupnp_service_notify_valist), (gupnp_service_notify_value), (gupnp_service_freeze_notify), (gupnp_service_thaw_notify), (_gupnp_service_new_from_element): * libgupnp/gupnp-service.h: Fully implement actioning. * libgupnp/Makefile.am: * libgupnp/gupnp-error.h: * libgupnp/upnp-protocol.h: Added error codes and descriptions. * libgupnp/xml-util.c: (xml_util_node_get_content_int): * libgupnp/xml-util.h: Added xml_util_node_get_content_value() for retrieving xmlNode contents as GValues. * libgupnp/gupnp-service-proxy.c: (server_handler): Use xml_util_node_get_content_value(). * tests/test-server.c: (browse_cb): Test actioning. 2007-06-26 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_end_action_valist): Small cleanup. * libgupnp/gupnp-service.c: (gupnp_service_action_get_locales), (gupnp_service_action_get), (gupnp_service_action_get_valist), (gupnp_service_action_get_value), (gupnp_service_action_set), (gupnp_service_action_set_valist), (gupnp_service_action_set_value), (gupnp_service_action_return), (gupnp_service_action_return_error), (gupnp_service_class_init), (gupnp_service_notify), (gupnp_service_notify_valist), (gupnp_service_notify_value), (gupnp_service_freeze_notify), (gupnp_service_thaw_notify): Boilerplate code. 2007-06-26 Jorn Baayen * libgupnp/gupnp-service.c: (query_state_variable), (control_server_handler): Implement QueryStateVariable. 2007-06-26 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist): * libgupnp/gupnp-service.c: (gupnp_service_action_get_name), (gupnp_service_action_get_locales), (gupnp_service_action_set_value), (gupnp_service_action_return), (gupnp_service_action_return_error), (gupnp_service_init), (query_state_variable), (control_server_handler), (subscription_server_handler), (gupnp_service_constructor), (gupnp_service_dispose), (gupnp_service_finalize), (gupnp_service_class_init), (gupnp_service_notify), (gupnp_service_notify_valist), (gupnp_service_notify_value), (gupnp_service_freeze_notify), (gupnp_service_thaw_notify), (_gupnp_service_new_from_element): * libgupnp/gupnp-service.h: Basic server-side actioning. No argument handling yet. * tests/test-server.c: (browse_cb), (main): Test actioning. 2007-06-26 Jorn Baayen * libgupnp/accept-language.c: (accept_language_get_header): * libgupnp/accept-language.h: Cleanup, additional functions to convert between locale and HTTP language tag representations. * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist): Updated for accept-language function rename. * configure.ac: Depend on shared-mime-data. * libgupnp/Makefile.am: * libgupnp/xdgmime/Makefile.am: * libgupnp/xdgmime/xdgmime.c: * libgupnp/xdgmime/xdgmime.h: * libgupnp/xdgmime/xdgmimealias.c: * libgupnp/xdgmime/xdgmimealias.h: * libgupnp/xdgmime/xdgmimecache.c: * libgupnp/xdgmime/xdgmimecache.h: * libgupnp/xdgmime/xdgmimeglob.c: * libgupnp/xdgmime/xdgmimeglob.h: * libgupnp/xdgmime/xdgmimeint.c: * libgupnp/xdgmime/xdgmimeint.h: * libgupnp/xdgmime/xdgmimemagic.c: * libgupnp/xdgmime/xdgmimemagic.h: * libgupnp/xdgmime/xdgmimeparent.c: * libgupnp/xdgmime/xdgmimeparent.h: * libgupnp/gupnp-context.c: (hosting_server_handler): Use xdgmime to set correct Content-Type HTTP headers. * tests/test-server.c: (main): Print port number on startup. 2007-06-22 Jorn Baayen * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property), (gupnp_device_info_get_udn): Re-use get_property() in one more spot. * libgupnp/gupnp-service.h: Added G_GNUC_NULL_TERMINATED. * libgupnp/gupnp-root-device.c: (server_handler), (fill_resource_group), (gupnp_root_device_constructor): * libgupnp/xml-util.c: (xml_util_node_get_content_int): * libgupnp/xml-util.h: Move some XML utils to xml-util.c 2007-06-22 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/accept-language.c: * libgupnp/accept-language.h: * libgupnp/gupnp-context.c: (gupnp_context_get_subscription_timeout), (hosting_server_handler), (unregister_hosting_server_handler): Proper Accept-Language support. * libgupnp/gupnp-device.c: (gupnp_device_get_service): * libgupnp/gupnp-service-private.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action), (gupnp_service_proxy_begin_action_valist): * libgupnp/gupnp-service.c: (gupnp_service_action_get_name), (gupnp_service_thaw_notify): * libgupnp/gupnp-service.h: Handle service object creation. 2007-06-19 Jorn Baayen * doc/Makefile.am: * doc/api-design.txt: Remove obsolete API design document. * libgupnp/gupnp-device.c: Small doc correction. * libgupnp/Makefile.am: * libgupnp/gupnp-service.c: * libgupnp/gupnp-service.h: Added Service skels. * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_class_init): Delete obsolete code. 2007-06-19 Jorn Baayen * libgupnp/gupnp-context.c: (_gupnp_context_get_session), (gupnp_context_get_subscription_timeout): * libgupnp/gupnp-context.h: * tests/test-server.c: (main): Add regular web server functionality. 2007-06-19 Jorn Baayen * libgupnp/gupnp-control-point.c: (description_loaded): * libgupnp/gupnp-device-proxy-private.h: * libgupnp/gupnp-device-proxy.c: (_gupnp_device_proxy_find_element_for_udn): * libgupnp/gupnp-device-proxy.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (find_service_element_for_type): * libgupnp/gupnp-service-proxy.h: Make ServiceProxy and DeviceProxy constructors private. 2007-06-19 Jorn Baayen * libgupnp/gupnp-context.c: (gupnp_context_dispose): * libgupnp/gupnp-control-point.c: (gupnp_control_point_dispose): * libgupnp/gupnp-root-device.c: (gupnp_root_device_finalize), (gupnp_root_device_dispose): * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose): Chain up to parent class dispose and finalize methods. 2007-06-19 Jorn Baayen * libgupnp/gupnp-context.c: (gupnp_context_init): Remove unnecessary initialisations. 2007-06-19 Jorn Baayen * libgupnp/gupnp-context.c: (gupnp_context_class_init): * libgupnp/gupnp-device-info.c: (gupnp_device_info_class_init): * libgupnp/gupnp-service-info.c: (gupnp_service_info_class_init): * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_class_init): Added G_PARAM_STATIC_{NAME,NICK,BLURB}. 2007-06-19 Jorn Baayen * tests/test-server.c: (main): Use g_object_weak_ref() to destroy the description document when the root device is finalized. 2007-06-19 Jorn Baayen * libgupnp/gupnp-root-device.c: (fill_resource_group): Do not overwrite 'element' with child elements as it is still needed later. * tests/Makefile.am: * tests/test-server.c: D tests/test.c: A tests/test-client.c: Added server test case. 2007-06-18 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-device.c: * libgupnp/gupnp-root-device.c: * libgupnp/gupnp-root-device.h: Implement Device and RootDevice. * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property), (gupnp_device_info_class_init): Detect UDN if not explicitly specified. * libgupnp/gupnp-control-point.c: (parse_usn): * libgupnp/gupnp-service.h: Fix typos. * libgupnp/gupnp-device-proxy.c: * libgupnp/gupnp-device-proxy.h: No need for a private structure any more. 2007-06-14 Jorn Baayen * libgupnp/gupnp-context.c: (get_default_host_ip): Set IP to 127.0.0.1 if no non-loopback device could be found. * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property), (gupnp_device_info_get_property), (gupnp_device_info_dispose), (gupnp_device_info_finalize), (gupnp_device_info_class_init), (gupnp_device_info_get_context), (gupnp_device_info_get_location), (gupnp_device_info_get_url_base), (gupnp_device_info_get_udn), (get_property), (gupnp_device_info_get_serial_number), (gupnp_device_info_get_upc), (icon_parse), (icon_free), (gupnp_device_info_get_icon_url), (gupnp_device_info_list_devices), (gupnp_device_info_list_device_types), (gupnp_device_info_get_device), (gupnp_device_info_list_services), (gupnp_device_info_list_service_types), (gupnp_device_info_get_service): * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_new): * libgupnp/gupnp-service-info.c: (gupnp_service_info_set_property), (gupnp_service_info_get_property), (gupnp_service_info_dispose), (gupnp_service_info_finalize), (gupnp_service_info_class_init), (gupnp_service_info_get_context), (gupnp_service_info_get_location), (gupnp_service_info_get_url_base), (gupnp_service_info_get_udn), (get_property), (get_url_property): * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_class_init), (gupnp_service_proxy_new): Add 'context' and 'url-base' properties to info classes. * libgupnp/gupnp-service.h: * libgupnp/gupnp-root-device.h: Server side API changes. 2007-06-11 Jorn Baayen * libgupnp/gupnp-root-device.h: * libgupnp/gupnp-service.h: API tweaks. 2007-06-11 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-device.h: * libgupnp/gupnp-root-device.h: * libgupnp/gupnp-service.h: * libgupnp/gupnp.h: Headers for server side. These are not final yet. 2007-05-30 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_resource_unavailable): Remove unavailable proxies from cache. 2007-05-29 Jorn Baayen * configure.ac: Bump version to 0.1.99. * libgupnp/gupnp-device-info.c: (gupnp_device_info_get_icon_url): * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_url_base), (gupnp_device_proxy_get_device), (gupnp_device_proxy_get_service), (gupnp_device_proxy_init), (gupnp_device_proxy_class_init): * libgupnp/gupnp-device-proxy.h: Move device subdevice and service retreival from DeviceProxy to DeviceInfo. This so that client and server side code can expose identical info API. * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action), (get_current_language), (action_got_response), (gupnp_service_proxy_begin_action_valist): * tests/test.c: (main): Set Accept-Language header on action requests. 2007-05-26 Jorn Baayen * libgupnp/gupnp-context.c: * libgupnp/gupnp-context.h: * libgupnp/gupnp-control-point.c: * libgupnp/gupnp-control-point.h: * libgupnp/gupnp-device-info.c: * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy.c: * libgupnp/gupnp-device-proxy.h: * libgupnp/gupnp-error.c: * libgupnp/gupnp-service-info.c: * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-proxy.c: * libgupnp/gupnp-service-proxy.h: More gtkdoc-fu. 2007-05-26 Jorn Baayen * configure.ac: * doc/Makefile.am: * doc/gupnp-docs.sgml: Added doc preamble. 2007-05-22 Jorn Baayen * libgupnp/gupnp-device-proxy.h: * libgupnp/gupnp-service-proxy.h: Doc coverage to 100%. 2007-05-21 Jorn Baayen * libgupnp/Makefile.am: Make sure all files get packaged. * libgupnp/gupnp-context.c: (gupnp_context_class_init): * libgupnp/gupnp-context.h: * libgupnp/gupnp-control-point.c: (gupnp_control_point_class_init): * libgupnp/gupnp-control-point.h: * libgupnp/gupnp-device-info.c: (gupnp_device_info_class_init), (icon_parse), (icon_free): * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-error.c: * libgupnp/gupnp-service-info.c: (gupnp_service_info_class_init), (get_url_property), (gupnp_service_info_get_service_type), (gupnp_service_info_get_id), (gupnp_service_info_get_scpd_url), (gupnp_service_info_get_control_url): * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_class_init): Doc updates. 2007-05-21 Jorn Baayen * doc/Makefile.am: Hide private bits. * doc/gupnp-docs.sgml: Added. 2007-05-21 Jorn Baayen * configure.ac: Point to gupnp.org. * po/*: Added missing files. 2007-05-10 Jorn Baayen * NEWS: * README: Added some text. * libgupnp/gupnp-device-info.h: Removed device type defines. These belong in any higher level libs now. * tests/test.c: (device_proxy_available_cb), (service_proxy_available_cb), (service_proxy_unavailable_cb), (main): Added notification test and cleaned up. 2007-05-09 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (server_handler): Parse XML part of NOTIFY messages and call notify callbacks. This means that now the client side of GUPnP is feature complete. Yay! * tests/test.c: Remove old comments. 2007-05-09 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_get_element), (gupnp_service_proxy_get_url_base), (notify_data_free), (gupnp_service_proxy_init), (gupnp_service_proxy_dispose), (gupnp_service_proxy_finalize), (gupnp_service_proxy_end_action_valist), (gupnp_service_proxy_cancel_action): * libgupnp/gupnp-service-proxy.h: Add notification management. 2007-05-09 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_end_action_valist): Correct error message. 2007-05-09 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (server_handler), (subscription_expire), (subscribe_got_response), (subscribe), (unsubscribe): Emit 'subscription-lost' when appropriate. Keep track of notify sequence numbers and resubscribe when we notice dropped notifications. 2007-05-09 Jorn Baayen * libgupnp/gupnp-context-private.h: * libgupnp/gupnp-context.c: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_finalize), (gupnp_service_proxy_remove_notify), (subscription_expire), (subscribe_got_response), (subscribe), (unsubscribe): Generate a unique path for each proxy on the server, and use soup_server_add_handler() to capture its requests instead of using a 'server-message-received' signal from GUPnPContext. 2007-05-09 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_remove_notify), (subscription_expire), (subscribe_got_response), (subscribe), (unsubscribe): Correct "Callback" URL format is subscription message. Disable Date header parsing for now as getting a local time (taking into account daylight saving) out of an RFC 1123 time is a total pain. 2007-05-09 Jorn Baayen * libgupnp/gupnp-context-private.h: * libgupnp/gupnp-context.c: (gupnp_context_class_init), (_gupnp_context_get_session), (server_handler), (_gupnp_context_get_server): Add hidden 'server-message-received' signal, emitted whenever the SoupServer receives a message. 2007-05-09 Jorn Baayen * libgupnp/gupnp-context.c: (_gupnp_context_get_session), (default_server_handler), (_gupnp_context_get_server), (gupnp_context_get_port), (gupnp_context_set_subscription_timeout): * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_remove_notify), (make_timeout_header), (subscription_expire), (subscribe_got_response), (subscribe): Support infinite timeout locally. Add a default server handler returning 501. 2007-05-08 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose), (subscribe), (unsubscribe), (gupnp_service_proxy_set_subscribed): Send unsubscription message synchronised on dispose. 2007-05-08 Jorn Baayen * libgupnp/gupnp-context.c: (gupnp_context_init), (gupnp_context_set_property), (gupnp_context_get_property), (gupnp_context_class_init), (_gupnp_context_get_server_url), (gupnp_context_new): * libgupnp/gupnp-context.h: * libgupnp/gupnp-service-proxy.c: (subscription_expire), (subscribe_got_response), (subscribe): Added subscription-timeout property to Context and use in ServiceProxy. 2007-05-08 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (subscribe_got_response): Support infinite timeouts. 2007-05-08 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-device-proxy.c: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose), (gupnp_service_proxy_begin_action), (action_got_response), (gupnp_service_proxy_end_action_valist), (gupnp_service_proxy_remove_notify), (subscription_expire), (subscribe_got_response), (subscribe), (unsubscribe), (gupnp_service_proxy_set_subscribed): Implement subscription. * tests/test.c: (service_proxy_available_cb): Test subscription. 2007-05-08 Jorn Baayen * libgupnp/gupnp-context-private.h: * libgupnp/gupnp-context.c: (make_server_id), (get_ip), (get_default_host_ip), (gupnp_context_init), (gupnp_context_set_property), (gupnp_context_get_property), (gupnp_context_dispose), (gupnp_context_finalize), (gupnp_context_class_init), (_gupnp_context_get_session): * libgupnp/gupnp-context.h: Start a SOAP server on demand, and add internal API for retrieving a URL to the server itself. * tests/test.c: (main): Updated to use changed GUPnPContext constructor. 2007-05-07 Jorn Baayen * libgupnp/gupnp-device-info.c: (icon_parse), (icon_free), (gupnp_device_info_get_icon_url): * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_finalize), (gupnp_device_proxy_get_element), (gupnp_device_proxy_get_url_base), (gupnp_device_proxy_init), (gupnp_device_proxy_list_devices), (gupnp_device_proxy_get_device), (gupnp_device_proxy_list_services), (gupnp_device_proxy_get_service), (_gupnp_device_proxy_find_element_for_udn), (gupnp_device_proxy_new), (_gupnp_device_proxy_new_from_element): * libgupnp/gupnp-service-info.c: (get_property), (gupnp_service_info_get_service_type), (gupnp_service_info_get_id), (gupnp_service_info_get_scpd_url), (gupnp_service_info_get_control_url): * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_action_free), (gupnp_service_proxy_get_element), (gupnp_service_proxy_get_property), (gupnp_service_proxy_dispose), (gupnp_service_proxy_finalize), (gupnp_service_proxy_class_init), (gupnp_service_proxy_send_action_valist), (gupnp_service_proxy_begin_action_valist), (gupnp_service_proxy_end_action), (gupnp_service_proxy_end_action_valist), (find_service_element_for_type), (gupnp_service_proxy_new), (_gupnp_service_proxy_new_from_element): Take URLBase into account. Make sending actions and parsing action responses work correctly. * tests/test.c: (service_proxy_available_cb), (service_proxy_unavailable_cb), (main): Add a little control test case for ContentDirectories. 2007-05-07 Jorn Baayen * libgupnp/gupnp-control-point.c: (description_loaded), (parse_usn): Correct USN parsing. * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist): Added assertion. 2007-05-03 Jorn Baayen * libgupnp/gupnp-control-point.c: (parse_usn), (gupnp_control_point_resource_available), (gupnp_control_point_class_init), (gupnp_control_point_get_context): * libgupnp/gupnp-control-point.h: * tests/test.c: (main): GSSDPServiceBrowser -> GSSDPResourceBrowser. 2007-04-25 Zeeshan Ali * libgupnp/gupnp-device-info.h: * tests/test.c: (device_proxy_available_cb): Add some device type defines. 2007-04-16 Jorn Baayen * libgupnp/gupnp-context-private.h: Added missing header. Spotted by Priit Laes.