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