1 2009-01-05 Ross Burton <ross@linux.intel.com>
3 * libgupnp/gena-protocol.h:
4 * libgupnp/gupnp-service-proxy.c:
5 Don't assume subscription timeout is > 30s.
7 Instead choose a random timeout value that is between 1 and half
8 the timeout value given by service (thanks Zeeshan Ali)
10 2008-12-08 Ross Burton <ross@linux.intel.com>
12 * libgupnp/gupnp-device-info.c:
13 Don't look for closest icon if there are no icons. Fixes the crash
14 in case of empty iconList nodes in device descriptions. (thanks
17 2008-11-29 Jorn Baayen <jorn.baayen@collabora.co.uk>
19 * libgupnp/gupnp-device.c (gupnp_device_get_device),
20 (gupnp_device_get_service), (gupnp_device_set_property),
21 (gupnp_device_dispose):
22 * libgupnp/gupnp-service.c (gupnp_service_set_property),
23 (gupnp_service_dispose):
25 Reference the root device weakly to avoid reference loops when
26 subclassing RootDevice. Based on patch from Zeeshan Ali.
28 2008-11-28 Jorn Baayen <jorn.baayen@collabora.co.uk>
30 * libgupnp/gupnp-control-point.c (got_description_url):
31 * libgupnp/gupnp-root-device.c (download_and_parse):
32 * libgupnp/gupnp-service-info.c
33 (gupnp_service_info_get_introspection), (got_scpd_url):
34 * libgupnp/gupnp-service-proxy.c (check_action_response),
36 * libgupnp/gupnp-service.c (control_server_handler):
38 Use xmlRecoverMemory instead of xmlParseMemory when parsing xml.
39 Hopefully we now manage better with the masses of über-broken xml
40 out there. (Thanks Jussi for the suggestion)
42 2008-11-24 Ross Burton <ross@linux.intel.com>
44 * libgupnp/gupnp-resource-factory.c:
45 Use the correct value to key_equal_func argument of
46 g_hash_table_new_full (thanks Zeeshan Ali)
48 2008-11-18 Jorn Baayen <jorn.baayen@collabora.co.uk>
58 * libgupnp/gupnp-error-private.h:
59 * libgupnp/gupnp-error.c (_gupnp_error_set_server_error),
60 (_gupnp_error_new_server_error):
61 * libgupnp/gupnp-service-info.c
62 (gupnp_service_info_get_introspection), (got_scpd_url):
63 * libgupnp/gupnp-service-proxy.c (check_action_response):
65 Use g_set_error_literal(). (instead of our own home-cooked
68 Mark private error functions as G_GNUC_INTERNAL.
70 2008-11-18 Jorn Baayen <jorn.baayen@collabora.co.uk>
72 * libgupnp/gupnp-service-proxy.c (subscribe_got_response):
73 * libgupnp/gupnp-service.c (notify_got_response),
76 Use g_error_new_literal() instead of passing literal error
77 messages through "%s".
79 Specify character set (UTF-8) in NOTIFY messages.
81 2008-11-18 Ross Burton <ross@linux.intel.com>
84 * tests/test-server.c:
85 * tests/test-browsing.c:
86 * tests/test-introspection.c:
87 * examples/light-client.c:
88 * examples/light-server.c:
89 Don't user g_error but g_printerr (Sven Neumann).
91 2008-11-17 Jussi Kukkonen <jku@linux.intel.com>
97 2008-11-14 Ross Burton <ross@linux.intel.com>
99 * libgupnp/gupnp-service-proxy.c:
100 Set the Content Type header correctly (#1257, Zeeshan Ali Khattak)
102 2008-11-14 Ross Burton <ross@linux.intel.com>
104 * libgupnp/gupnp-service.c:
105 * libgupnp/gupnp-service-proxy.c:
106 * tests/test-proxy.c:
107 * tests/test-server.c:
108 * tests/test-browsing.c:
109 * tests/test-introspection.c:
110 * examples/light-client.c:
111 * examples/light-server.c:
112 Don't pass arbitrary strings to printf() for security (thanks Sven Neumann)
114 2008-11-14 Ross Burton <ross@linux.intel.com>
116 * libgupnp/gupnp-context.c:
117 Handle fscanf failing in get_default_host_ip (thanks Sven Neumann).
119 2008-11-14 Ross Burton <ross@linux.intel.com>
121 * libgupnp/gupnp-service-proxy.c:
122 Fix typos (thanks Sven Neumann)
124 2008-11-12 Jussi Kukkonen <jku@linux.intel.com>
129 Add DIDL-Lite and SSDP to glossary, mention upnp and dlna specs.
131 2008-11-11 Jussi Kukkonen <jku@linux.intel.com>
135 Add release instructions for GUPnP components
137 2008-11-06 Zeeshan Ali (Khattak) <zeeshanak@gnome.org>
140 * libgupnp/gupnp-resource-factory-private.h:
141 * libgupnp/gupnp-resource-factory.c:
142 * libgupnp/gupnp-resource-factory.h:
143 * libgupnp/gupnp-service-introspection.c:
144 * libgupnp/gupnp-service-introspection.h:
145 * libgupnp/gupnp-types-private.h:
146 * libgupnp/gupnp-types.c:
147 * libgupnp/gupnp-types.h:
148 * tests/test-introspection.c:
149 Replace my non-working "@gstreamer.net" email with "@gnome.org" one.
151 2008-10-27 Ross Burton <ross@linux.intel.com>
157 2008-10-27 Ross Burton <ross@linux.intel.com>
160 Enable gtk-doc in distcheck.
162 2008-10-27 Ross Burton <ross@linux.intel.com>
164 * libgupnp/http-headers.c:
165 Don't use NULL return values from g_get_application_name() (#1176).
167 2008-10-22 Jussi Kukkonen <jku@linux.intel.com>
169 * tools/gupnp-binding-tool:
171 Use inline functions.
172 Fix generated code indent, remove trailing whitespace.
174 2008-10-20 Jussi Kukkonen <jku@linux.intel.com>
176 * tools/gupnp-binding-tool:
178 Don't include specific glib/gupnp headers, use gupnp.h.
180 2008-10-17 Jussi Kukkonen <jku@linux.intel.com>
182 * tools/gupnp-binding-tool:
184 Add serverside binding generation.
186 * doc/client-tutorial.xml
187 * doc/server-tutorial.xml
188 * doc/gupnp-binding-tool.xml
190 Update documentation for new binding generation.
192 2008-10-17 Jussi Kukkonen <jku@linux.intel.com>
194 * tools/gupnp-binding-tool:
196 gupnp-binding-tool improvements
197 - add support for all upnp types
198 - add "--prefix" option
199 - prettify binding tool output
200 - make var and function names lower_case, not CamelCase
201 - generate state variable notification bindings
202 This change makes gupnp-binding-tool output incompatible with old one
204 2008-10-14 Zeeshan Ali (Khattak) <zeeshanak@gnome.org>
206 * libgupnp/gupnp-service-introspection.c:
208 Add some missing checks for NULL.
210 2008-09-27 Jorn Baayen <jorn@openedhand.com>
212 * doc/gupnp-sections.txt:
213 * libgupnp/gupnp-context-private.h:
214 * libgupnp/gupnp-context.c (gupnp_context_get_property),
215 (gupnp_context_class_init), (gupnp_context_get_session):
216 * libgupnp/gupnp-context.h:
217 * libgupnp/gupnp-control-point.c (gupnp_control_point_dispose),
219 * libgupnp/gupnp-root-device.c (download_and_parse):
220 * libgupnp/gupnp-service-info.c (gupnp_service_info_dispose),
221 (gupnp_service_info_get_introspection),
222 (gupnp_service_info_get_introspection_async):
223 * libgupnp/gupnp-service-proxy.c (gupnp_service_proxy_dispose),
224 (finish_action_msg), (gupnp_service_proxy_cancel_action),
225 (subscription_expire), (subscribe), (unsubscribe):
226 * libgupnp/gupnp-service.c (subscription_data_free),
227 (notify_got_response), (notify_subscriber):
229 Make gupnp_context_get_session() public.
231 2008-09-27 Jorn Baayen <jorn@openedhand.com>
235 Increase version number.
237 2008-09-27 Jorn Baayen <jorn@openedhand.com>
239 * libgupnp/gupnp-context.c (gupnp_context_init),
240 (gupnp_context_constructor), (gupnp_context_class_init),
241 (gupnp_context_get_server), (host_path_handler):
242 * libgupnp/gupnp-resource-factory.c
243 (gupnp_resource_factory_create_device_proxy),
244 (gupnp_resource_factory_create_device),
245 (gupnp_resource_factory_create_service):
246 * libgupnp/gupnp-root-device.c (gupnp_root_device_constructor):
247 * libgupnp/gupnp-service-proxy.c (gupnp_service_proxy_dispose),
248 (emit_notifications), (server_handler), (subscription_expire),
249 (subscribe_got_response), (unsubscribe):
250 * libgupnp/gupnp-service.c (subscription_data_free), (subscribe),
253 Use the specified GMainContext for timeouts and plug several leaks.
255 Based on a patch from Olivier Crete <olivier.crete@collabora.co.uk>.
257 2008-08-30 Jorn Baayen <jorn@openedhand.com>
259 * examples/Makefile.am:
261 Link examples to gthread.
263 2008-08-27 Jorn Baayen <jorn@openedhand.com>
268 Link tests to gthread.
270 2008-07-14 Jorn Baayen <jorn@openedhand.com>
274 Bump version to 0.12.1.99.
276 * libgupnp/gupnp-service.c (finalize_action),
277 (gupnp_service_action_return), (gupnp_service_action_return_error),
278 (control_server_handler), (subscription_server_handler),
279 (gupnp_service_class_init):
281 Support returning actions outside of the 'action-invoked' signal
282 handler. Based on a patch from Zeeshan Ali Khattak
283 <zeenix@gstreamer.net>.
285 2008-06-30 Jorn Baayen <jorn@openedhand.com>
292 2008-06-20 Jorn Baayen <jorn@openedhand.com>
294 * libgupnp/http-headers.c (http_request_get_range):
295 Support Range headers without upper bound.
297 2008-06-20 Jorn Baayen <jorn@openedhand.com>
299 * libgupnp/gupnp-context.c (host_path_handler):
300 Remove superfluous free.
302 2008-06-16 Jorn Baayen <jorn@openedhand.com>
308 2008-06-11 Ross Burton <ross@openedhand.com>
310 * doc/server-tutorial.xml:
311 Add *correct* comments about when query-variable is called.
313 2008-06-11 Ross Burton <ross@openedhand.com>
315 * doc/server-tutorial.xml:
316 Add comments about when query-variable is called.
318 2008-06-10 Ross Burton <ross@openedhand.com>
321 Add links to the cross references.
323 2008-06-10 Ross Burton <ross@openedhand.com>
325 * doc/client-tutorial.xml:
326 * doc/server-tutorial.xml:
327 Lots of proof reading.
329 2008-06-10 Ross Burton <ross@openedhand.com>
331 * examples/BinaryLight1.xml:
332 Use better friendly and model names.
334 2008-06-10 Ross Burton <ross@openedhand.com>
337 Add UDN, fix acronyms.
339 2008-06-10 Ross Burton <ross@openedhand.com>
342 * doc/gupnp-docs.sgml:
343 * doc/gupnp-docs.xml:
344 Rename the main document to .xml, this isn't 1980 any more.
346 2008-06-10 Ross Burton <ross@openedhand.com>
348 * doc/gupnp-binding-tool.xml:
349 * doc/gupnp-docs.sgml:
350 Don't use entities to get the version, use XInclude.
352 2008-06-10 Ross Burton <ross@openedhand.com>
354 * doc/gupnp-binding-tool.xml:
355 * doc/gupnp-docs.sgml:
357 Add a refentry for gupnp-binding-tool and add it to the
360 2008-06-10 Ross Burton <ross@openedhand.com>
363 Add SCPD and remove baseform attributes.
365 2008-06-10 Ross Burton <ross@openedhand.com>
367 * doc/gupnp-docs.sgml:
368 Merge the overview into the tutorial part.
370 2008-06-10 Ross Burton <ross@openedhand.com>
372 * doc/gupnp-docs.sgml:
375 2008-06-10 Ross Burton <ross@openedhand.com>
377 * doc/server-tutorial.xml:
378 Document service description files.
380 2008-06-09 Ross Burton <ross@openedhand.com>
382 * doc/server-tutorial.xml:
383 Talk about the UPnP lightbulb instead of a made up interface, so
384 we can refer to the example code.
386 2008-06-09 Ross Burton <ross@openedhand.com>
391 Add some basic but non-trivial examples.
393 2008-06-09 Ross Burton <ross@openedhand.com>
395 * doc/gupnp-docs.sgml:
399 Add a basic glossary, and reference the Intel UPnP book.
401 2008-06-06 Ross Burton <ross@openedhand.com>
403 * doc/gupnp-docs.sgml:
406 Split the (currently very small) overview out into a separate file.
408 2008-06-06 Ross Burton <ross@openedhand.com>
410 * doc/gupnp-docs.sgml:
411 Add more section IDs.
413 2008-06-05 Zeeshan Ali Khattak <zeenix@gmail.com>
415 * gupnp/libgupnp/gupnp-service.c:
417 Refactor connect_names_to_signal_handlers() function.
419 2008-06-05 Jorn Baayen <jorn@openedhand.com>
421 * libgupnp/gupnp-marshal.list:
422 * libgupnp/gupnp-service.c (gupnp_service_class_init):
423 Revert back to G_TYPE_POINTER for GValue argument type. We do not
424 want the GValue to be boxed as it is passed as an outward argument.
426 * libgupnp/gupnp-service.c (notify_got_response):
427 Cancel subscription on Precondition Failed.
429 2008-06-04 Jorn Baayen <jorn@openedhand.com>
431 * libgupnp/gupnp-root-device.c (download_and_parse),
432 (gupnp_root_device_constructor):
433 Split out description document downloading code into a separate
436 2008-06-04 Jorn Baayen <jorn@openedhand.com>
438 * libgupnp/gupnp-context.c (construct_local_path), (append_locale),
439 (redirect_to_folder), (host_path_handler), (host_path_data_new),
440 (host_path_data_free), (gupnp_context_host_path):
441 * libgupnp/gupnp-control-point.c (load_description):
442 * libgupnp/gupnp-root-device.c (gupnp_root_device_constructor):
443 * libgupnp/gupnp-service-info.c
444 (gupnp_service_info_get_introspection),
445 (gupnp_service_info_get_introspection_async):
446 * libgupnp/gupnp-service-proxy.c (begin_action_msg):
447 * libgupnp/gupnp-service.c (gupnp_service_action_get_locales):
448 * libgupnp/http-headers.c (http_language_from_locale),
449 (locale_from_http_language), (http_request_get_range),
450 (http_request_set_accept_language),
451 (http_request_get_accept_locales), (http_request_set_user_agent),
452 (http_response_set_content_locale),
453 (http_response_set_content_type),
454 (http_response_set_content_range):
455 * libgupnp/http-headers.h:
456 Cleanup of hosting logic.
457 Reprefix message_ functions with http_request_/http_response_.
459 2008-06-03 Jorn Baayen <jorn@openedhand.com>
461 * libgupnp/gupnp-context.c (host_path_handler):
462 Don't free path_to_open too early.
464 2008-06-03 Jorn Baayen <jorn@openedhand.com>
466 * doc/server-tutorial.xml:
467 Update for new gupnp_root_device_new() API.
469 2008-06-03 Jorn Baayen <jorn@openedhand.com>
471 * libgupnp/Makefile.am:
474 * libgupnp/gupnp-context.c (host_path_handler),
475 (gupnp_context_host_path):
476 Fix a couple of bugs regarding Accept-Language handling.
478 * libgupnp/gupnp-control-point.c (load_description):
479 * libgupnp/gupnp-service-proxy.c (begin_action_msg),
480 (finish_action_msg), (check_action_response),
481 (gupnp_service_proxy_cancel_action):
482 * libgupnp/gupnp-service.c (gupnp_service_action_get_locales):
483 * libgupnp/http-headers.c (message_get_range),
484 (message_set_accept_language), (message_get_accept_locales):
485 * libgupnp/http-headers.h:
486 Add Accept-Language header to more messages.
487 Some restructuring for clarity.
489 * libgupnp/gupnp-root-device.c (gupnp_root_device_finalize),
490 (gupnp_root_device_init), (gupnp_root_device_constructor),
491 (gupnp_root_device_new):
492 * libgupnp/gupnp-root-device.h:
493 Remove xmlDoc argument from gupnp_root_device_new() for simplicity.
494 xmlDocs can still be passed to gupnp_root_device_new_full().
496 * tests/test-server.c (main):
497 Update for API change.
499 2008-05-30 Ross Burton <ross@openedhand.com>
501 * doc/server-tutorial.xml:
504 2008-05-29 Ross Burton <ross@openedhand.com>
506 * libgupnp/gupnp-service.c:
507 Add gtk-doc markup to signal names so they are links.
509 2008-05-29 Ross Burton <ross@openedhand.com>
511 * doc/client-tutorial.xml:
512 * doc/gupnp-docs.sgml:
514 Run the client tutorial through gtk-doc for symbol linking and fix
517 2008-05-29 Ross Burton <ross@openedhand.com>
519 * doc/server-tutorial.xml:
520 * doc/gupnp-docs.sgml:
522 Add rather poor first draft of the server guide.
524 2008-05-28 Ross Burton <ross@openedhand.com>
526 * doc/gupnp-sections.txt:
527 Add a symbol which somehow decided it wanted to be documented.
529 2008-05-27 Ross Burton <ross@openedhand.com>
531 * libgupnp/gupnp-service.c:
534 2008-05-27 Ross Burton <ross@openedhand.com>
536 * libgupnp/gupnp-control-point.c:
537 * libgupnp/gupnp-root-device.c:
538 * libgupnp/gupnp-context.c:
539 * libgupnp/gupnp-service-info.c:
540 * libgupnp/gupnp-service-introspection.c:
541 * libgupnp/gupnp-service.c:
542 * libgupnp/http-headers.c:
543 * libgupnp/gupnp-service-proxy.c:
544 * libgupnp/gupnp-device-info.c:
545 * libgupnp/gupnp-resource-factory.c:
546 Documentation cleanups.
548 2008-05-23 Ross Burton <ross@openedhand.com>
550 * tools/gupnp-binding-tool:
551 Add async wrappers too.
553 2008-05-23 Jorn Baayen <jorn@openedhand.com>
555 * libgupnp/gupnp-marshal.list:
556 * libgupnp/gupnp-service.c (gupnp_service_action_get_type),
557 (gupnp_service_class_init):
558 * libgupnp/gupnp-service.h:
560 Use G_TYPE_VALUE and GUPNP_TYPE_SERVICE_ACTION in signal declarations
563 2008-05-22 Ross Burton <ross@openedhand.com>
565 * tools/gupnp-binding-tool:
569 Initial commit of gupnp-binding-tool, to generate convenience C
570 wrappers for GUPnP service definitions.
572 2008-05-22 Jorn Baayen <jorn@openedhand.com>
576 Version to 0.10.1.99.
578 2008-05-22 Ross Burton <ross@openedhand.com>
580 * libgupnp/gupnp-device-info.[ch]:
581 * doc/gupnp-sections.txt:
582 Add gupnp_device_info_get_presentation_url().
584 2008-05-21 Ross Burton <ross@openedhand.com>
586 * libgupnp/gupnp-context.c:
587 When guessing the host's IP address, try and use the default
590 2008-05-19 Jorn Baayen <jorn@openedhand.com>
594 * libgupnp/Makefile.am:
596 Bump soname, and release 0.10.1.
598 2008-05-16 Ross Burton <ross@openedhand.com>
601 * doc/device-description.rnc:
602 * doc/service-description.rnc:
603 * doc/gupnp-docs.sgml:
604 Add RELAX NG schemas for the device and service description files,
605 and add them to the reference manual.
607 2008-05-16 Ross Burton <ross@openedhand.com>
609 * libgupnp/gupnp-types.c:
610 Last missing bit of documentation, now 100% API coverage.
612 2008-05-15 Ross Burton <ross@openedhand.com>
614 * libgupnp/gupnp-context.c:
615 * libgupnp/gupnp-service-info.c:
616 * libgupnp/gupnp-service-introspection.c:
617 * libgupnp/gupnp-types.c:
618 * libgupnp/gupnp-service-proxy.c:
619 * libgupnp/gupnp-device-info.c:
620 * libgupnp/gupnp-error.c:
621 * libgupnp/gupnp-resource-factory.c:
622 * libgupnp/gupnp-error.h:
623 More documentation work, almost at 100% now.
625 2008-05-13 Jorn Baayen <jorn@openedhand.com>
632 2008-05-12 Ross Burton <ross@openedhand.com>
634 * libgupnp/gupnp-types.h:
635 Document the special types.
637 2008-05-12 Ross Burton <ross@openedhand.com>
639 * libgupnp/gupnp-service-info.c:
640 Complete API documentation.
642 2008-05-12 Ross Burton <ross@openedhand.com>
644 * doc/gupnp-docs.sgml:
646 * docs/client-tutorial.xml:
647 Add *very basic* first draft at a tutorial.
649 2008-05-12 Ross Burton <ross@openedhand.com>
651 * libgupnp/gupnp-control-point.c:
652 Document the search target, and enforce target != NULL.
654 2008-05-11 Zeeshan Ali Khattak <zeenix@gmail.com>
656 * libgupnp/gupnp-service.c:
658 Emit a warning on failure to retreive requested action argument.
660 2008-05-11 Zeeshan Ali Khattak <zeenix@gmail.com>
662 * libgupnp/gupnp-context.c:
664 GContentType is not guaranteed to be a mime-type.
666 2008-05-10 Jorn Baayen <jorn@openedhand.com>
668 * libgupnp/gupnp-service-proxy.c (server_handler):
670 Do not error out if proxy->priv->sid is NIL as the subscription
671 response may not have been processed yet.
673 2008-05-09 Jorn Baayen <jorn@openedhand.com>
675 * libgupnp/gupnp-service-proxy.c (emit_notifications),
678 Cosmetic: fit into 80 columns.
680 2008-05-09 Ross Burton <ross@openedhand.com>
682 * libgupnp/gupnp-service-proxy.c:
683 Emit notifications in an idle handler, because some stacks block
684 when sending the NOTIFY message.
686 2008-05-07 Ross Burton <ross@openedhand.com>
688 * libgupnp/gupnp-service.c:
689 Fix typo, remove unused variable.
691 2008-05-07 Jorn Baayen <jorn@openedhand.com>
693 * libgupnp/gupnp-service.c (subscription_data_free),
694 (gupnp_service_dispose), (notify_got_response),
697 Store pending notifications on the SubscriptionData structure.
699 2008-05-07 Ross Burton <ross@openedhand.com>
701 * libgupnp/gvalue-util.c:
702 Fix type marshalling for doubles.
704 2008-05-07 Ross Burton <ross@openedhand.com>
706 * libgupnp/gupnp-control-point.c:
707 * libgupnp/gupnp-control-point.h:
708 * libgupnp/gupnp-root-device.c:
709 * libgupnp/gupnp-context.c:
710 * libgupnp/gupnp-root-device.h:
711 * libgupnp/gupnp-context.h:
712 * libgupnp/gupnp-service-info.h:
713 * libgupnp/gupnp-service.c:
714 * libgupnp/gupnp-service-introspection.h:
715 * libgupnp/gupnp-device.h:
716 * libgupnp/gupnp-service.h:
717 * libgupnp/gupnp-service-proxy.c:
718 * libgupnp/gupnp-device-proxy.h:
719 * libgupnp/gupnp-service-proxy.h:
720 * libgupnp/gupnp-resource-factory.c:
721 * libgupnp/gupnp-device-info.h:
722 * libgupnp/gupnp-resource-factory.h:
723 More documentation tweaks, up to 76% now.
726 * doc/gupnp-sections.txt:
727 Remove unused sections and ignore private headers.
729 2008-05-06 Ross Burton <ross@openedhand.com>
731 * libgupnp/gupnp-context.c:
732 Add the ability to set GUPNP_DEBUG to spew the HTTP messages to
735 2008-05-06 Ross Burton <ross@openedhand.com>
737 * libgupnp/gupnp-control-point.c:
738 * libgupnp/gupnp-service-introspection.c:
739 * libgupnp/gupnp-service-proxy.c:
740 * libgupnp/gupnp-error.c:
741 * libgupnp/gupnp-service-proxy.h:
742 Fix small problems which upset gtk-doc.
744 2008-05-06 Ross Burton <ross@openedhand.com>
746 * doc/gupnp-sections.txt:
749 2008-05-06 Ross Burton <ross@openedhand.com>
752 Add a .types file so the objects get introspected.
754 2008-05-06 Ross Burton <ross@openedhand.com>
757 Add AC_SYS_LARGEFILE to use 64-bit offsets, thus both fixing
758 32-bit compiles and making the world a better place.
760 2008-05-06 Ross Burton <ross@openedhand.com>
762 * libgupnp/gupnp-context.c:
763 Fix some compile warnings.
765 2008-04-29 Jorn Baayen <jorn@openedhand.com>
767 * libgupnp/gupnp-context.c (hosting_server_handler):
768 * libgupnp/http-headers.c (range_get):
769 * libgupnp/http-headers.h:
771 Support HTTP Range header.
773 2008-04-29 Jorn Baayen <jorn@openedhand.com>
775 * libgupnp/gupnp-context.c (hosting_server_handler):
779 2008-04-15 Jorn Baayen <jorn@openedhand.com>
782 * libgupnp/Makefile.am:
783 * libgupnp/gupnp-context.c (hosting_server_handler):
791 2008-04-15 Jorn Baayen <jorn@openedhand.com>
793 * libgupnp/gupnp-service-proxy.c (subscribe_got_response):
794 * libgupnp/gupnp-service.c (subscribe), (resubscribe):
796 Use g_timeout_add_seconds(). We can because soup 2.4 depends
799 2008-04-15 Jorn Baayen <jorn@openedhand.com>
801 * libgupnp/gupnp-context.c (hosting_server_handler),
802 (path_data_new), (path_data_free), (gupnp_context_host_path):
804 Correct HTTP GET logic.
806 2008-04-15 Jorn Baayen <jorn@openedhand.com>
808 * libgupnp/gupnp-service.c (notify_subscriber):
810 Set request, not response.
812 2008-04-15 Jorn Baayen <jorn@openedhand.com>
813 Zeeshan Ali Khattak <zeenix@gmail.com>
816 * gupnp-1.0-uninstalled.pc.in:
818 * libgupnp/gupnp-context.c (gupnp_context_init),
819 (default_server_handler), (gupnp_context_get_server),
820 (hosting_server_handler), (gupnp_context_host_path):
821 * libgupnp/gupnp-control-point.c (gupnp_control_point_dispose),
822 (process_service_list), (process_device_list),
823 (description_loaded), (got_description_url), (load_description):
824 * libgupnp/gupnp-device-info.c (gupnp_device_info_class_init),
825 (gupnp_device_info_get_icon_url):
826 * libgupnp/gupnp-device-info.h:
827 * libgupnp/gupnp-device-proxy.c (gupnp_device_proxy_get_device),
828 (gupnp_device_proxy_get_service):
829 * libgupnp/gupnp-device.c (gupnp_device_get_device),
830 (gupnp_device_get_service):
831 * libgupnp/gupnp-resource-factory-private.h:
832 * libgupnp/gupnp-resource-factory.c
833 (gupnp_resource_factory_create_device_proxy),
834 (gupnp_resource_factory_create_service_proxy),
835 (gupnp_resource_factory_create_device),
836 (gupnp_resource_factory_create_service):
837 * libgupnp/gupnp-root-device.c (gupnp_root_device_constructor):
838 * libgupnp/gupnp-service-info.c (gupnp_service_info_dispose),
839 (gupnp_service_info_class_init),
840 (gupnp_service_info_get_introspection), (got_scpd_url),
841 (gupnp_service_info_get_introspection_async):
842 * libgupnp/gupnp-service-info.h:
843 * libgupnp/gupnp-service-proxy.c (gupnp_service_proxy_dispose),
844 (begin_action_msg), (action_got_response), (finish_action_msg),
845 (write_in_parameter), (gupnp_service_proxy_begin_action_valist),
846 (gupnp_service_proxy_begin_action_hash), (check_action_response),
847 (read_out_parameter), (gupnp_service_proxy_end_action_valist),
848 (gupnp_service_proxy_end_action_hash),
849 (gupnp_service_proxy_cancel_action), (server_handler),
850 (subscription_expire), (subscribe_got_response), (subscribe),
852 * libgupnp/gupnp-service.c (control_server_handler),
853 (subscription_response), (subscription_server_handler),
854 (gupnp_service_constructor), (gupnp_service_dispose),
855 (notify_got_response), (notify_subscriber):
856 * libgupnp/http-headers.c (accept_language_get_locales),
857 (message_set_user_agent):
858 * libgupnp/xml-util.c (xml_util_get_child_element_content_uri),
859 (xml_util_get_child_element_content_url):
860 * libgupnp/xml-util.h:
864 2008-03-19 Jorn Baayen <jorn@openedhand.com>
866 * libgupnp/gupnp-context.c (gupnp_context_init):
868 Use SOUP_SESSION_IDLE_TIMEOUT when available.
870 2008-03-18 Jorn Baayen <jorn@openedhand.com>
873 * libgupnp/gupnp-service.c (gupnp_service_signals_autoconnect):
877 2008-03-06 Jorn Baayen <jorn@openedhand.com>
879 * libgupnp/gupnp-device-info.c (resource_type_match):
881 Interpret strncmp() return value correctly.
883 2008-03-05 Jorn Baayen <jorn@openedhand.com>
885 * doc/gupnp-sections.txt:
886 * libgupnp/gupnp-context-private.h:
887 * libgupnp/gupnp-context.c (gupnp_context_get_property),
888 (gupnp_context_class_init), (gupnp_context_get_server),
889 (make_server_url), (gupnp_context_get_port),
890 (gupnp_context_host_path), (gupnp_context_unhost_path):
891 * libgupnp/gupnp-context.h:
892 * libgupnp/gupnp-service-proxy.c (subscribe_got_response),
893 (subscribe), (unsubscribe):
894 * libgupnp/gupnp-service.c (gupnp_service_constructor):
896 Make gupnp_context_get_server() public.
899 2008-03-05 Jorn Baayen <jorn@openedhand.com>
901 * libgupnp/gupnp-device-info.c (resource_type_match),
902 (gupnp_device_info_get_device), (gupnp_device_info_get_service):
904 Return subresources with version greater or equal than
907 * libgupnp/gupnp-root-device.c
908 (add_resource_with_earlier_versions), (fill_resource_group):
910 Announce all earlier versions of resources in addition to the
913 2008-03-04 Jorn Baayen <jorn@openedhand.com>
915 * libgupnp/gupnp-device-info.c (gupnp_device_info_get_device),
916 (gupnp_device_info_get_service):
918 Allow version-agnostic subresource retrieval.
920 2008-02-29 Zeeshan Ali Khattak <zeenix@gmail.com>
922 * libgupnp/gupnp-service-proxy.c:
924 Critical bug fix: Don't free the action in check_action_response().
926 2008-02-26 Jorn Baayen <jorn@openedhand.com>
930 Don't call glib-gettextize.
932 2008-02-23 Jorn Baayen <jorn@openedhand.com>
934 * libgupnp/gupnp-service-proxy.c:
935 (gupnp_service_proxy_action_free),
936 (gupnp_service_proxy_send_action_valist),
937 (gupnp_service_proxy_send_action_hash), (begin_action_msg),
938 (action_got_response), (gupnp_service_proxy_begin_action_valist),
939 (gupnp_service_proxy_begin_action_hash),
940 (gupnp_service_proxy_end_action_valist),
941 (gupnp_service_proxy_end_action_hash),
942 (gupnp_service_proxy_cancel_action):
943 * libgupnp/gupnp-service-proxy.h:
945 Remove error argument from begin_action() method series. The
946 error is now saved and returned by end_action().
948 2008-02-23 Jorn Baayen <jorn@openedhand.com>
950 * libgupnp/http-headers.c: (message_set_user_agent):
954 2008-02-09 Jorn Baayen <jorn@openedhand.com>
956 * libgupnp/Makefile.am:
957 * libgupnp/accept-language.c:
958 * libgupnp/accept-language.h:
959 * libgupnp/gupnp-context.c:
960 * libgupnp/gupnp-control-point.c: (load_description):
961 * libgupnp/gupnp-service-info.c:
962 (gupnp_service_info_get_introspection),
963 (gupnp_service_info_get_introspection_async):
964 * libgupnp/gupnp-service-proxy.c: (begin_action_msg),
965 (gupnp_service_proxy_get_subscribed):
966 * libgupnp/gupnp-service.c:
967 * libgupnp/http-headers.c:
968 * libgupnp/http-headers.h:
970 Include "User-Agent" header in requests.
972 2008-01-31 Jorn Baayen <jorn@openedhand.com>
974 * libgupnp/gupnp-context-private.h:
975 * libgupnp/gupnp-device-info-private.h:
976 * libgupnp/gupnp-resource-factory-private.h:
977 * libgupnp/gupnp-resource-factory.c:
978 (gupnp_resource_factory_unregister_resource_proxy_type):
979 * libgupnp/gupnp-service-introspection-private.h:
981 Add missing G_GNUC_INTERNALs.
983 2008-01-23 Jorn Baayen <jorn@openedhand.com>
985 * libgupnp/gupnp-control-point.c:
986 (gupnp_control_point_set_property):
987 * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property):
989 Fix compiler warning. Patch by Zeeshan Ali Khattak.
991 2008-01-17 Ross Burton <ross@openedhand.com>
993 * libgupnp/gvalue-util.c:
994 Fix build on 64-bit systems (#711, thanks Bastien Nocera).
996 2008-01-17 Zeeshan Ali Khattak <zeenix@gmail.com>
998 * libgupnp/accept-language.h:
999 * libgupnp/gvalue-util.h:
1000 * libgupnp/xml-util.h:
1002 Use 'G_GNUC_INTERNAL' macro to declare functions we don't want to
1005 2008-01-17 Jorn Baayen <jorn@openedhand.com>
1007 * libgupnp/gupnp-types.c:
1008 * libgupnp/gupnp-types.h:
1009 * libgupnp/gvalue-util.c: (gvalue_util_set_value_from_xml_node):
1011 Remove ugly and luckily unnecessary XML_NODE and XML_CHUNK types.
1013 2008-01-14 Jorn Baayen <jorn@openedhand.com>
1018 Remove unused translation framework.
1020 2008-01-14 Jorn Baayen <jorn@openedhand.com>
1022 * libgupnp/gupnp-types.c:
1024 Recursively copy xmlNodes.
1026 2008-01-14 Jorn Baayen <jorn@openedhand.com>
1030 Update list of ignored header files.
1032 2008-01-07 Jorn Baayen <jorn@openedhand.com>
1034 * libgupnp/gvalue-util.c: (gvalue_util_set_value_from_string):
1036 Use atol() for 64-bit int parsing.
1038 2007-12-16 Jorn Baayen <jorn@openedhand.com>
1040 * libgupnp/gupnp-service-proxy.c: (read_out_parameter),
1042 * libgupnp/gupnp-service.c: (gupnp_service_action_get_value):
1043 * libgupnp/gvalue-util.c: (gvalue_util_set_value_from_string),
1044 (gvalue_util_set_value_from_xml_node),
1045 (gvalue_util_value_append_to_xml_string):
1046 * libgupnp/gvalue-util.h:
1047 * libgupnp/xml-util.c: (xml_util_get_element):
1048 * libgupnp/xml-util.h:
1050 Allow use of GUPNP_TYPE_XML_CHUNK and GUPNP_TYPE_XML_NODE to be
1051 mixed through text->xmlDoc->text conversion. (Which is obviously
1052 slow, so use of XML_CHUNK on the sending side, and XML_NODE on
1053 the receiving side is recommended.)
1055 2007-12-16 Jorn Baayen <jorn@openedhand.com>
1057 * libgupnp/gupnp-service-proxy.c: (read_out_parameter):
1058 * libgupnp/gupnp-types.c: (gupnp_xml_node_get_type),
1059 (gupnp_string_type_to_string), (gupnp_string_to_string_type),
1060 (register_string_type), (gupnp_xml_chunk_get_type),
1061 (gupnp_bin_base64_get_type), (gupnp_bin_hex_get_type),
1062 (gupnp_date_get_type), (gupnp_date_time_get_type):
1063 * libgupnp/gupnp-types.h:
1065 Add an xmlNode data type (can now retrieve arguments as xmlNodes:
1066 avoids excess parsing), and clean up types code.
1068 2007-12-16 Jorn Baayen <jorn@openedhand.com>
1070 * libgupnp/gupnp-service-proxy.c:
1071 (gupnp_service_proxy_begin_action), (begin_action_msg),
1072 (action_got_response), (finish_action_msg),
1073 (gupnp_service_proxy_begin_action_valist),
1074 (gupnp_service_proxy_begin_action_hash),
1075 (gupnp_service_proxy_end_action), (check_action_response):
1076 * libgupnp/gupnp-service.c: (gupnp_service_action_set_value),
1077 (gupnp_service_action_return_error), (control_server_handler),
1079 * libgupnp/gupnp-types.c: (gupnp_string_to_type):
1080 * libgupnp/gupnp-types.h:
1081 * libgupnp/gvalue-util.c: (gvalue_util_set_value_from_string),
1082 (gvalue_util_value_append_to_xml_string):
1083 * libgupnp/gvalue-util.h:
1084 * libgupnp/xml-util.c: (xml_doc_wrapper_new),
1085 (xml_util_get_attribute_contents):
1086 * libgupnp/xml-util.h:
1088 Don't use libxml for message construction. This allows us to
1089 embed chunks of xml into messages without them being escaped.
1091 2007-11-26 Jorn Baayen <jorn@openedhand.com>
1093 * libgupnp/gupnp-context.c:
1095 Rewrite local IP detection to be IPv6-friendly.
1097 2007-11-23 Jorn Baayen <jorn@openedhand.com>
1099 * libgupnp/gupnp-service-proxy.c: (begin_action_msg):
1100 * libgupnp/gupnp-service.c: (gupnp_service_action_set_value),
1101 (gupnp_service_action_return_error), (control_server_handler),
1102 (notify_subscriber), (create_property_set):
1104 Tweak XML generation to match spec to the letter.
1106 2007-11-22 Jorn Baayen <jorn@openedhand.com>
1108 * libgupnp/gupnp-service.c: (control_server_handler),
1109 (create_property_set):
1111 Set embedded xml docs to not be standalone.
1113 2007-11-22 Jorn Baayen <jorn@openedhand.com>
1117 Set XDG_PREFIX. Avoids symbol collisions with other xdgmimes.
1118 Patch by Ross Burton <ross@openedhand.com>.
1120 2007-11-22 Jorn Baayen <jorn@openedhand.com>
1122 * libgupnp/gupnp-service.c: (strip_camel_case):
1124 Don't split up 2 letter abbreviations when coverting from camel case.
1126 2007-11-21 Jorn Baayen <jorn@openedhand.com>
1128 * libgupnp/xml-util.c: (xml_util_node_get_content_value):
1129 * libgupnp/xml-util.h:
1131 Remove unused function.
1133 2007-10-23 Jorn Baayen <jorn@openedhand.com>
1135 * libgupnp/gena-protocol.h:
1136 * libgupnp/gupnp-context.c: (gupnp_context_class_init):
1137 * libgupnp/gupnp-service.c: (subscription_timeout),
1138 (parse_and_limit_timeout), (subscribe), (resubscribe):
1140 Add an upper bound of 7 days to subscription timeouts.
1142 2007-10-09 Zeeshan Ali <zeenix@gstreamer.net>
1143 Jorn Baayen <jorn@openedhand.com>
1145 * libgupnp/gupnp-resource-factory.c:
1146 * libgupnp/gupnp-resource-factory.h:
1148 - Instead of asking the users to subclass resource factory, provide an
1149 API to register GTypes for UPnP types.
1150 - Make the resource and resource proxy creation functions private.
1152 * libgupnp/gupnp-resource-factory-private.h:
1154 Make the resource and resource proxy creation functions private.
1156 * libgupnp/gupnp-control-point.c:
1157 * libgupnp/gupnp-root-device.c:
1159 - "resource-factory" prop can only be set at contruction time.
1160 - Make _new() a wrapper around_new_full().
1161 - Provide getter for resource factory.
1162 - Fix a copy&paste mistake.
1164 * libgupnp/gupnp-control-point.h:
1165 * libgupnp/gupnp-root-device.h:
1167 Provide getter for resource factory.
1169 * libgupnp/gupnp-device.c:
1170 * libgupnp/gupnp-device.h:
1171 * libgupnp/gupnp-device-info.c:
1172 * libgupnp/gupnp-device-info.h:
1173 * libgupnp/gupnp-device-proxy.c:
1175 Move "resource-factory" prop to DeviceInfo class.
1177 * libgupnp/Makefile.am:
1179 Add gupnp-resource-factory-private.h to build.
1181 * doc/gupnp-sections.txt:
1183 - Add resource factory getter functions.
1184 - Add type assignment (un)registeration functions.
1185 - Remove the now private resource and resource proxy creation functions.
1187 2007-10-09 Jorn Baayen <jorn@openedhand.com>
1189 * libgupnp/gena-protocol.h:
1190 * libgupnp/gupnp-service-proxy.c: (subscribe_got_response):
1192 Resubscribe 30 seconds before subscription times out.
1194 2007-10-03 Jorn Baayen <jorn@openedhand.com>
1198 Version number to 0.6.99.
1200 2007-10-03 Zeeshan Ali <zeenix@gstreamer.net>
1202 * libgupnp/gupnp-control-point.c:
1203 * libgupnp/gupnp-root-device.c:
1205 Fix the type check for factory argument of _new_full() functions.
1207 2007-10-01 Zeeshan Ali <zeenix@gstreamer.net>
1209 * libgupnp/gupnp-resource-factory.c:
1213 * doc/gupnp-docs.sgml:
1214 * doc/gupnp-sections.txt:
1216 Add ResourceFactory API to the docs.
1218 2007-10-01 Zeeshan Ali <zeenix@gstreamer.net>
1220 * doc/gupnp-sections.txt:
1222 Add _control_point_new_full() and _root_device_new_full() to docs.
1224 2007-10-01 Zeeshan Ali <zeenix@gstreamer.net>
1226 * libgupnp/gupnp-resource-factory.c:
1227 * libgupnp/gupnp-resource-factory.h:
1228 * libgupnp/gupnp-control-point.c:
1229 * libgupnp/gupnp-root-device.c:
1231 Replace _resource_factory_new() with _resource_factory_get_default()
1232 that only returns a pointer to a singleton object rather than creating
1235 2007-10-01 Zeeshan Ali <zeenix@gstreamer.net>
1237 * libgupnp/gupnp-resource-factory.c:
1238 * libgupnp/gupnp-resource-factory.h:
1239 * libgupnp/gupnp-control-point.c:
1240 * libgupnp/gupnp-control-point.h:
1241 * libgupnp/gupnp-device-proxy.c:
1242 * libgupnp/gupnp-device-proxy.h:
1243 * libgupnp/gupnp-device.c:
1244 * libgupnp/gupnp-root-device.c:
1245 * libgupnp/gupnp-root-device.h:
1246 * libgupnp/gupnp-service-proxy.c:
1247 * libgupnp/gupnp-service.c:
1249 New resource factory that handles the creation of device,
1250 service and device and service proxy objects.
1252 * libgupnp/gupnp-service-private.h:
1253 * libgupnp/gupnp-service-proxy-private.h:
1254 * libgupnp/gupnp-device-proxy-private.h:
1256 Remove unneeded headers.
1258 * libgupnp/Makefile.am:
1260 - Add the new resource factory to build.
1261 - Remove unneeded headers from build.
1263 2007-09-23 Jorn Baayen <jorn@openedhand.com>
1270 2007-09-21 Jorn Baayen <jorn@openedhand.com>
1272 * libgupnp/gupnp-control-point.c: (load_description):
1273 * libgupnp/gupnp-service-info.c: (got_scpd_url),
1274 (gupnp_service_info_get_introspection_async):
1276 Add pending GET requests to pending_gets before sending off the
1277 message, and remove them again before emitting any callbacks on
1280 2007-09-21 Jorn Baayen <jorn@openedhand.com>
1282 * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose),
1283 (subscription_expire), (subscribe_got_response), (subscribe):
1284 * libgupnp/gupnp-service.c: (gupnp_service_dispose),
1285 (gupnp_service_notify_valist), (notify_got_response),
1286 (notify_subscriber):
1288 Cancel all pending SoupMessages on dispose.
1290 2007-09-20 Jorn Baayen <jorn@openedhand.com>
1292 * libgupnp/gupnp-service-proxy.c: (unsubscribe):
1294 subscription_timeout_id can be 0 (when we are resubscribing).
1296 2007-09-20 Jorn Baayen <jorn@openedhand.com>
1298 * libgupnp/Makefile.am:
1299 * libgupnp/gupnp-control-point.c: (gupnp_control_point_dispose),
1300 (gupnp_control_point_finalize), (process_service_list),
1301 (process_device_list), (description_loaded), (got_description_url),
1302 (load_description), (gupnp_control_point_resource_unavailable):
1303 * libgupnp/gupnp-device-info-private.h:
1304 * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property),
1305 (gupnp_device_info_dispose), (gupnp_device_info_class_init),
1306 (gupnp_device_info_get_service):
1307 * libgupnp/gupnp-device-proxy-private.h:
1308 * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_device),
1309 (gupnp_device_proxy_get_service), (_gupnp_device_proxy_new):
1310 * libgupnp/gupnp-service-info.c: (gupnp_service_info_set_property),
1311 (gupnp_service_info_dispose), (gupnp_service_info_class_init):
1312 * libgupnp/gupnp-service-proxy-private.h:
1313 * libgupnp/gupnp-service-proxy.c: (_gupnp_service_proxy_new):
1314 * libgupnp/xml-util.c:
1315 * libgupnp/xml-util.h:
1317 Introduce a wrapper object for xmlDocs. Each proxy takes a reference
1318 on the xmlDoc wrapper it uses.
1320 2007-09-18 Zeeshan Ali <zeenix@gstreamer.net>
1322 * libgupnp/gvalue-util.c:
1324 Accept 'yes' and 'no' as boolean values as well.
1326 2007-09-17 Jorn Baayen <jorn@openedhand.com>
1328 * libgupnp/gupnp-service-proxy.c:
1330 Specify the reason why notify subscription failed in subscription-lost
1333 2007-09-17 Zeeshan Ali <zeenix@gstreamer.net>
1335 * libgupnp/gupnp-service.c:
1337 Specify the reason why notify failed in the error to the notify-failed
1340 2007-09-10 Jorn Baayen <jorn@openedhand.com>
1342 * libgupnp/gupnp-control-point.c: (gupnp_control_point_dispose):
1343 * libgupnp/gupnp-service-proxy-private.h:
1344 * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose),
1345 (finish_action_msg), (server_handler), (subscribe), (unsubscribe),
1346 (gupnp_service_proxy_set_subscribed):
1348 Always unsubscribe proxy on dispose, but do it asynchronously.
1349 This means that the unsubscribe request may not always be sent on
1350 exit. The UPnP spec, however, does not require this to happen.
1352 This should fix bug #500 as well.
1354 2007-09-09 Jorn Baayen <jorn@openedhand.com>
1356 * libgupnp/gupnp-service-info.h:
1357 * tests/test-introspection.c: (print_state_variables):
1359 Mark GUPnPServiceIntrospectionCallback() 'error' argument as 'const'.
1361 2007-09-09 Zeeshan Ali <zeenix@gstreamer.net>
1362 Jorn Baayen <jorn@openedhand.com>
1364 * tests/test-introspection.c:
1366 Correct the order of arguments in a function call, and free
1367 GError in sync code only.
1369 2007-09-08 Zeeshan Ali <zeenix@gstreamer.net>
1371 * libgupnp/gupnp-device-info.c:
1373 gupnp_device_info_get_model_number() returns model number and not
1376 2007-09-08 Jorn Baayen <jorn@openedhand.com>
1378 * libgupnp/gupnp-control-point.c: (got_description_url):
1379 * libgupnp/gupnp-service-info.c: (got_scpd_url):
1380 * libgupnp/gupnp-service-proxy.c: (action_got_response),
1381 (finish_action_msg):
1383 Do not double-free message structures on cancel.
1385 2007-09-05 Zeeshan Ali <zeenix@gstreamer.net>
1387 * libgupnp/gupnp-device-info.c:
1389 BUGFIX: Don't use a NULL pointer.
1391 2007-09-03 Zeeshan Ali <zeenix@gstreamer.net>
1393 * libgupnp/accept-language.c:
1394 * libgupnp/accept-language.h:
1395 * libgupnp/gena-protocol.h:
1396 * libgupnp/gupnp-context-private.h:
1397 * libgupnp/gupnp-context.c:
1398 * libgupnp/gupnp-context.h:
1399 * libgupnp/gupnp-control-point.c:
1400 * libgupnp/gupnp-control-point.h:
1401 * libgupnp/gupnp-device-info.c:
1402 * libgupnp/gupnp-device-info.h:
1403 * libgupnp/gupnp-device-proxy-private.h:
1404 * libgupnp/gupnp-device-proxy.c:
1405 * libgupnp/gupnp-device-proxy.h:
1406 * libgupnp/gupnp-device.c:
1407 * libgupnp/gupnp-device.h:
1408 * libgupnp/gupnp-error-private.h:
1409 * libgupnp/gupnp-error.c:
1410 * libgupnp/gupnp-error.h:
1411 * libgupnp/gupnp-root-device.c:
1412 * libgupnp/gupnp-root-device.h:
1413 * libgupnp/gupnp-service-info.c:
1414 * libgupnp/gupnp-service-info.h:
1415 * libgupnp/gupnp-service-introspection-private.h:
1416 * libgupnp/gupnp-service-introspection.c:
1417 * libgupnp/gupnp-service-introspection.h:
1418 * libgupnp/gupnp-service-private.h:
1419 * libgupnp/gupnp-service-proxy-private.h:
1420 * libgupnp/gupnp-service-proxy.c:
1421 * libgupnp/gupnp-service-proxy.h:
1422 * libgupnp/gupnp-service.h:
1423 * libgupnp/gupnp-types-private.h:
1424 * libgupnp/gupnp-types.c:
1425 * libgupnp/gupnp-types.h:
1427 * libgupnp/gvalue-util.c:
1428 * libgupnp/gvalue-util.h:
1429 * libgupnp/xml-util.c:
1430 * libgupnp/xml-util.h:
1431 * tests/test-browsing.c:
1432 * tests/test-introspection.c:
1433 * tests/test-proxy.c:
1435 Remove trailing whitespace.
1437 * tests/test-server.c:
1439 - Remove trailing whitespace.
1440 - Provide "UpdateID" in response of Browse action.
1442 2007-09-03 Zeeshan Ali <zeenix@gstreamer.net>
1444 * libgupnp/gupnp-service-introspection.c:
1446 Use gvalue_util_set_value_from_string() for conversion from
1449 2007-08-30 Jorn Baayen <jorn@openedhand.com>
1451 * libgupnp/gupnp-device-info.c:
1452 (gupnp_device_info_list_device_types),
1453 (gupnp_device_info_get_device),
1454 (gupnp_device_info_list_service_types):
1456 Clarify subresource retrieval in docs.
1458 2007-08-29 Jorn Baayen <jorn@openedhand.com>
1462 Bump version number to 0.4.99.
1464 2007-08-28 Zeeshan Ali <zeenix@gstreamer.net>
1465 Jorn Baayen <jorn@openedhand.com>
1467 * libgupnp/gupnp-service.c:
1468 * libgupnp/gupnp-service.h:
1469 * doc/gupnp-sections.txt:
1471 - Add gupnp_service_signals_autoconnect ()
1476 * gupnp-1.0-uninstalled.pc.in:
1480 * tests/Makefile.am:
1481 * tests/test-server.c:
1483 Modify the test server to utilize
1484 gupnp_service_signals_autoconnect().
1486 2007-08-26 Jorn Baayen <jorn@openedhand.com>
1488 * gupnp-1.0-uninstalled.pc.in:
1491 Move libsoup back into Requires.. we do include it in public
1494 2007-08-23 Jorn Baayen <jorn@openedhand.com>
1496 * gupnp-1.0-uninstalled.pc.in:
1499 Move libsoup and uuid reqs to Requires.Private, and remove
1500 the shared-mime-data req altogether.
1502 2007-08-21 Jorn Baayen <jorn@openedhand.com>
1509 2007-08-14 Jorn Baayen <jorn@openedhand.com>
1511 * libgupnp/gupnp-device.c: (gupnp_device_class_init):
1513 Remove unused function.
1515 2007-08-13 Jorn Baayen <jorn@openedhand.com>
1517 * libgupnp/Makefile.am:
1518 * libgupnp/gupnp-service-proxy.c: (write_in_parameter),
1519 (read_out_parameter):
1520 * libgupnp/gupnp-service.c: (gupnp_service_action_set_value),
1521 (create_property_set):
1522 * libgupnp/gvalue-util.c:
1523 * libgupnp/gvalue-util.h:
1524 * libgupnp/xml-util.c: (xml_util_node_get_content_value):
1526 Add more elaborate GValue conversion functions and use them
1527 instead of old conversion code.
1529 2007-08-09 Jorn Baayen <jorn@openedhand.com>
1533 Bump version number to 0.3.99.
1535 * libgupnp/gupnp-service-proxy.c:
1536 (gupnp_service_proxy_send_action_valist),
1537 (gupnp_service_proxy_send_action_hash),
1538 (gupnp_service_proxy_begin_action), (begin_action_msg),
1539 (action_got_response), (finish_action_msg), (write_in_parameter),
1540 (gupnp_service_proxy_begin_action_valist),
1541 (gupnp_service_proxy_begin_action_hash),
1542 (gupnp_service_proxy_end_action), (check_action_response),
1543 (read_out_parameter), (gupnp_service_proxy_end_action_valist):
1544 * libgupnp/gupnp-service-proxy.h:
1546 Added a new series of functions for sending actions taking hash
1547 tables of parameter name-GValue pairs.
1549 * libgupnp/gupnp-service.c: (gupnp_service_action_get_valist),
1550 (gupnp_service_action_set_valist), (gupnp_service_notify_valist):
1552 Don't fail completely on GValue collection errors.
1554 * doc/gupnp-sections.txt:
1556 Added the new _hash() functions.
1558 2007-08-08 Zeeshan Ali <zeenix@gstreamer.net>
1560 * libgupnp/gupnp-service-introspection.c: (set_variable_type),
1561 (state_variable_search_func),
1562 (gupnp_service_introspection_get_state_variable),
1563 (action_search_func), (gupnp_service_introspection_get_action):
1564 * libgupnp/gupnp-service-introspection.h:
1566 - Add methods to reteive state variable and action by name.
1567 - Default value of 'step' in state variable info should be '1' for
1568 compatibility with GtkSpinButton API.
1570 2007-08-07 Zeeshan Ali <zeenix@gstreamer.net>
1574 * gupnp-1.0-uninstalled.pc.in:
1576 Enable the users to build/link against uninstalled gupnp.
1578 2007-08-03 Jorn Baayen <jorn@openedhand.com>
1580 * libgupnp/gupnp-service.c: (gupnp_service_constructor):
1582 Only include evented state variables in the initial event message.
1584 2007-08-02 Jorn Baayen <jorn@openedhand.com>
1591 2007-08-01 Jorn Baayen <jorn@openedhand.com>
1593 * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_device):
1594 * libgupnp/gupnp-device.c: (gupnp_device_get_device):
1596 Allow embedded devices to have their own UDNs.
1598 2007-07-27 Priit Laes <plaes@plaes.org>
1600 * libgupnp/gupnp-service-proxy.c:
1601 (gupnp_service_proxy_begin_action_valist):
1603 Use G_VA_COPY to get things build on some weird architectures.
1605 2007-07-26 Jorn Baayen <jorn@openedhand.com>
1609 Bump version number to 0.2.
1611 2007-07-26 Zeeshan Ali <zeenix@gstreamer.net>
1613 * libgupnp/gupnp-service.c: (new_action_response_node):
1615 A small fix to the last change from jorn to fix the build.
1617 2007-07-26 Jorn Baayen <jorn@openedhand.com>
1619 * libgupnp/gupnp-control-point.c: (process_service_list),
1620 (process_device_list), (gupnp_control_point_resource_unavailable):
1621 * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property),
1622 (gupnp_device_info_get_property), (gupnp_device_info_finalize),
1623 (gupnp_device_info_class_init), (gupnp_device_info_get_url_base),
1624 (gupnp_device_info_get_udn), (gupnp_device_info_get_device_type),
1625 (gupnp_device_info_get_friendly_name),
1626 (gupnp_device_info_get_manufacturer),
1627 (gupnp_device_info_get_manufacturer_url),
1628 (gupnp_device_info_get_model_description),
1629 (gupnp_device_info_get_model_name),
1630 (gupnp_device_info_get_model_number),
1631 (gupnp_device_info_get_model_url),
1632 (gupnp_device_info_get_serial_number):
1633 * libgupnp/gupnp-device-info.h:
1634 * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_service):
1635 * libgupnp/gupnp-service-info.c: (gupnp_service_info_set_property),
1636 (gupnp_service_info_get_property), (gupnp_service_info_dispose),
1637 (gupnp_service_info_finalize), (gupnp_service_info_class_init),
1638 (gupnp_service_info_get_url_base), (gupnp_service_info_get_udn),
1639 (gupnp_service_info_get_service_type), (gupnp_service_info_get_id),
1640 (gupnp_service_info_get_scpd_url),
1641 (gupnp_service_info_get_control_url):
1642 * libgupnp/gupnp-service-info.h:
1643 * libgupnp/gupnp-service-proxy-private.h:
1644 * libgupnp/gupnp-service-proxy.c:
1645 (gupnp_service_proxy_begin_action_valist),
1646 (gupnp_service_proxy_get_subscribed), (_gupnp_service_proxy_new):
1647 * libgupnp/gupnp-service.c: (new_action_response_node):
1648 * tests/test-browsing.c: (device_proxy_available_cb):
1649 * tests/test-introspection.c: (service_proxy_unavailable_cb):
1651 Handle the case where no serviceType (or deviceType) is specified
1652 in the description document:
1653 - ControlPoint saves the discovered types into the proxies, so that
1654 unavailability can be detected even if the description document
1656 - Service and ServiceProxy warn if serviceType is not specified.
1658 This has the side effect that the return value of
1659 _get_{device,service}_type() now returns a const.
1661 Also added additional checks.
1663 2007-07-26 Zeeshan Ali <zeenix@gstreamer.net>
1665 * libgupnp/gupnp-device-info.c:
1666 * libgupnp/gupnp-device-info.h:
1667 * libgupnp/gupnp-device-proxy-private.h:
1668 * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_device),
1669 (gupnp_device_proxy_get_service), (_gupnp_device_proxy_new):
1670 * libgupnp/gupnp-device.c: (gupnp_device_get_device),
1671 (gupnp_device_get_service), (_gupnp_device_new):
1672 * libgupnp/gupnp-service-info.c:
1673 * libgupnp/gupnp-service-info.h:
1674 * libgupnp/gupnp-service-private.h:
1675 * libgupnp/gupnp-service-proxy-private.h:
1676 * libgupnp/gupnp-service-proxy.c: (_gupnp_service_proxy_new):
1677 * libgupnp/gupnp-service.c: (_gupnp_service_new):
1679 Make it clear to the user that return value of
1680 gupnp_{device,service}_info_get_url_base() must not be freed o
1683 2007-07-26 Jorn Baayen <jorn@openedhand.com>
1685 * libgupnp/gupnp-service-proxy.h:
1686 * libgupnp/gupnp-service.h:
1690 2007-07-26 Jorn Baayen <jorn@openedhand.com>
1692 * doc/gupnp-sections.txt:
1693 * libgupnp/gupnp-service-info.h:
1694 * libgupnp/gupnp-service-proxy.h:
1696 Document callback prototypes.
1698 * libgupnp/gupnp-service-info.c: (got_scpd_url),
1699 (gupnp_service_info_get_introspection_async):
1700 * tests/test-introspection.c: (print_state_variables):
1702 Switch the order of the 'error' and 'user-data' arguments in the
1703 async introspection retrieval callback, so that 'user-data' is now
1704 last for consistency.
1706 2007-07-26 Jorn Baayen <jorn@openedhand.com>
1710 List all dependencies.
1712 2007-07-26 Zeeshan Ali <zeenix@gstreamer.net>
1714 * libgupnp/gupnp-service-introspection.c:
1715 (gupnp_service_action_arg_info_free),
1716 (gupnp_service_action_info_free),
1717 (gupnp_service_introspection_finalize), (get_actions),
1718 (get_state_variables), (construct_introspection_info),
1719 (collect_action_names), (collect_variable_names),
1720 (gupnp_service_introspection_new),
1721 (gupnp_service_introspection_list_action_names),
1722 (gupnp_service_introspection_list_actions),
1723 (gupnp_service_introspection_list_state_variables),
1724 (gupnp_service_introspection_list_state_variable_names):
1726 Get rid of the hashtables since the function that needed them have
1729 2007-07-25 Zeeshan Ali <zeenix@gstreamer.net>
1731 * libgupnp/gupnp-service-introspection.h:
1733 Fix struct docs for gtk-doc.
1735 2007-07-25 Zeeshan Ali <zeenix@gstreamer.net>
1737 * libgupnp/gupnp-service-introspection.c:
1738 * libgupnp/gupnp-service-introspection.h:
1740 Add docs for structs and only mention once the extremely dependency on
1741 the availability of SCPD. :)
1743 2007-07-25 Jorn Baayen <jorn@openedhand.com>
1745 * libgupnp/gupnp-service-introspection.c:
1747 Added a comment warning people against using introspection in
1750 2007-07-25 Jorn Baayen <jorn@openedhand.com>
1752 A doc/gupnp-sections.txt:
1753 * libgupnp/gupnp-error.c:
1754 * libgupnp/gupnp-service-introspection.h:
1755 * libgupnp/gupnp-service.h:
1756 * libgupnp/gupnp-types.c:
1760 2007-07-25 Zeeshan Ali <zeenix@gstreamer.net>
1762 * libgupnp/gupnp-service-introspection.c:
1763 * libgupnp/gupnp-service-introspection.h:
1765 Remove unneeded functions.
1767 2007-07-25 Jorn Baayen <jorn@openedhand.com>
1771 Added text from website.
1773 2007-07-25 Jorn Baayen <jorn@openedhand.com>
1775 * libgupnp/gupnp-device.c: (gupnp_device_get_device),
1776 (gupnp_device_get_service), (gupnp_device_get_property),
1777 (gupnp_device_dispose), (gupnp_device_init),
1778 (gupnp_device_class_init), (_gupnp_device_find_element_for_udn):
1779 * libgupnp/gupnp-root-device.c: (gupnp_root_device_new):
1780 * libgupnp/gupnp-service-private.h:
1781 * libgupnp/gupnp-service.c: (gupnp_service_action_return_error),
1782 (gupnp_service_constructor), (gupnp_service_set_property),
1783 (gupnp_service_get_property), (gupnp_service_dispose),
1784 (gupnp_service_finalize), (gupnp_service_class_init),
1785 (notify_got_response), (notify_subscriber), (create_property_set),
1786 (flush_notifications), (gupnp_service_notify_value),
1787 (gupnp_service_freeze_notify), (gupnp_service_thaw_notify),
1788 (_gupnp_service_new):
1790 Devices and Services reference their RootDevice.
1791 On RootDevice unavailability Service purges its subscriptions.
1793 * tests/test-server.c: (main):
1797 2007-07-25 Jorn Baayen <jorn@openedhand.com>
1799 * libgupnp/gupnp-control-point.c: (gupnp_control_point_dispose):
1800 * libgupnp/gupnp-service-proxy-private.h:
1801 * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose),
1802 (subscribe_got_response), (gupnp_service_proxy_set_subscribed):
1804 Unsubscribe proxies automatically only at control point dispose.
1806 2007-07-25 Jorn Baayen <jorn@openedhand.com>
1808 * libgupnp/gupnp-control-point.c: (load_description),
1809 (gupnp_control_point_resource_unavailable):
1811 Destroy proxy before destroying the associated xmlDoc.
1813 * libgupnp/gupnp-error.h:
1814 * libgupnp/gupnp-service-info.c:
1815 (gupnp_service_info_get_introspection),
1816 (gupnp_service_info_get_introspection_async):
1817 * libgupnp/gupnp-service-proxy.c:
1818 (gupnp_service_proxy_begin_action_valist), (subscription_expire),
1819 (subscribe), (unsubscribe):
1820 * libgupnp/gupnp-service.c: (notify_subscriber):
1822 Better invalid URL error handling.
1824 * tests/Makefile.am:
1825 R tests/test-client.c:
1826 A tests/test-browsing.c: (device_proxy_unavailable_cb):
1827 A tests/test-proxy.c:
1829 Split out test-client into test-browsing and test-proxy better
1830 illustrating how to use the API.
1832 2007-07-25 Jorn Baayen <jorn@openedhand.com>
1834 * libgupnp/gupnp-service.c: (gupnp_service_init),
1835 (gupnp_service_finalize), (notify_got_response):
1837 Create & destroy notify queue.
1839 * libgupnp/gupnp-service.h:
1841 Added 'const' to constant signal arguments.
1843 * tests/test-client.c: (device_proxy_unavailable_cb),
1844 (service_proxy_available_cb):
1846 Connect to 'subscription-lost' signal.
1848 * tests/test-server.c: (browse_cb), (query_cb), (main):
1850 Connect to 'notify-failed' signal.
1851 Print action locales.
1852 Test gupnp_service_notify().
1854 2007-07-25 Jorn Baayen <jorn@openedhand.com>
1856 * libgupnp/gupnp-service-proxy.c: (subscribe_got_response):
1858 Remove server handler on all subscription errors.
1860 2007-07-25 Jorn Baayen <jorn@openedhand.com>
1862 * libgupnp/gupnp-marshal.list:
1863 * libgupnp/gupnp-service.c: (gupnp_service_class_init):
1865 Don't box the to-be-filled GValue.
1867 * tests/test-client.c: (notify_cb), (service_proxy_available_cb):
1868 * tests/test-server.c: (browse_cb), (main):
1870 Test event notification.
1872 2007-07-25 Jorn Baayen <jorn@openedhand.com>
1874 * libgupnp/gupnp-service-proxy.c: (server_handler):
1878 2007-07-25 Jorn Baayen <jorn@openedhand.com>
1880 * libgupnp/gupnp-service-introspection.c:
1881 * libgupnp/gupnp-types.c:
1885 2007-07-24 Zeeshan Ali <zeenix@gstreamer.net>
1887 * libgupnp/gupnp-service-introspection.c:
1888 (gupnp_service_state_variable_info_free),
1889 (gupnp_service_action_info_free),
1890 (gupnp_service_introspection_finalize), (set_string_value_limits),
1891 (get_action_arguments), (action_argument_list_free), (get_actions),
1892 (collect_hash_keys), (collect_action_arguments), (collect_actions),
1893 (collect_state_variables):
1894 * libgupnp/gupnp-service-introspection.h:
1895 * libgupnp/gupnp-service.c: (gupnp_service_constructor):
1896 * tests/test-introspection.c: (print_action_arguments),
1897 (print_actions), (print_state_variables):
1899 Use GList instead of GSList for compatibility with the rest of the
1902 2007-07-24 Jorn Baayen <jorn@openedhand.com>
1904 * libgupnp/gupnp-service-proxy.c: (server_handler):
1906 Don't allow g_main_context_iteration() to block.
1908 2007-07-24 Jorn Baayen <jorn@openedhand.com>
1912 Depend on gssdp 0.3.
1914 * libgupnp/gupnp-control-point.c:
1915 (gupnp_control_point_resource_unavailable):
1917 Don't depend on deleted list items in loop.
1919 2007-07-24 Jorn Baayen <jorn@openedhand.com>
1923 Added news items for 0.2.
1925 2007-07-23 Jorn Baayen <jorn@openedhand.com>
1927 * libgupnp/gupnp-control-point.c: (load_description):
1928 * libgupnp/gupnp-service-info.c:
1929 (gupnp_service_info_get_introspection),
1930 (gupnp_service_info_get_introspection_async):
1931 * libgupnp/gupnp-service-proxy.c: (subscription_expire),
1932 (subscribe), (unsubscribe):
1933 * libgupnp/gupnp-service.c: (notify_subscriber):
1935 Warn on invalid URL (don't crash!).
1937 2007-07-23 Jorn Baayen <jorn@openedhand.com>
1939 * libgupnp/gupnp-marshal.list:
1940 * libgupnp/gupnp-service-proxy.c: (server_handler),
1941 (subscription_expire), (subscribe_got_response), (subscribe):
1942 * libgupnp/gupnp-service.c: (parse_timeout), (subscribe),
1943 (subscription_server_handler), (gupnp_service_constructor),
1944 (gupnp_service_finalize), (gupnp_service_class_init),
1945 (gupnp_service_notify), (gupnp_service_notify_valist),
1946 (notify_got_response), (notify_subscriber), (create_property_set),
1947 (flush_notifications), (gupnp_service_notify_value):
1948 * libgupnp/gupnp-service.h:
1950 Handle multiple callbacks URLs.
1951 Send initial event message.
1953 2007-07-23 Zeeshan Ali <zeenix@gstreamer.net>
1955 * libgupnp/gupnp-service-introspection.c:
1956 (construct_introspection_info), (collect_hash_keys),
1957 (gupnp_service_introspection_list_action_names),
1958 (gupnp_service_introspection_list_state_variable_names):
1959 * libgupnp/gupnp-service-introspection.h:
1961 - Add _list_state_variable_names() method.
1962 - a minor optimization.
1964 * tests/test-introspection.c: (service_proxy_available_cb):
1966 centralize the error handling.
1968 2007-07-23 Jorn Baayen <jorn@openedhand.com>
1970 * libgupnp/gupnp-service-info.c:
1971 (gupnp_service_info_get_introspection), (got_scpd_url):
1972 * libgupnp/gupnp-service-introspection.c:
1973 (gupnp_service_introspection_set_property),
1974 (gupnp_service_introspection_finalize):
1976 Don't keep xmlDoc around longer than necessary.
1978 2007-07-23 Zeeshan Ali <zeenix@gstreamer.net>
1979 Jorn Baayen <jorn@openedhand.com>
1981 * libgupnp/gupnp-error.c:
1982 * libgupnp/gupnp-error-private.h:
1983 * libgupnp/gupnp-service-proxy.c:
1985 Add & use server error utility functions.
1987 * libgupnp/gupnp-service-info.c:
1988 (gupnp_service_info_get_introspection), (scpd_loaded),
1989 (got_scpd_url), (gupnp_service_info_get_introspection_async):
1990 * libgupnp/gupnp-service-info.h:
1992 Report non-programmer errors using GError.
1994 * libgupnp/gupnp-service-introspection.c:
1995 (gupnp_service_introspection_set_property),
1996 (construct_introspection_info), (gupnp_service_introspection_new),
1997 (gupnp_service_introspection_get_state_variable):
1999 Fix some typos and conditions.
2001 * tests/test-introspection.c: (got_introspection),
2002 (service_proxy_available_cb):
2004 Update the test app to use the new GError-using API.
2006 2007-07-11 Jorn Baayen <jorn@openedhand.com>
2008 * libgupnp/gupnp-error.h:
2009 * libgupnp/gupnp-service-proxy.c: (set_error_literal),
2010 (gupnp_service_proxy_end_action_valist):
2012 Propagate UPnPError codes.
2014 2007-07-11 Jorn Baayen <jorn@openedhand.com>
2016 * libgupnp/gupnp-service-proxy.c:
2017 (gupnp_service_proxy_begin_action_valist):
2019 Set error if no controlURL is defined.
2021 2007-07-08 Jorn Baayen <jorn@openedhand.com>
2023 * libgupnp/gupnp-control-point.c: (got_description_url),
2026 Fix description doc refcounting bugs.
2028 2007-07-08 Jorn Baayen <jorn@openedhand.com>
2030 * libgupnp/gupnp-control-point.c: (description_loaded):
2031 * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property):
2032 * libgupnp/gupnp-service-info.c: (gupnp_service_info_set_property):
2034 Each info object stores its own copy of the URLBase SoupUri.
2036 2007-07-08 Jorn Baayen <jorn@openedhand.com>
2038 * libgupnp/gupnp-control-point.c: (process_service_list),
2039 (process_device_list), (load_description),
2040 (gupnp_control_point_resource_unavailable):
2041 * libgupnp/gupnp-service-proxy-private.h:
2043 Correct constructor argument order.
2045 Update ref count on cached description doc correctly.
2047 2007-07-08 Zeeshan Ali <zeenix@gstreamer.net>
2048 Jorn Baayen <jorn@openedhand.com>
2050 * libgupnp/gupnp-service-info.c: (get_scpd_url_data_free),
2051 (gupnp_service_info_class_init),
2052 (gupnp_service_info_get_introspection), (scpd_ready),
2053 (got_scpd_url), (gupnp_service_info_get_introspection_async):
2054 * libgupnp/gupnp-service-info.h:
2056 Use a callback instead of a signal.
2058 * tests/test-introspection.c: (interrupt_signal_handler),
2059 (got_introspection), (service_proxy_available_cb), (main):
2061 - Use the new callback API.
2062 - Terminate cleanly on SIGTERM.
2064 * tests/test-client.c: (interrupt_signal_handler), (main):
2065 * tests/test-server.c: (interrupt_signal_handler), (main):
2067 Terminate cleanly on SIGTERM.
2069 2007-07-07 Jorn Baayen <jorn@openedhand.com>
2071 * doc/gupnp-docs.sgml:
2072 * libgupnp/gupnp-types.h:
2074 Include gupnp-types in doc TOC.
2076 2007-07-07 Jorn Baayen <jorn@openedhand.com>
2078 * libgupnp/gupnp-control-point.c: (gupnp_control_point_dispose):
2079 * libgupnp/gupnp-service-info.c: (gupnp_service_info_dispose):
2080 * libgupnp/gupnp-service-proxy.c:
2081 (gupnp_service_proxy_cancel_action):
2083 Set message status to SOUP_STATUS_CANCELLED before cancelling.
2085 * libgupnp/gupnp-service-proxy.c:
2087 Elaborate begin_action() comments.
2089 2007-07-07 Jorn Baayen <jorn@openedhand.com>
2091 * libgupnp/Makefile.am:
2092 * libgupnp/gupnp-service-introspection.c:
2093 * libgupnp/gupnp-types-private.h:
2094 * libgupnp/gupnp-types.c: (gupnp_type_to_string):
2095 * libgupnp/gupnp-types.h:
2097 Make private gupnp_data_type_to_gtype().
2098 Add gupnp_value_get_string() macro.
2100 * libgupnp/xml-util.c: (xml_util_node_get_content_value):
2102 Smarter value transformation like in ServiceProxy.
2104 2007-07-07 Jorn Baayen <jorn@openedhand.com>
2106 * libgupnp/gupnp-control-point.c:
2107 (gupnp_control_point_resource_unavailable):
2109 Handle resource-unavailable in the same way.
2111 2007-07-07 Jorn Baayen <jorn@openedhand.com>
2113 * libgupnp/gupnp-control-point.c: (gupnp_control_point_finalize),
2114 (process_service_list), (process_device_list),
2115 (description_loaded), (got_description_url):
2116 * libgupnp/gupnp-device-proxy-private.h:
2117 * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_device),
2118 (gupnp_device_proxy_get_service):
2119 * libgupnp/gupnp-device.c: (gupnp_device_get_device),
2120 (gupnp_device_get_service), (_gupnp_device_find_element_for_udn):
2121 * libgupnp/gupnp-service-private.h:
2122 * libgupnp/gupnp-service-proxy-private.h:
2123 * libgupnp/gupnp-service-proxy.c:
2124 (gupnp_service_proxy_get_subscribed):
2125 * libgupnp/gupnp-service.c: (gupnp_service_thaw_notify):
2127 Create proxies for all, not just one, matching devices and services.
2129 2007-07-07 Jorn Baayen <jorn@openedhand.com>
2131 * libgupnp/gupnp-service-info.c: (gupnp_service_info_get_property),
2132 (gupnp_service_info_dispose):
2134 Rearrange some code.
2136 2007-07-07 Jorn Baayen <jorn@openedhand.com>
2138 * libgupnp/Makefile.am:
2139 * libgupnp/gupnp-service-info.c:
2140 * libgupnp/gupnp-service-introspection-private.h:
2141 * libgupnp/gupnp-service-introspection.c:
2142 * libgupnp/gupnp-service-introspection.h:
2145 Make introspection constructor private.
2147 2007-07-07 Jorn Baayen <jorn@openedhand.com>
2149 * libgupnp/gupnp-service-proxy.c:
2150 * libgupnp/gupnp-types.c:
2152 Handle conversion of strings to GUPnP string-based types.
2154 2007-07-06 Zeeshan Ali <zeenix@gstreamer.net>
2155 Jorn Baayen <jorn@openedhand.com>
2157 * libgupnp/Makefile.am:
2158 * libgupnp/gupnp-types.h:
2159 * libgupnp/gupnp-types.c: (gupnp_type_to_string),
2160 (gupnp_bin_base64_get_type), (gupnp_bin_hex_get_type),
2161 (gupnp_date_get_type), (gupnp_date_time_get_type),
2162 (gupnp_date_time_tz_get_type), (gupnp_time_get_type),
2163 (gupnp_time_tz_get_type), (gupnp_uri_get_type),
2164 (gupnp_uuid_get_type), (gupnp_data_type_to_gtype):
2166 Introduce new types for some UPnP data types that do not have a direct
2169 * libgupnp/xml-util.c: (xml_util_get_attribute_contents):
2170 * libgupnp/xml-util.h:
2172 Add helper function for getting the contents of an attribute.
2174 * libgupnp/gupnp-service-introspection.c:
2175 (gupnp_service_state_variable_info_free),
2176 (gupnp_service_introspection_set_property),
2177 (gupnp_service_introspection_finalize),
2178 (gupnp_service_introspection_class_init), (set_variable_type),
2179 (get_state_variable), (get_action_argument),
2180 (contstruct_introspection_info), (gupnp_service_introspection_new):
2181 * libgupnp/gupnp-service-introspection.h:
2183 - Use the new GUPnP types instead of string type for some UPnP types.
2184 - Take a pointer to SCPD xml instead of it's url in the constructor and
2185 leave the download of the document to the caller.
2186 - Expect documents to specify 'sendEvents' as an attribute of the
2187 state variable node.
2189 * libgupnp/gupnp-service-info.c: (gupnp_service_info_init),
2190 (get_scpd_url_data_free), (gupnp_service_info_dispose),
2191 (gupnp_service_info_class_init), (get_scpd),
2192 (gupnp_service_info_get_introspection), (scpd_ready),
2193 (got_scpd_url), (gupnp_service_info_get_introspection_async):
2194 * libgupnp/gupnp-service-info.h:
2196 - Handle the SCPD GET for and provide introspection's constructor a
2197 pointer to the xml document rather than the SCPD URL.
2198 - Provide an asynchronous way of geting the introspection object.
2200 * tests/test-introspection.c: (print_state_variables),
2201 (got_introspection), (service_proxy_available_cb), (main):
2203 Provide a way to specify that the introspection object be
2204 created/requested asynchronously through a command-line argument.
2206 2007-07-04 Zeeshan Ali <zeenix@gstreamer.net>
2208 * libgupnp/gupnp-service-introspection.c:
2209 (gupnp_service_state_variable_info_free),
2210 (gupnp_service_action_info_free),
2211 (gupnp_service_introspection_finalize), (set_variable_limits),
2212 (set_variable_type), (get_action_argument),
2213 (gupnp_service_action_arg_info_free), (collect_action_names),
2214 (collect_action_arguments), (collect_actions),
2215 (collect_state_variables),
2216 (gupnp_service_introspection_list_action_names),
2217 (gupnp_service_introspection_list_action_arguments),
2218 (gupnp_service_introspection_list_actions),
2219 (gupnp_service_introspection_list_state_variables),
2220 (gupnp_service_introspection_get_state_variable):
2221 * libgupnp/gupnp-service-introspection.h:
2222 * tests/test-introspection.c: (print_action_arguments),
2223 (print_actions), (print_state_variables):
2225 - Return local copies of data to avoid malloc()s and free()s.
2226 - Cache the returned GSLists to avoid allocating the list each time.
2227 - return a 'const' from each function and update doc comments to
2228 make it very clear to the user that the return data can't be
2230 - Rename 'gtype' field to 'type' for consistancy.
2231 - Introduce an enum type for the direction of the action argument
2232 and use that instead of a string.
2233 - Add a function for getting state variable information by name.
2235 2007-07-01 Jorn Baayen <jorn@openedhand.com>
2237 * libgupnp/gupnp-service-proxy.c:
2239 Remove unused includes.
2241 2007-07-01 Jorn Baayen <jorn@openedhand.com>
2243 * libgupnp/gupnp-device-info.c:
2244 (gupnp_device_info_list_device_types),
2245 (gupnp_device_info_list_service_types):
2247 Use xml_util_get_child_element_content_glib().
2249 2007-07-01 Jorn Baayen <jorn@openedhand.com>
2251 * doc/gupnp-docs.sgml:
2252 * libgupnp/gupnp-control-point.c:
2253 * libgupnp/gupnp-device-info.c: (gupnp_device_info_class_init):
2254 * libgupnp/gupnp-device-proxy.c:
2255 * libgupnp/gupnp-device.c:
2256 * libgupnp/gupnp-service-info.c: (gupnp_service_info_class_init):
2257 * libgupnp/gupnp-service-introspection.c:
2258 * libgupnp/gupnp-service-proxy.c:
2259 * libgupnp/gupnp-service.c:
2261 Documentation updates.
2263 2007-07-01 Jorn Baayen <jorn@openedhand.com>
2265 * libgupnp/gupnp-service-introspection.c:
2266 (gupnp_service_introspection_finalize),
2267 (contstruct_introspection_info):
2269 Added small optimization + missing NULL checks.
2271 2007-07-01 Jorn Baayen <jorn@openedhand.com>
2273 * libgupnp/gupnp-device-info.c:
2274 * libgupnp/gupnp-device-proxy.c:
2275 (_gupnp_device_proxy_new_from_doc):
2276 * libgupnp/gupnp-root-device.c: (gupnp_root_device_constructor):
2277 * libgupnp/gupnp-service-info.c: (gupnp_service_info_finalize),
2278 (gupnp_service_info_get_udn):
2279 * libgupnp/gupnp-service-introspection.c: (set_variable_type),
2280 (get_state_variable), (get_action_argument), (get_actions),
2281 (get_state_variables):
2282 * libgupnp/gupnp-service-proxy.c:
2283 (_gupnp_service_proxy_new_from_doc):
2284 * libgupnp/xml-util.c: (xml_util_get_element):
2285 * libgupnp/xml-util.h:
2287 Add more shared XML helpers.
2289 2007-07-01 Jorn Baayen <jorn@openedhand.com>
2291 * libgupnp/gupnp-device-info.c: (get_property),
2292 (gupnp_device_info_get_friendly_name),
2293 (gupnp_device_info_get_manufacturer),
2294 (gupnp_device_info_get_model_name),
2295 (gupnp_device_info_get_model_number):
2297 Use get_url_property() for all URL properties.
2299 2007-07-01 Jorn Baayen <jorn@openedhand.com>
2301 * libgupnp/gupnp-service.c: (gupnp_service_class_init):
2303 Use G_TYPE_VALUE for "value" argument on "query-variable" signal.
2305 2007-07-01 Jorn Baayen <jorn@openedhand.com>
2307 * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property),
2308 (gupnp_device_info_get_property), (gupnp_device_info_finalize),
2309 (gupnp_device_info_class_init), (icon_parse):
2310 * libgupnp/gupnp-device-info.h:
2311 * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_device),
2312 (gupnp_device_proxy_get_service),
2313 (_gupnp_device_proxy_new_from_doc),
2314 (_gupnp_device_proxy_new_from_element):
2315 * libgupnp/gupnp-device.c: (gupnp_device_get_device),
2316 (gupnp_device_get_service), (_gupnp_device_new_from_element):
2317 * libgupnp/gupnp-service-info.c: (gupnp_service_info_set_property),
2318 (gupnp_service_info_get_property), (gupnp_service_info_finalize),
2319 (gupnp_service_info_class_init), (get_url_property):
2320 * libgupnp/gupnp-service-info.h:
2321 * libgupnp/gupnp-service-private.h:
2322 * libgupnp/gupnp-service-proxy-private.h:
2323 * libgupnp/gupnp-service-proxy.c:
2324 (_gupnp_service_proxy_new_from_doc),
2325 (_gupnp_service_proxy_new_from_element):
2326 * libgupnp/gupnp-service.c: (_gupnp_service_new_from_element):
2328 Store URL base as SoupUri, and use description file location
2329 as URL base if no base is specified explicitly.
2331 * libgupnp/gupnp-root-device.c: (gupnp_root_device_finalize),
2332 (gupnp_root_device_set_property), (gupnp_root_device_get_property),
2333 (gupnp_root_device_constructor):
2334 * libgupnp/gupnp-root-device.h:
2336 Remove API for setting URL base as the explicit specification of
2337 a URL base is discouraged.
2339 Don't autohost description file.
2341 * tests/test-server.c: (main):
2343 Updated for changed API.
2345 2007-06-30 Jorn Baayen <jorn@openedhand.com>
2347 * libgupnp/gupnp-service-proxy.c:
2348 (gupnp_service_proxy_begin_action):
2350 Use M-POST when POST fails.
2352 2007-06-30 Jorn Baayen <jorn@openedhand.com>
2354 * libgupnp/gupnp-error.h:
2355 * libgupnp/gupnp-service.c: (gupnp_service_action_return_error):
2357 Fill in description automatically for known error codes.
2359 * libgupnp/gupnp-service-proxy.c: (convert_error_code):
2361 Handle unknown error codes.
2363 2007-06-30 Jorn Baayen <jorn@openedhand.com>
2365 * libgupnp/gupnp-error.c:
2366 * libgupnp/gupnp-error.h:
2367 * libgupnp/gupnp-service-proxy.c: (set_error_literal),
2368 (convert_error_code), (gupnp_service_proxy_end_action_valist),
2369 (subscription_expire), (subscribe_got_response):
2370 * libgupnp/gupnp-service.c: (notify_got_response):
2372 More detailed erroring.
2374 2007-06-30 Jorn Baayen <jorn@openedhand.com>
2376 * libgupnp/gupnp-error.h:
2377 * libgupnp/gupnp-service-proxy.c:
2378 (gupnp_service_proxy_begin_action_valist), (set_error_literal),
2379 (gupnp_service_proxy_end_action_valist), (subscribe_got_response):
2380 * libgupnp/gupnp-service.c: (notify_got_response):
2382 Don't report GValue errors through GError, and define error codes.
2384 2007-06-30 Jorn Baayen <jorn@openedhand.com>
2386 * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_end_action),
2387 (gupnp_service_proxy_end_action_valist):
2389 Added set_error_literal() helper function.
2391 2007-06-30 Jorn Baayen <jorn@openedhand.com>
2393 * libgupnp/gupnp-service-proxy.c:
2394 (gupnp_service_proxy_end_action_valist):
2398 * libgupnp/gupnp-service.c: (gupnp_service_action_set_value),
2399 (gupnp_service_action_return_error):
2401 Return SOAP Fault in correct format.
2403 * tests/test-client.c: (service_proxy_available_cb):
2407 2007-06-30 Jorn Baayen <jorn@openedhand.com>
2409 * libgupnp/gupnp-service-proxy.c: (subscribe_got_response):
2411 Remove obsolete comment and correct warning message.
2413 * libgupnp/gupnp-service.c: (subscription_response),
2414 (subscription_timeout), (parse_timeout), (subscribe),
2417 Return correct timeout to subscriber.
2419 2007-06-30 Jorn Baayen <jorn@openedhand.com>
2421 * libgupnp/gupnp-control-point.c:
2422 (gupnp_control_point_resource_unavailable):
2424 Remove unavailable device from correct list!
2426 2007-06-29 Jorn Baayen <jorn@openedhand.com>
2428 * AUTHORS: Added Zeeshan.
2430 2007-06-29 Zeeshan Ali <zeenix@gstreamer.net>
2432 reviewed by: Jorn Baayen <jorn@openedhand.com>
2434 * libgupnp/Makefile.am:
2436 * libgupnp/gupnp-service-introspection.c:
2437 (gupnp_service_introspection_init),
2438 (gupnp_service_introspection_set_property),
2439 (gupnp_service_introspection_get_property),
2440 (gupnp_service_introspection_dispose),
2441 (gupnp_service_introspection_finalize),
2442 (gupnp_service_introspection_class_init), (get_scpd),
2443 (set_default_value), (set_string_value_limits),
2444 (set_value_limit_by_name), (set_variable_limits),
2445 (set_variable_type), (get_state_variable), (get_action_argument),
2446 (get_action_arguments), (action_argument_list_free), (get_actions),
2447 (get_state_variables), (contstruct_introspection_info),
2448 (collect_action_names), (collect_action_arguments),
2449 (collect_actions), (collect_allowed_values), (copy_state_variable),
2450 (collect_state_variables), (gupnp_service_introspection_new),
2451 (gupnp_service_introspection_list_action_names),
2452 (gupnp_service_introspection_list_action_arguments),
2453 (gupnp_service_introspection_list_actions),
2454 (gupnp_service_action_arg_info_free),
2455 (gupnp_service_action_info_free),
2456 (gupnp_service_introspection_list_state_variables),
2457 (gupnp_service_state_variable_info_free):
2458 * libgupnp/gupnp-service-introspection.h:
2460 Add service introspection support.
2462 * libgupnp/gupnp-service-info.c:
2463 (gupnp_service_proxy_request_introspection):
2464 * libgupnp/gupnp-service-info.h:
2466 - Add service introspection support.
2468 * tests/Makefile.am:
2469 * tests/test-introspection.c: (print_action_arguments),
2470 (print_actions), (print_state_variables),
2471 (service_proxy_available_cb), (service_proxy_unavailable_cb),
2474 Add a test application for the introspection API.
2476 2007-06-27 Jorn Baayen <jorn@openedhand.com>
2478 * libgupnp/gupnp-service-proxy.c:
2479 (gupnp_service_proxy_send_action_valist):
2481 Only run the main loop if it hasn't been quit before yet. Fixes
2484 2007-06-27 Jorn Baayen <jorn@openedhand.com>
2486 * libgupnp/gupnp-service.c: (subscription_data_free), (subscribe),
2487 (gupnp_service_constructor), (gupnp_service_finalize),
2488 (gupnp_service_class_init), (gupnp_service_notify_valist),
2489 (notify_got_response), (notify_subscriber), (flush_notifications),
2490 (gupnp_service_notify_value), (gupnp_service_freeze_notify),
2491 (gupnp_service_thaw_notify):
2492 * libgupnp/gupnp-service.h:
2494 Implement notification.
2496 2007-06-27 Jorn Baayen <jorn@openedhand.com>
2502 * libgupnp/gena-protocol.h:
2504 Added minimum timeout value.
2506 * libgupnp/gupnp-context.c: (gupnp_context_class_init):
2508 Use minimum timeout value.
2510 * libgupnp/gupnp-service.c: (gupnp_service_action_return_error),
2511 (gupnp_service_init), (query_state_variable),
2512 (control_server_handler), (subscription_response), (generate_sid),
2513 (subscription_timeout), (parse_timeout), (subscribe),
2514 (resubscribe), (unsubscribe), (subscription_server_handler),
2515 (gupnp_service_constructor), (gupnp_service_finalize),
2516 (gupnp_service_class_init), (gupnp_service_notify),
2517 (gupnp_service_notify_valist), (gupnp_service_notify_value),
2518 (gupnp_service_freeze_notify), (gupnp_service_thaw_notify),
2519 (_gupnp_service_new_from_element):
2521 Implement subscription.
2523 2007-06-27 Jorn Baayen <jorn@openedhand.com>
2525 * libgupnp/Makefile.am:
2526 * libgupnp/gupnp-error.h:
2527 * libgupnp/gupnp-service.c: (gupnp_service_action_return_error),
2528 (query_state_variable), (control_server_handler):
2529 * libgupnp/gupnp-service.h:
2530 * libgupnp/upnp-protocol.h:
2532 More flexible error handling.
2534 2007-06-27 Jorn Baayen <jorn@openedhand.com>
2536 * libgupnp/gupnp-service.c: (gupnp_service_action_get_value),
2537 (gupnp_service_action_set_valist),
2538 (gupnp_service_action_set_value), (gupnp_service_action_return),
2539 (gupnp_service_action_return_error), (gupnp_service_init),
2540 (new_action_response_node), (query_state_variable),
2541 (control_server_handler), (gupnp_service_notify_valist),
2542 (gupnp_service_notify_value), (gupnp_service_freeze_notify),
2543 (gupnp_service_thaw_notify), (_gupnp_service_new_from_element):
2544 * libgupnp/gupnp-service.h:
2546 Fully implement actioning.
2548 * libgupnp/Makefile.am:
2549 * libgupnp/gupnp-error.h:
2550 * libgupnp/upnp-protocol.h:
2552 Added error codes and descriptions.
2554 * libgupnp/xml-util.c: (xml_util_node_get_content_int):
2555 * libgupnp/xml-util.h:
2557 Added xml_util_node_get_content_value() for retrieving xmlNode
2558 contents as GValues.
2560 * libgupnp/gupnp-service-proxy.c: (server_handler):
2562 Use xml_util_node_get_content_value().
2564 * tests/test-server.c: (browse_cb):
2568 2007-06-26 Jorn Baayen <jorn@openedhand.com>
2570 * libgupnp/gupnp-service-proxy.c:
2571 (gupnp_service_proxy_end_action_valist):
2575 * libgupnp/gupnp-service.c: (gupnp_service_action_get_locales),
2576 (gupnp_service_action_get), (gupnp_service_action_get_valist),
2577 (gupnp_service_action_get_value), (gupnp_service_action_set),
2578 (gupnp_service_action_set_valist),
2579 (gupnp_service_action_set_value), (gupnp_service_action_return),
2580 (gupnp_service_action_return_error), (gupnp_service_class_init),
2581 (gupnp_service_notify), (gupnp_service_notify_valist),
2582 (gupnp_service_notify_value), (gupnp_service_freeze_notify),
2583 (gupnp_service_thaw_notify):
2587 2007-06-26 Jorn Baayen <jorn@openedhand.com>
2589 * libgupnp/gupnp-service.c: (query_state_variable),
2590 (control_server_handler):
2592 Implement QueryStateVariable.
2594 2007-06-26 Jorn Baayen <jorn@openedhand.com>
2596 * libgupnp/gupnp-service-proxy.c:
2597 (gupnp_service_proxy_begin_action_valist):
2598 * libgupnp/gupnp-service.c: (gupnp_service_action_get_name),
2599 (gupnp_service_action_get_locales),
2600 (gupnp_service_action_set_value), (gupnp_service_action_return),
2601 (gupnp_service_action_return_error), (gupnp_service_init),
2602 (query_state_variable), (control_server_handler),
2603 (subscription_server_handler), (gupnp_service_constructor),
2604 (gupnp_service_dispose), (gupnp_service_finalize),
2605 (gupnp_service_class_init), (gupnp_service_notify),
2606 (gupnp_service_notify_valist), (gupnp_service_notify_value),
2607 (gupnp_service_freeze_notify), (gupnp_service_thaw_notify),
2608 (_gupnp_service_new_from_element):
2609 * libgupnp/gupnp-service.h:
2611 Basic server-side actioning. No argument handling yet.
2613 * tests/test-server.c: (browse_cb), (main):
2617 2007-06-26 Jorn Baayen <jorn@openedhand.com>
2619 * libgupnp/accept-language.c: (accept_language_get_header):
2620 * libgupnp/accept-language.h:
2622 Cleanup, additional functions to convert between locale and HTTP
2623 language tag representations.
2625 * libgupnp/gupnp-service-proxy.c:
2626 (gupnp_service_proxy_begin_action_valist):
2628 Updated for accept-language function rename.
2632 Depend on shared-mime-data.
2634 * libgupnp/Makefile.am:
2635 * libgupnp/xdgmime/Makefile.am:
2636 * libgupnp/xdgmime/xdgmime.c:
2637 * libgupnp/xdgmime/xdgmime.h:
2638 * libgupnp/xdgmime/xdgmimealias.c:
2639 * libgupnp/xdgmime/xdgmimealias.h:
2640 * libgupnp/xdgmime/xdgmimecache.c:
2641 * libgupnp/xdgmime/xdgmimecache.h:
2642 * libgupnp/xdgmime/xdgmimeglob.c:
2643 * libgupnp/xdgmime/xdgmimeglob.h:
2644 * libgupnp/xdgmime/xdgmimeint.c:
2645 * libgupnp/xdgmime/xdgmimeint.h:
2646 * libgupnp/xdgmime/xdgmimemagic.c:
2647 * libgupnp/xdgmime/xdgmimemagic.h:
2648 * libgupnp/xdgmime/xdgmimeparent.c:
2649 * libgupnp/xdgmime/xdgmimeparent.h:
2650 * libgupnp/gupnp-context.c: (hosting_server_handler):
2652 Use xdgmime to set correct Content-Type HTTP headers.
2654 * tests/test-server.c: (main):
2656 Print port number on startup.
2658 2007-06-22 Jorn Baayen <jorn@openedhand.com>
2660 * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property),
2661 (gupnp_device_info_get_udn):
2663 Re-use get_property() in one more spot.
2665 * libgupnp/gupnp-service.h:
2667 Added G_GNUC_NULL_TERMINATED.
2669 * libgupnp/gupnp-root-device.c: (server_handler),
2670 (fill_resource_group), (gupnp_root_device_constructor):
2671 * libgupnp/xml-util.c: (xml_util_node_get_content_int):
2672 * libgupnp/xml-util.h:
2674 Move some XML utils to xml-util.c
2676 2007-06-22 Jorn Baayen <jorn@openedhand.com>
2678 * libgupnp/Makefile.am:
2679 * libgupnp/accept-language.c:
2680 * libgupnp/accept-language.h:
2681 * libgupnp/gupnp-context.c:
2682 (gupnp_context_get_subscription_timeout), (hosting_server_handler),
2683 (unregister_hosting_server_handler):
2685 Proper Accept-Language support.
2687 * libgupnp/gupnp-device.c: (gupnp_device_get_service):
2688 * libgupnp/gupnp-service-private.h:
2689 * libgupnp/gupnp-service-proxy.c:
2690 (gupnp_service_proxy_begin_action),
2691 (gupnp_service_proxy_begin_action_valist):
2692 * libgupnp/gupnp-service.c: (gupnp_service_action_get_name),
2693 (gupnp_service_thaw_notify):
2694 * libgupnp/gupnp-service.h:
2696 Handle service object creation.
2698 2007-06-19 Jorn Baayen <jorn@openedhand.com>
2701 * doc/api-design.txt:
2703 Remove obsolete API design document.
2705 * libgupnp/gupnp-device.c:
2707 Small doc correction.
2709 * libgupnp/Makefile.am:
2710 * libgupnp/gupnp-service.c:
2711 * libgupnp/gupnp-service.h:
2713 Added Service skels.
2715 * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_class_init):
2717 Delete obsolete code.
2719 2007-06-19 Jorn Baayen <jorn@openedhand.com>
2721 * libgupnp/gupnp-context.c: (_gupnp_context_get_session),
2722 (gupnp_context_get_subscription_timeout):
2723 * libgupnp/gupnp-context.h:
2724 * tests/test-server.c: (main):
2726 Add regular web server functionality.
2728 2007-06-19 Jorn Baayen <jorn@openedhand.com>
2730 * libgupnp/gupnp-control-point.c: (description_loaded):
2731 * libgupnp/gupnp-device-proxy-private.h:
2732 * libgupnp/gupnp-device-proxy.c:
2733 (_gupnp_device_proxy_find_element_for_udn):
2734 * libgupnp/gupnp-device-proxy.h:
2735 * libgupnp/gupnp-service-proxy-private.h:
2736 * libgupnp/gupnp-service-proxy.c: (find_service_element_for_type):
2737 * libgupnp/gupnp-service-proxy.h:
2739 Make ServiceProxy and DeviceProxy constructors private.
2741 2007-06-19 Jorn Baayen <jorn@openedhand.com>
2743 * libgupnp/gupnp-context.c: (gupnp_context_dispose):
2744 * libgupnp/gupnp-control-point.c: (gupnp_control_point_dispose):
2745 * libgupnp/gupnp-root-device.c: (gupnp_root_device_finalize),
2746 (gupnp_root_device_dispose):
2747 * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose):
2749 Chain up to parent class dispose and finalize methods.
2751 2007-06-19 Jorn Baayen <jorn@openedhand.com>
2753 * libgupnp/gupnp-context.c: (gupnp_context_init):
2755 Remove unnecessary initialisations.
2757 2007-06-19 Jorn Baayen <jorn@openedhand.com>
2759 * libgupnp/gupnp-context.c: (gupnp_context_class_init):
2760 * libgupnp/gupnp-device-info.c: (gupnp_device_info_class_init):
2761 * libgupnp/gupnp-service-info.c: (gupnp_service_info_class_init):
2762 * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_class_init):
2764 Added G_PARAM_STATIC_{NAME,NICK,BLURB}.
2766 2007-06-19 Jorn Baayen <jorn@openedhand.com>
2768 * tests/test-server.c: (main):
2770 Use g_object_weak_ref() to destroy the description document when
2771 the root device is finalized.
2773 2007-06-19 Jorn Baayen <jorn@openedhand.com>
2775 * libgupnp/gupnp-root-device.c: (fill_resource_group):
2777 Do not overwrite 'element' with child elements as it is still
2780 * tests/Makefile.am:
2781 * tests/test-server.c:
2783 A tests/test-client.c:
2785 Added server test case.
2787 2007-06-18 Jorn Baayen <jorn@openedhand.com>
2789 * libgupnp/Makefile.am:
2790 * libgupnp/gupnp-device.c:
2791 * libgupnp/gupnp-root-device.c:
2792 * libgupnp/gupnp-root-device.h:
2794 Implement Device and RootDevice.
2796 * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property),
2797 (gupnp_device_info_class_init):
2799 Detect UDN if not explicitly specified.
2801 * libgupnp/gupnp-control-point.c: (parse_usn):
2802 * libgupnp/gupnp-service.h:
2806 * libgupnp/gupnp-device-proxy.c:
2807 * libgupnp/gupnp-device-proxy.h:
2809 No need for a private structure any more.
2811 2007-06-14 Jorn Baayen <jorn@openedhand.com>
2813 * libgupnp/gupnp-context.c: (get_default_host_ip):
2815 Set IP to 127.0.0.1 if no non-loopback device could be found.
2817 * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property),
2818 (gupnp_device_info_get_property), (gupnp_device_info_dispose),
2819 (gupnp_device_info_finalize), (gupnp_device_info_class_init),
2820 (gupnp_device_info_get_context), (gupnp_device_info_get_location),
2821 (gupnp_device_info_get_url_base), (gupnp_device_info_get_udn),
2822 (get_property), (gupnp_device_info_get_serial_number),
2823 (gupnp_device_info_get_upc), (icon_parse), (icon_free),
2824 (gupnp_device_info_get_icon_url), (gupnp_device_info_list_devices),
2825 (gupnp_device_info_list_device_types),
2826 (gupnp_device_info_get_device), (gupnp_device_info_list_services),
2827 (gupnp_device_info_list_service_types),
2828 (gupnp_device_info_get_service):
2829 * libgupnp/gupnp-device-info.h:
2830 * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_new):
2831 * libgupnp/gupnp-service-info.c: (gupnp_service_info_set_property),
2832 (gupnp_service_info_get_property), (gupnp_service_info_dispose),
2833 (gupnp_service_info_finalize), (gupnp_service_info_class_init),
2834 (gupnp_service_info_get_context),
2835 (gupnp_service_info_get_location),
2836 (gupnp_service_info_get_url_base), (gupnp_service_info_get_udn),
2837 (get_property), (get_url_property):
2838 * libgupnp/gupnp-service-info.h:
2839 * libgupnp/gupnp-service-proxy-private.h:
2840 * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_class_init),
2841 (gupnp_service_proxy_new):
2843 Add 'context' and 'url-base' properties to info classes.
2845 * libgupnp/gupnp-service.h:
2846 * libgupnp/gupnp-root-device.h:
2848 Server side API changes.
2850 2007-06-11 Jorn Baayen <jorn@openedhand.com>
2852 * libgupnp/gupnp-root-device.h:
2853 * libgupnp/gupnp-service.h:
2857 2007-06-11 Jorn Baayen <jorn@openedhand.com>
2859 * libgupnp/Makefile.am:
2860 * libgupnp/gupnp-device.h:
2861 * libgupnp/gupnp-root-device.h:
2862 * libgupnp/gupnp-service.h:
2865 Headers for server side. These are not final yet.
2867 2007-05-30 Jorn Baayen <jorn@openedhand.com>
2869 * libgupnp/gupnp-control-point.c:
2870 (gupnp_control_point_resource_unavailable):
2872 Remove unavailable proxies from cache.
2874 2007-05-29 Jorn Baayen <jorn@openedhand.com>
2878 Bump version to 0.1.99.
2880 * libgupnp/gupnp-device-info.c: (gupnp_device_info_get_icon_url):
2881 * libgupnp/gupnp-device-info.h:
2882 * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_url_base),
2883 (gupnp_device_proxy_get_device), (gupnp_device_proxy_get_service),
2884 (gupnp_device_proxy_init), (gupnp_device_proxy_class_init):
2885 * libgupnp/gupnp-device-proxy.h:
2887 Move device subdevice and service retreival from DeviceProxy to
2888 DeviceInfo. This so that client and server side code can expose
2891 * libgupnp/gupnp-service-proxy.c:
2892 (gupnp_service_proxy_begin_action), (get_current_language),
2893 (action_got_response), (gupnp_service_proxy_begin_action_valist):
2894 * tests/test.c: (main):
2896 Set Accept-Language header on action requests.
2898 2007-05-26 Jorn Baayen <jorn@openedhand.com>
2900 * libgupnp/gupnp-context.c:
2901 * libgupnp/gupnp-context.h:
2902 * libgupnp/gupnp-control-point.c:
2903 * libgupnp/gupnp-control-point.h:
2904 * libgupnp/gupnp-device-info.c:
2905 * libgupnp/gupnp-device-info.h:
2906 * libgupnp/gupnp-device-proxy.c:
2907 * libgupnp/gupnp-device-proxy.h:
2908 * libgupnp/gupnp-error.c:
2909 * libgupnp/gupnp-service-info.c:
2910 * libgupnp/gupnp-service-info.h:
2911 * libgupnp/gupnp-service-proxy.c:
2912 * libgupnp/gupnp-service-proxy.h:
2916 2007-05-26 Jorn Baayen <jorn@openedhand.com>
2920 * doc/gupnp-docs.sgml:
2924 2007-05-22 Jorn Baayen <jorn@openedhand.com>
2926 * libgupnp/gupnp-device-proxy.h:
2927 * libgupnp/gupnp-service-proxy.h:
2929 Doc coverage to 100%.
2931 2007-05-21 Jorn Baayen <jorn@openedhand.com>
2933 * libgupnp/Makefile.am:
2935 Make sure all files get packaged.
2937 * libgupnp/gupnp-context.c: (gupnp_context_class_init):
2938 * libgupnp/gupnp-context.h:
2939 * libgupnp/gupnp-control-point.c: (gupnp_control_point_class_init):
2940 * libgupnp/gupnp-control-point.h:
2941 * libgupnp/gupnp-device-info.c: (gupnp_device_info_class_init),
2942 (icon_parse), (icon_free):
2943 * libgupnp/gupnp-device-info.h:
2944 * libgupnp/gupnp-error.c:
2945 * libgupnp/gupnp-service-info.c: (gupnp_service_info_class_init),
2946 (get_url_property), (gupnp_service_info_get_service_type),
2947 (gupnp_service_info_get_id), (gupnp_service_info_get_scpd_url),
2948 (gupnp_service_info_get_control_url):
2949 * libgupnp/gupnp-service-info.h:
2950 * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_class_init):
2954 2007-05-21 Jorn Baayen <jorn@openedhand.com>
2960 * doc/gupnp-docs.sgml:
2964 2007-05-21 Jorn Baayen <jorn@openedhand.com>
2972 Added missing files.
2974 2007-05-10 Jorn Baayen <jorn@openedhand.com>
2981 * libgupnp/gupnp-device-info.h:
2983 Removed device type defines. These belong in any higher level
2986 * tests/test.c: (device_proxy_available_cb),
2987 (service_proxy_available_cb), (service_proxy_unavailable_cb),
2990 Added notification test and cleaned up.
2992 2007-05-09 Jorn Baayen <jorn@openedhand.com>
2994 * libgupnp/gupnp-service-proxy.c: (server_handler):
2996 Parse XML part of NOTIFY messages and call notify callbacks.
2998 This means that now the client side of GUPnP is feature complete.
3003 Remove old comments.
3005 2007-05-09 Jorn Baayen <jorn@openedhand.com>
3007 * libgupnp/gupnp-service-proxy.c:
3008 (gupnp_service_proxy_get_element),
3009 (gupnp_service_proxy_get_url_base), (notify_data_free),
3010 (gupnp_service_proxy_init), (gupnp_service_proxy_dispose),
3011 (gupnp_service_proxy_finalize),
3012 (gupnp_service_proxy_end_action_valist),
3013 (gupnp_service_proxy_cancel_action):
3014 * libgupnp/gupnp-service-proxy.h:
3016 Add notification management.
3018 2007-05-09 Jorn Baayen <jorn@openedhand.com>
3020 * libgupnp/gupnp-service-proxy.c:
3021 (gupnp_service_proxy_end_action_valist):
3023 Correct error message.
3025 2007-05-09 Jorn Baayen <jorn@openedhand.com>
3027 * libgupnp/gupnp-service-proxy.c: (server_handler),
3028 (subscription_expire), (subscribe_got_response), (subscribe),
3031 Emit 'subscription-lost' when appropriate.
3033 Keep track of notify sequence numbers and resubscribe when
3034 we notice dropped notifications.
3036 2007-05-09 Jorn Baayen <jorn@openedhand.com>
3038 * libgupnp/gupnp-context-private.h:
3039 * libgupnp/gupnp-context.c:
3040 * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_finalize),
3041 (gupnp_service_proxy_remove_notify), (subscription_expire),
3042 (subscribe_got_response), (subscribe), (unsubscribe):
3044 Generate a unique path for each proxy on the server, and use
3045 soup_server_add_handler() to capture its requests instead of
3046 using a 'server-message-received' signal from GUPnPContext.
3048 2007-05-09 Jorn Baayen <jorn@openedhand.com>
3050 * libgupnp/gupnp-service-proxy.c:
3051 (gupnp_service_proxy_remove_notify), (subscription_expire),
3052 (subscribe_got_response), (subscribe), (unsubscribe):
3054 Correct "Callback" URL format is subscription message.
3055 Disable Date header parsing for now as getting a local time
3056 (taking into account daylight saving) out of an RFC 1123 time
3059 2007-05-09 Jorn Baayen <jorn@openedhand.com>
3061 * libgupnp/gupnp-context-private.h:
3062 * libgupnp/gupnp-context.c: (gupnp_context_class_init),
3063 (_gupnp_context_get_session), (server_handler),
3064 (_gupnp_context_get_server):
3066 Add hidden 'server-message-received' signal, emitted whenever
3067 the SoupServer receives a message.
3069 2007-05-09 Jorn Baayen <jorn@openedhand.com>
3071 * libgupnp/gupnp-context.c: (_gupnp_context_get_session),
3072 (default_server_handler), (_gupnp_context_get_server),
3073 (gupnp_context_get_port), (gupnp_context_set_subscription_timeout):
3074 * libgupnp/gupnp-service-proxy.c:
3075 (gupnp_service_proxy_remove_notify), (make_timeout_header),
3076 (subscription_expire), (subscribe_got_response), (subscribe):
3078 Support infinite timeout locally.
3080 Add a default server handler returning 501.
3082 2007-05-08 Jorn Baayen <jorn@openedhand.com>
3084 * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose),
3085 (subscribe), (unsubscribe), (gupnp_service_proxy_set_subscribed):
3087 Send unsubscription message synchronised on dispose.
3089 2007-05-08 Jorn Baayen <jorn@openedhand.com>
3091 * libgupnp/gupnp-context.c: (gupnp_context_init),
3092 (gupnp_context_set_property), (gupnp_context_get_property),
3093 (gupnp_context_class_init), (_gupnp_context_get_server_url),
3094 (gupnp_context_new):
3095 * libgupnp/gupnp-context.h:
3096 * libgupnp/gupnp-service-proxy.c: (subscription_expire),
3097 (subscribe_got_response), (subscribe):
3099 Added subscription-timeout property to Context and use in
3102 2007-05-08 Jorn Baayen <jorn@openedhand.com>
3104 * libgupnp/gupnp-service-proxy.c: (subscribe_got_response):
3106 Support infinite timeouts.
3108 2007-05-08 Jorn Baayen <jorn@openedhand.com>
3110 * libgupnp/Makefile.am:
3111 * libgupnp/gupnp-device-proxy.c:
3112 * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose),
3113 (gupnp_service_proxy_begin_action), (action_got_response),
3114 (gupnp_service_proxy_end_action_valist),
3115 (gupnp_service_proxy_remove_notify), (subscription_expire),
3116 (subscribe_got_response), (subscribe), (unsubscribe),
3117 (gupnp_service_proxy_set_subscribed):
3119 Implement subscription.
3121 * tests/test.c: (service_proxy_available_cb):
3125 2007-05-08 Jorn Baayen <jorn@openedhand.com>
3127 * libgupnp/gupnp-context-private.h:
3128 * libgupnp/gupnp-context.c: (make_server_id), (get_ip),
3129 (get_default_host_ip), (gupnp_context_init),
3130 (gupnp_context_set_property), (gupnp_context_get_property),
3131 (gupnp_context_dispose), (gupnp_context_finalize),
3132 (gupnp_context_class_init), (_gupnp_context_get_session):
3133 * libgupnp/gupnp-context.h:
3135 Start a SOAP server on demand, and add internal API for
3136 retrieving a URL to the server itself.
3138 * tests/test.c: (main):
3140 Updated to use changed GUPnPContext constructor.
3142 2007-05-07 Jorn Baayen <jorn@openedhand.com>
3144 * libgupnp/gupnp-device-info.c: (icon_parse), (icon_free),
3145 (gupnp_device_info_get_icon_url):
3146 * libgupnp/gupnp-device-info.h:
3147 * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_finalize),
3148 (gupnp_device_proxy_get_element),
3149 (gupnp_device_proxy_get_url_base), (gupnp_device_proxy_init),
3150 (gupnp_device_proxy_list_devices), (gupnp_device_proxy_get_device),
3151 (gupnp_device_proxy_list_services),
3152 (gupnp_device_proxy_get_service),
3153 (_gupnp_device_proxy_find_element_for_udn),
3154 (gupnp_device_proxy_new), (_gupnp_device_proxy_new_from_element):
3155 * libgupnp/gupnp-service-info.c: (get_property),
3156 (gupnp_service_info_get_service_type), (gupnp_service_info_get_id),
3157 (gupnp_service_info_get_scpd_url),
3158 (gupnp_service_info_get_control_url):
3159 * libgupnp/gupnp-service-info.h:
3160 * libgupnp/gupnp-service-proxy-private.h:
3161 * libgupnp/gupnp-service-proxy.c:
3162 (gupnp_service_proxy_action_free),
3163 (gupnp_service_proxy_get_element),
3164 (gupnp_service_proxy_get_property), (gupnp_service_proxy_dispose),
3165 (gupnp_service_proxy_finalize), (gupnp_service_proxy_class_init),
3166 (gupnp_service_proxy_send_action_valist),
3167 (gupnp_service_proxy_begin_action_valist),
3168 (gupnp_service_proxy_end_action),
3169 (gupnp_service_proxy_end_action_valist),
3170 (find_service_element_for_type), (gupnp_service_proxy_new),
3171 (_gupnp_service_proxy_new_from_element):
3173 Take URLBase into account.
3174 Make sending actions and parsing action responses work correctly.
3176 * tests/test.c: (service_proxy_available_cb),
3177 (service_proxy_unavailable_cb), (main):
3179 Add a little control test case for ContentDirectories.
3181 2007-05-07 Jorn Baayen <jorn@openedhand.com>
3183 * libgupnp/gupnp-control-point.c: (description_loaded),
3186 Correct USN parsing.
3188 * libgupnp/gupnp-service-proxy.c:
3189 (gupnp_service_proxy_begin_action_valist):
3193 2007-05-03 Jorn Baayen <jorn@openedhand.com>
3195 * libgupnp/gupnp-control-point.c: (parse_usn),
3196 (gupnp_control_point_resource_available),
3197 (gupnp_control_point_class_init),
3198 (gupnp_control_point_get_context):
3199 * libgupnp/gupnp-control-point.h:
3200 * tests/test.c: (main):
3202 GSSDPServiceBrowser -> GSSDPResourceBrowser.
3204 2007-04-25 Zeeshan Ali <zeenix@gstreamer.net>
3206 * libgupnp/gupnp-device-info.h:
3207 * tests/test.c: (device_proxy_available_cb):
3209 Add some device type defines.
3211 2007-04-16 Jorn Baayen <jorn@openedhand.com>
3213 * libgupnp/gupnp-context-private.h:
3215 Added missing header. Spotted by Priit Laes.