diff options
author | Mikael Hallendal <micke@codefactory.se> | 2003-02-19 08:13:31 +0000 |
---|---|---|
committer | Mikael Hallendal <micke@codefactory.se> | 2003-02-19 08:13:31 +0000 |
commit | 6180d6954c41a2412c166e5a9e8a2851cf39c6d1 (patch) | |
tree | 0309901a7c3eede8a578332b9a7b419dc977cfd3 /dbus/dbus-server.c | |
parent | c21511c01ab56d75f3aa4643761e9fd096a7f8be (diff) |
2003-02-19 Mikael Hallendal <micke@codefactory.se>
* dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses.
* dbus/dbus-transport-unix.c (_dbus_transport_new_for_tcp_socket):
Added to create a transport connecting using a tcp/ip socket.
* dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): Added to connect
to a tcp socket at given host and port.
(_dbus_listen_tcp_socket): added to listen on tcp socket for given
hostname and port.
* dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses.
* dbus/dbus-server-unix.c (_dbus_server_new_for_tcp_socket):
Added to create a server listening on a TCP/IP socket.
Diffstat (limited to 'dbus/dbus-server.c')
-rw-r--r-- | dbus/dbus-server.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/dbus/dbus-server.c b/dbus/dbus-server.c index 862aead5..fd03423e 100644 --- a/dbus/dbus-server.c +++ b/dbus/dbus-server.c @@ -19,7 +19,8 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - */ + */ +#include <stdlib.h> #include "dbus-server.h" #include "dbus-server-unix.h" #ifdef DBUS_BUILD_TESTS @@ -228,6 +229,29 @@ dbus_server_listen (const char *address, if (server) break; } + else if (strcmp (method, "tcp") == 0) + { + const char *host = dbus_address_entry_get_value (entries[i], "host"); + const char *port = dbus_address_entry_get_value (entries[i], "port"); + DBusString str; + long lport; + dbus_bool_t sresult; + + if (port == NULL) + goto bad_address; + + _dbus_string_init_const (&str, port); + sresult = _dbus_string_parse_int (&str, 0, &lport, NULL); + _dbus_string_free (&str); + + if (sresult == FALSE || lport <= 0 || lport > 65535) + goto bad_address; + + server = _dbus_server_new_for_tcp_socket (host, lport, result); + + if (server) + break; + } #ifdef DBUS_BUILD_TESTS else if (strcmp (method, "debug") == 0) { |