Emmanuele Bassi [Wed, 25 Aug 2010 11:06:47 +0000 (12:06 +0100)]
datetime: Clean up macros and unused variables
The most complex macros should be converted to inlined functions,
instead, to guarantee some type safety.
Emmanuele Bassi [Tue, 24 Aug 2010 23:27:49 +0000 (00:27 +0100)]
datetime: Remove the translation marker for a warning message
Emmanuele Bassi [Tue, 24 Aug 2010 22:30:30 +0000 (23:30 +0100)]
docs: Add GDateTime to the GLib API reference
Emmanuele Bassi [Tue, 24 Aug 2010 20:37:43 +0000 (21:37 +0100)]
docs: Mention TZDIR
The timezone code in GDateTime honours the TZDIR environment variable,
so it should be mentioned in the list of variables GLib checks at
runtime.
Thiago Santos [Fri, 28 May 2010 11:19:29 +0000 (08:19 -0300)]
datetime: Add GDateTime to the GType system
As with other GLib data types, use a GBoxed.
Thiago Santos [Fri, 28 May 2010 11:19:29 +0000 (08:19 -0300)]
Add GDateTime to GLib
GDateTime is an opaque data type containing a date and time
representation. It's immutable once created and reference
counted.
https://bugzilla.gnome.org/show_bug.cgi?id=50076
Based on the code by: Christian Hergert <chris@dronelabs.com>
Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
Emmanuele Bassi [Tue, 24 Aug 2010 21:47:02 +0000 (22:47 +0100)]
Add C_() to glibintl.h
Cody Russell [Mon, 23 Aug 2010 17:34:53 +0000 (12:34 -0500)]
Add const to _pcre_ucp_othercase() definition in pcre_internal.h
Jorge González [Mon, 23 Aug 2010 15:40:02 +0000 (17:40 +0200)]
Updated Spanish translation
Tor Lillqvist [Mon, 23 Aug 2010 11:31:20 +0000 (14:31 +0300)]
Include gproxyaddress.h explicitly
Matthias Clasen [Mon, 23 Aug 2010 04:37:52 +0000 (00:37 -0400)]
Improve testutils test coverage
Matthias Clasen [Mon, 23 Aug 2010 04:37:37 +0000 (00:37 -0400)]
Improve printf test coverage
Matthias Clasen [Mon, 23 Aug 2010 04:37:21 +0000 (00:37 -0400)]
Improve GDate test coverate
Matthias Clasen [Mon, 23 Aug 2010 04:36:36 +0000 (00:36 -0400)]
Improve GDBus introspection test coverage
David Zeuthen [Mon, 23 Aug 2010 02:56:49 +0000 (22:56 -0400)]
GDBusMethodInvocation: nuke constructor
... that is, make it private. This makes sense because users are never
expected to create such objects themselves - only the GDBus core will
need this.
Signed-off-by: David Zeuthen <davidz@redhat.com>
Fran Diéguez [Mon, 23 Aug 2010 00:24:25 +0000 (02:24 +0200)]
Updated galician translations
Jorge González [Sun, 22 Aug 2010 19:17:53 +0000 (21:17 +0200)]
Updated Spanish translation
David Zeuthen [Fri, 6 Aug 2010 00:37:27 +0000 (20:37 -0400)]
Bug 624546 – Modification of GDBusMessage in filter function
Allow modifying a GDBusMessage in a filter function and also add tests
for this. This breaks API but leaves ABI (almost) intact - at least
dconf's GSettings backend (the only big user I know of) will keep
working.
https://bugzilla.gnome.org/show_bug.cgi?id=624546
Signed-off-by: David Zeuthen <davidz@redhat.com>
Ask H. Larsen [Sun, 22 Aug 2010 11:17:24 +0000 (13:17 +0200)]
Updated Danish translation
Matthias Clasen [Sun, 22 Aug 2010 02:22:25 +0000 (22:22 -0400)]
Add proxy extension point to overview docs
The 'Extending GIO' section is supposed to list all extension
points, so add the proxy extension point here.
Matthias Clasen [Sun, 22 Aug 2010 02:14:28 +0000 (22:14 -0400)]
Fix build on !unix
There was one code block still referring to fd_list outside of
the ifdef G_OS_UNIX. Pointed out by Sam Thursfield in bug 627392.
Matthias Clasen [Sun, 22 Aug 2010 02:09:32 +0000 (22:09 -0400)]
Better fix for the build problem
Use gnetworkingprivate.h instead, patch by Emilio Pozuelo Monfort,
bug 627407.
Matthias Clasen [Sun, 22 Aug 2010 02:06:56 +0000 (22:06 -0400)]
Make gdbus-peer build on !linux
Based on a patch by Koop Mast, bug 627088.
Matthias Clasen [Sun, 22 Aug 2010 01:58:51 +0000 (21:58 -0400)]
Fix a duplicate word
Pointed out in bug 627604.
Matthias Clasen [Sat, 21 Aug 2010 23:27:11 +0000 (19:27 -0400)]
Add some more annotations
Matthias Clasen [Sat, 21 Aug 2010 23:18:40 +0000 (19:18 -0400)]
Improve test coverage for actions and action groups
Matthias Clasen [Sat, 21 Aug 2010 23:18:17 +0000 (19:18 -0400)]
Document behaviour wrt. to floating variants
Matthias Clasen [Sat, 21 Aug 2010 23:11:03 +0000 (19:11 -0400)]
Document behaviour wrt to floating variants
Matthias Clasen [Sat, 21 Aug 2010 20:30:50 +0000 (16:30 -0400)]
Add some annotations
Ryan Lortie [Sat, 21 Aug 2010 21:35:32 +0000 (17:35 -0400)]
Simplify/fix state logic in GAction, test it.
Matthias Clasen [Sat, 21 Aug 2010 19:40:46 +0000 (15:40 -0400)]
Add some forgotten symbols
Matthias Clasen [Sat, 21 Aug 2010 19:40:32 +0000 (15:40 -0400)]
Ignore some more private headers
Matthias Clasen [Sat, 21 Aug 2010 19:34:40 +0000 (15:34 -0400)]
Fix documentation issues
Gtk-doc is unhappy if the parameter names don't match between header
and source.
Matthias Clasen [Sat, 21 Aug 2010 19:34:18 +0000 (15:34 -0400)]
Fix GActionGroup docs
Милош Поповић [Sat, 21 Aug 2010 18:05:14 +0000 (20:05 +0200)]
Updated Serbian translation
Chao-Hsiung Liao [Sat, 21 Aug 2010 11:43:37 +0000 (19:43 +0800)]
Updated Traditional Chinese translation(Hong Kong and Taiwan)
Yaron Shahrabani [Fri, 20 Aug 2010 23:35:07 +0000 (02:35 +0300)]
Updated Hebrew translation.
Fran Diéguez [Fri, 20 Aug 2010 11:23:11 +0000 (13:23 +0200)]
Updated galician translations
Dan Winship [Thu, 19 Aug 2010 22:24:53 +0000 (18:24 -0400)]
Fix misc compiler warnings in (mostly) test programs
Dan Winship [Thu, 19 Aug 2010 21:51:24 +0000 (17:51 -0400)]
gio.symbols: add missing g_simple_action_group stuff
Dan Winship [Thu, 19 Aug 2010 21:51:01 +0000 (17:51 -0400)]
gproxyaddressenumerator.h: add missing G_END_DECLS
Nicolas Dufresne [Thu, 19 Aug 2010 21:31:42 +0000 (17:31 -0400)]
gio/proxy: Fixed compilation warnings
* Wrong return type (NULL instead of FALSE)
* Unused static function declaration
Nicolas Dufresne [Thu, 19 Aug 2010 20:23:50 +0000 (16:23 -0400)]
Add support for g_socket_client_add_application_proxy()
This allow application to take control over certain proxy protocol
handling. When a proxy protocol must be used and is found in the
application proxies, GSocketClient will simply TCP connect to the proxy
server and return the connection.
Reviewed-by: Dan Winship <danw@gnome.org>
Nicolas Dufresne [Tue, 25 May 2010 20:02:42 +0000 (16:02 -0400)]
Implemented SOCKSv4 and SOCKSv4a
Nicolas Dufresne [Fri, 7 May 2010 20:35:04 +0000 (16:35 -0400)]
Implemented proxy sample code that connect to proxy
Nicolas Dufresne [Thu, 29 Apr 2010 22:51:42 +0000 (18:51 -0400)]
Implemented g_socket_client_connect_to_uri() method
Using this rather than g_socket_client_connect() or
g_socket_client_connect_to_host() allows #GSocketClient to
determine when to use application-specific proxy protocols.
Reviewed-by: Dan Winship <danw@gnome.org>
Nicolas Dufresne [Tue, 10 Aug 2010 20:48:45 +0000 (16:48 -0400)]
Hooked proxy enumeration into GSocketClient
This functionnallity can be disabled using property enable-proxy. It
enumerates addresses using GSocketConnectable::proxy_enumerate() instead of
enumerate(). When the returned address is of type GProxyAddress (a type
based on GInetSocketAddress), it gets the proxy protocol handler using
g_proxy_get_default_for_protocol() and call connect() on it.
Reviewed-by: Dan Winship <danw@gnome.org>
Nicolas Dufresne [Fri, 23 Jul 2010 00:51:23 +0000 (20:51 -0400)]
Implement GProxyConnection a GIOStream+GTcpConn wrapper
This class inherit from GTcpConnection by refing the socket of
an existing GTcpConnection and wraps a custom GIOStream into itself. This
is to allow implementing proxies that alters data stream, like when using
GSSAPI privacy inside SOCKS5.
Nicolas Dufresne [Thu, 29 Apr 2010 19:22:55 +0000 (15:22 -0400)]
Implemented SOCKSv5 proxy support
Dan Winship [Fri, 25 Jun 2010 18:28:02 +0000 (14:28 -0400)]
GSocket: store the remote_address when connecting
This way, if g_socket_connect() is called with a GProxyAddress,
g_socket_get_remote_address() will later return that same address.
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
Nicolas Dufresne [Wed, 28 Apr 2010 19:39:56 +0000 (15:39 -0400)]
Extend IO_ERROR enum for Proxy support
Nicolas Dufresne [Fri, 7 May 2010 20:32:05 +0000 (16:32 -0400)]
Implemented proxy sample for all Connectables
Nicolas Dufresne [Tue, 10 Aug 2010 19:45:32 +0000 (15:45 -0400)]
Implemented proxy_enumerate() for all Connectables
This patch implements method proxy_enumerate from GSocketConnectable for
all connectables (GNetworkAddress, GNetworkService, GInetSocketAddress
and GUnixSocketAddress).
Reviewed-by: Dan Winship <danw@gnome.org>
Nicolas Dufresne [Tue, 10 Aug 2010 20:53:25 +0000 (16:53 -0400)]
Added proxy_enumerate method to GSocketConnectable
Reviewed-by: Dan Winship <danw@gnome.org>
Nicolas Dufresne [Fri, 7 May 2010 20:27:34 +0000 (16:27 -0400)]
Added GProxyAddressEnumerator to proxy sample code
Nicolas Dufresne [Tue, 10 Aug 2010 19:25:11 +0000 (15:25 -0400)]
Adding GProxyAddressEnumerator class
An implementation of GSocketAddressEnumerator that handles proxy
enumeration. This class is mainly usefull for Connectables implementation
such as NetworkService, NetworkAddress and SocketAddress to handle proxies.
Reviewed-by: Dan Winship <danw@gnome.org>
Nicolas Dufresne [Tue, 10 Aug 2010 19:24:37 +0000 (15:24 -0400)]
Added GProxy interface for proxy extension point
Implement an extension point for proxy protocol implementation. This
is mainly useful for socket-based proxy where it is possible to use the
proxied socket the same way it would for other stream based socket.
Reviewed-by: Dan Winship <danw@gnome.org>
Nicolas Dufresne [Tue, 10 Aug 2010 19:23:37 +0000 (15:23 -0400)]
Added method g_network_address_parse_uri()
This method allow creating a network address from a URI. If no port is
found in the URI, the default_port parameter will be used. Note that new
property scheme is there for future TLS implementation.
Reviewed-by: Dan Winship <danw@gnome.org>
Nicolas Dufresne [Mon, 26 Apr 2010 21:27:33 +0000 (17:27 -0400)]
Implement GProxyAddress
A GSocketInetAddress representing the proxy server address with additional
properties proxy type, destination address and port, username and password.
Reviewed-by: Dan Winship <danw@gnome.org>
Nicolas Dufresne [Fri, 7 May 2010 20:23:45 +0000 (16:23 -0400)]
Implemented proxy sample code
Reviewed-by: Dan Winship <danw@gnome.org>
Nicolas Dufresne [Fri, 7 May 2010 19:55:54 +0000 (15:55 -0400)]
Implemented proxy-resolver extension point
This extension point allow extending GLib with library like LibProxy that
interprets system proxy settings and finds the appropriate configuration
based on the type of connection being made.
Reviewed-by: Dan Winship <danw@gnome.org>
Jorge González [Thu, 19 Aug 2010 19:17:09 +0000 (21:17 +0200)]
Updated Spanish translation
Yaron Shahrabani [Thu, 19 Aug 2010 06:31:02 +0000 (09:31 +0300)]
Updated Hebrew translation.
David Zeuthen [Wed, 18 Aug 2010 17:07:25 +0000 (13:07 -0400)]
Bug 627188 – gdbus-non-socket test occasionally fails
Fix logical bug in test case to avoid race condition between the
client and the server.
Signed-off-by: David Zeuthen <davidz@redhat.com>
Matthias Clasen [Wed, 18 Aug 2010 16:07:01 +0000 (12:07 -0400)]
Make gunixcredentialsmessage.h standalone includable
Emmanuele Bassi [Wed, 18 Aug 2010 15:54:36 +0000 (16:54 +0100)]
action: Minor fixes
• Argument validation.
• Since: annotations.
• Remove (allow-none) annotations from return values.
• Coding style fixes.
Emmanuele Bassi [Wed, 18 Aug 2010 15:54:11 +0000 (16:54 +0100)]
action-group: Check aginst the correct GType macro
G_TYPE_ACTION_GROUP is not a G_TYPE_ACTION.
David Zeuthen [Wed, 18 Aug 2010 15:35:25 +0000 (11:35 -0400)]
GDBusProxy: Call into well-known name if no name owner currently exists
This is really what (API) users expect from GDBusProxy - in
particular, mclasen and I ran into this problem while debugging a
upower issue, see
https://bugzilla.redhat.com/show_bug.cgi?id=624125
In a nutshell, the problem is that polkitd crashes while upower holds
a PolkitAuthority object (which in turns contains a GDBusProxy for the
well-known name org.freedesktop.PolicyKit1). This means that
subsequent calls on the PolkitAuthority (which is translated into
calls into the GDBusProxy) fails since :g-name-owner is NULL.
With this fix, we'll be requesting the bus daemon to launch polkitd
since we will start calling into org.freedesktop.PolicyKit1 as soon as
we notice that there is no owner for this name.
Unfortunately our test suite doesn't cover service activation so there
is no way to reliably test this. I will file a bug about this.
Signed-off-by: David Zeuthen <davidz@redhat.com>
David Zeuthen [Wed, 18 Aug 2010 14:52:28 +0000 (10:52 -0400)]
GDBusProxy: Use %, not #, for referencing enum constants in gtk-doc comments
Signed-off-by: David Zeuthen <davidz@redhat.com>
Christian Persch [Tue, 17 Aug 2010 23:02:22 +0000 (01:02 +0200)]
G_OPTION_FLAG_NO_ARG is only for callback options
Bug #627252.
Ryan Lortie [Wed, 18 Aug 2010 06:15:09 +0000 (02:15 -0400)]
add GSimpleActionGroup
and a simple test
Ryan Lortie [Wed, 18 Aug 2010 06:14:37 +0000 (02:14 -0400)]
add some missed bits in the docs
Ryan Lortie [Wed, 18 Aug 2010 05:56:34 +0000 (01:56 -0400)]
add gaction.h to gio.h
Ryan Lortie [Wed, 18 Aug 2010 05:55:48 +0000 (01:55 -0400)]
add testcase for GAction
fix some small bugs it found
Ryan Lortie [Wed, 18 Aug 2010 05:45:15 +0000 (01:45 -0400)]
add GAction base class
Ryan Lortie [Wed, 18 Aug 2010 05:07:07 +0000 (01:07 -0400)]
gio.symbols: Fix missed symbol name tweak
Ryan Lortie [Wed, 18 Aug 2010 04:37:50 +0000 (00:37 -0400)]
pad the GActionGroup vtable
Ryan Lortie [Wed, 18 Aug 2010 04:33:17 +0000 (00:33 -0400)]
Add gactiongroup.h to gio.h
Ryan Lortie [Wed, 18 Aug 2010 04:30:44 +0000 (00:30 -0400)]
add GActionGroup base class
Dan Winship [Tue, 17 Aug 2010 22:38:34 +0000 (18:38 -0400)]
update gio/tests/.gitignore
Christian Persch [Tue, 17 Aug 2010 16:38:46 +0000 (18:38 +0200)]
Plug a mem leak in GDBusWorker
Free the read buffer.
==26538== 4,096 bytes in 1 blocks are definitely lost in loss record 781 of 781
==26538== at 0x4005BDC: malloc (vg_replace_malloc.c:195)
==26538== by 0x4005C66: realloc (vg_replace_malloc.c:476)
==26538== by 0x405244D: g_realloc (gmem.c:181)
==26538== by 0x420E066: _g_dbus_worker_do_read_unlocked (gdbusprivate.c:780)
==26538== by 0x420E1D1: _g_dbus_worker_do_read (gdbusprivate.c:812)
==26538== by 0x420F14A: _g_dbus_worker_thread_begin_func (gdbusprivate.c:1318)
==26538== by 0x420D2ED: invoke_caller (gdbusprivate.c:266)
==26538== by 0x404DA7C: g_idle_dispatch (gmain.c:4224)
==26538== by 0x4049FCD: g_main_dispatch (gmain.c:2119)
==26538== by 0x404B2C1: g_main_context_dispatch (gmain.c:2672)
==26538== by 0x404B716: g_main_context_iterate (gmain.c:2750)
==26538== by 0x404BE7F: g_main_loop_run (gmain.c:2958)
==26538== by 0x420D2B5: shared_thread_func (gdbusprivate.c:248)
==26538== by 0x4077958: g_thread_create_proxy (gthread.c:1897)
==26538== by 0x57D918: start_thread (pthread_create.c:301)
==26538== by 0x4C6CBD: clone (clone.S:133)
Bug #627187.
Christian Persch [Tue, 17 Aug 2010 16:29:14 +0000 (18:29 +0200)]
Plug a mem leak in gdbus-connection test
==26538== 145 (24 direct, 121 indirect) bytes in 1 blocks are definitely lost in loss record 765 of 790
==26538== at 0x4005BDC: malloc (vg_replace_malloc.c:195)
==26538== by 0x405233C: g_malloc (gmem.c:134)
==26538== by 0x406A57E: g_slice_alloc (gslice.c:836)
==26538== by 0x406A60C: g_slice_copy (gslice.c:858)
==26538== by 0x4035C5A: g_error_copy (gerror.c:160)
==26538== by 0x41B6387: g_simple_async_result_set_from_error (gsimpleasyncresult.c:638)
==26538== by 0x41FCDEB: g_dbus_connection_call_done (gdbusconnection.c:4808)
==26538== by 0x41B682E: g_simple_async_result_complete (gsimpleasyncresult.c:762)
==26538== by 0x41B686A: complete_in_idle_cb (gsimpleasyncresult.c:772)
==26538== by 0x404DA7C: g_idle_dispatch (gmain.c:4224)
==26538== by 0x4049FCD: g_main_dispatch (gmain.c:2119)
==26538== by 0x404B2C1: g_main_context_dispatch (gmain.c:2672)
==26538== by 0x404B716: g_main_context_iterate (gmain.c:2750)
==26538== by 0x404BE7F: g_main_loop_run (gmain.c:2958)
==26538== by 0x804B5CC: test_connection_send (gdbus-connection.c:407)
==26538== by 0x4073D04: test_case_run (gtestutils.c:1174)
Bug #627187.
Christian Persch [Tue, 17 Aug 2010 16:20:23 +0000 (18:20 +0200)]
Plug a mem leak in gdbus-connection test
==25403== 49 (24 direct, 25 indirect) bytes in 1 blocks are definitely lost in loss record 603 of 787
==25403== at 0x4005BDC: malloc (vg_replace_malloc.c:195)
==25403== by 0x405233C: g_malloc (gmem.c:134)
==25403== by 0x406A57E: g_slice_alloc (gslice.c:836)
==25403== by 0x406A5C3: g_slice_alloc0 (gslice.c:848)
==25403== by 0x4035B4E: g_error_new_literal (gerror.c:117)
==25403== by 0x4035ED9: g_set_error_literal (gerror.c:314)
==25403== by 0x41F6434: g_dbus_connection_close_sync (gdbusconnection.c:1284)
==25403== by 0x804A861: test_connection_life_cycle (gdbus-connection.c:158)
==25403== by 0x4073D04: test_case_run (gtestutils.c:1174)
==25403== by 0x4073FC2: g_test_run_suite_internal (gtestutils.c:1223)
==25403== by 0x4074077: g_test_run_suite_internal (gtestutils.c:1233)
==25403== by 0x4074077: g_test_run_suite_internal (gtestutils.c:1233)
==25403== by 0x40741FB: g_test_run_suite (gtestutils.c:1274)
==25403== by 0x40733E5: g_test_run (gtestutils.c:877)
==25403== by 0x804DC92: main (gdbus-connection.c:1024)
Bug #627187.
Christian Persch [Tue, 17 Aug 2010 16:08:07 +0000 (18:08 +0200)]
Plug a mem leak in the gdbus-connection test
Bug #627182.
Christian Persch [Sun, 20 Jun 2010 12:33:27 +0000 (14:33 +0200)]
Use g_memory_output_stream_steal_data here
... instead of one extra g_memdup().
Bug #627181.
Christian Persch [Sat, 24 May 2008 14:08:28 +0000 (16:08 +0200)]
Use G_DEFINE_[BOXED|POINTER]_TYPE instead of handwritten code
Now that we have convenience macros to implement boxed and pointer
types, use them.
Christian Persch [Sat, 24 May 2008 14:08:04 +0000 (16:08 +0200)]
Add G_DEFINE_{BOXED,POINTER}_TYPE[_WITH_CODE]
Add convenience type definition macros for boxed and pointer types
similar to G_DEFINE_TYPE for object types. Bug #449565.
Christian Persch [Thu, 13 May 2010 17:57:41 +0000 (19:57 +0200)]
Add GZIP header processing to GZlibCompressor/GZlibDecompressor
Add GZlibCompressor:file-info property. If it contains a non-NULL
GFileInfo, and the compressor is in GZIP mode, the filename and
modification time from the file info are written to the GZIP header
in the output data.
Add GZlibDeompressor:file-info property. If the decompressor is in GZIP
mode, and the GZIP data contains a GZIP header, the filename and
modification time are read from it, stored in a GFileInfo, and the
file-info property is notified.
Bug #617691.
Christian Persch [Sun, 20 Jun 2010 12:32:52 +0000 (14:32 +0200)]
Add g_memory_output_stream_steal_data
Bug #622184.
Matthias Clasen [Mon, 16 Aug 2010 20:36:38 +0000 (16:36 -0400)]
Bump version
Matthias Clasen [Mon, 16 Aug 2010 19:44:40 +0000 (15:44 -0400)]
Fix a typo
David Zeuthen [Mon, 16 Aug 2010 19:42:23 +0000 (15:42 -0400)]
Add NEWS item for bug 627071
Signed-off-by: David Zeuthen <davidz@redhat.com>
David Zeuthen [Mon, 16 Aug 2010 19:37:01 +0000 (15:37 -0400)]
Bug 627071 – g_output_stream_write() clarification
This patch guarantees that g_output_stream_write() can never fail with
G_IO_ERROR_WOULD_BLOCK. Without such a guarantee, we would need some
kind of GIOPollable interface or some way to get an event when the
stream is writable again. Which is mostly useless considering that
this method is asynchronous anyway.
Note: this patch just codifies existing behavior - GUnixOutputStream,
GSocketOutputStream and other implementations already work this way.
See also bug 626748 comment 5 for how the GDBus code relies on this
guarantee.
https://bugzilla.gnome.org/show_bug.cgi?id=627071
Signed-off-by: David Zeuthen <davidz@redhat.com>
Matthias Clasen [Mon, 16 Aug 2010 19:32:13 +0000 (15:32 -0400)]
More NEWS
Matthias Clasen [Mon, 16 Aug 2010 19:28:36 +0000 (15:28 -0400)]
Fix a doc format issue
Matthias Clasen [Mon, 16 Aug 2010 19:16:16 +0000 (15:16 -0400)]
Update NEWS for 2.25.14
David Zeuthen [Mon, 16 Aug 2010 17:43:35 +0000 (13:43 -0400)]
Bug 626748 – Use async methods for writing and handle EAGAIN
If sending a lot of data and/or the other peer is not reading it, then
socket buffers can overflow. This is communicated from the kernel by
returning EAGAIN. In GIO, it is modelled by g_output_stream_write()
and g_socket_send_message() returning G_IO_ERROR_WOULD_BLOCK.
It is also problematic that that we're using synchronous IO in the
shared GDBus IO thread. It means that one GDBusConnection can lock up
others.
It turns out that by porting from g_output_stream_write() to
g_output_stream_write_async() we fix the EAGAIN issue. For GSocket, we
still need to handle things manually (by creating a GSource) as
g_socket_send_message() is used.
We check the new behavior in Michael's producer/consumer test case (at
/gdbus/overflow in gdbus-peer.c) added in the last commit.
Also add a test case that sends and receives a 20 MiB message.
Also add a new `transport' G_DBUS_DEBUG option so it is easy to
inspect partial writes:
$ G_DBUS_DEBUG=transport ./gdbus-connection -p /gdbus/connection/large_message
[...]
========================================================================
GDBus-debug:Transport:
>>>> WROTE 128000 bytes of message with serial 4 and
size
20971669 from offset 0 on a GSocketOutputStream
========================================================================
GDBus-debug:Transport:
>>>> WROTE 128000 bytes of message with serial 4 and
size
20971669 from offset 128000 on a GSocketOutputStream
========================================================================
GDBus-debug:Transport:
>>>> WROTE 128000 bytes of message with serial 4 and
size
20971669 from offset 256000 on a GSocketOutputStream
[...]
========================================================================
GDBus-debug:Transport:
>>>> WROTE 43669 bytes of message with serial 4 and
size
20971669 from offset
20928000 on a GSocketOutputStream
[...]
========================================================================
GDBus-debug:Transport:
<<<< READ 16 bytes of message with serial 3 and
size
20971620 to offset 0 from a GSocketInputStream
========================================================================
GDBus-debug:Transport:
<<<< READ 15984 bytes of message with serial 3 and
size
20971620 to offset 16 from a GSocketInputStream
========================================================================
GDBus-debug:Transport:
<<<< READ 16000 bytes of message with serial 3 and
size
20971620 to offset 16000 from a GSocketInputStream
[...]
========================================================================
GDBus-debug:Transport:
<<<< READ 144000 bytes of message with serial 3 and
size
20971620 to offset
20720000 from a GSocketInputStream
========================================================================
GDBus-debug:Transport:
<<<< READ 107620 bytes of message with serial 3 and
size
20971620 to offset
20864000 from a GSocketInputStream
OK
https://bugzilla.gnome.org/show_bug.cgi?id=626748
Signed-off-by: David Zeuthen <davidz@redhat.com>
David Zeuthen [Mon, 16 Aug 2010 16:30:25 +0000 (12:30 -0400)]
GSocket: Properly initialize msg.msg_control
This patch fixes this problem
Syscall param socketcall.sendmsg(msg.msg_control) points to uninitialised byte(s)
at 0x3D5B00EA60: __sendmsg_nocancel (syscall-template.S:82)
by 0x53F9790: g_socket_send_message (gsocket.c:2918)
by 0x540FDD0: g_unix_connection_send_credentials (gunixconnection.c:351)
by 0x542B93F: _g_dbus_auth_run_client (gdbusauth.c:618)
by 0x5438001: initable_init (gdbusconnection.c:2191)
by 0x53E09CC: g_initable_init (ginitable.c:105)
by 0x543F6E9: g_bus_get_sync (gdbusconnection.c:6091)
by 0x402C7E: test_connection_life_cycle (gdbus-connection.c:126)
by 0x4C7CABB: test_case_run (gtestutils.c:1174)
by 0x4C7CD84: g_test_run_suite_internal (gtestutils.c:1223)
by 0x4C7CE49: g_test_run_suite_internal (gtestutils.c:1233)
by 0x4C7CE49: g_test_run_suite_internal (gtestutils.c:1233)
Address 0x7fefff9fc is on thread 1's stack
Signed-off-by: David Zeuthen <davidz@redhat.com>
Matthias Clasen [Mon, 16 Aug 2010 14:21:38 +0000 (10:21 -0400)]
Declare stream base classes as abstract
Dan Winship [Thu, 24 Jun 2010 17:09:14 +0000 (13:09 -0400)]
Always do async vs sync correctly in GSocketConnection streams
Previously if a GSocketConnection had a blocking GSocket, it would
sometimes block during asynchonous I/O, and if it had a non-blocking
socket, it would sometimes return G_IO_ERROR_WOULD_BLOCK from
synchronous I/O. This fixes the connection to not depend on the socket
state.
https://bugzilla.gnome.org/show_bug.cgi?id=616458