diff options
Diffstat (limited to 'serial/manager.c')
| -rw-r--r-- | serial/manager.c | 15 | 
1 files changed, 11 insertions, 4 deletions
diff --git a/serial/manager.c b/serial/manager.c index 371c8a95..378434e4 100644 --- a/serial/manager.c +++ b/serial/manager.c @@ -559,10 +559,12 @@ static void record_reply(DBusPendingCall *call, void *data)  		}  		port_store(&pc->src, &dst, err, ch, svcname); + +		port_register(pc->conn, err, &pc->src, &dst, port_name, +			      path, svcname);  		if (svcname)  			g_free(svcname); -		port_register(pc->conn, err, &pc->src, &dst, port_name, path);  		ports_paths = g_slist_append(ports_paths, g_strdup(path));  		reply = dbus_message_new_method_return(pc->msg); @@ -840,7 +842,7 @@ static DBusHandlerResult create_port(DBusConnection *conn,  	snprintf(port_name, sizeof(port_name), "/dev/rfcomm%d", err);  	port_store(&src, &dst, err, val, NULL); -	port_register(conn, err, &src, &dst, port_name, path); +	port_register(conn, err, &src, &dst, port_name, path, NULL);  	ports_paths = g_slist_append(ports_paths, g_strdup(path));  	reply = dbus_message_new_method_return(msg); @@ -2144,7 +2146,7 @@ static DBusSignalVTable manager_signals[] = {  static void parse_port(char *key, char *value, void *data)  { -	char path[MAX_PATH_LENGTH], port_name[16], dst_addr[18]; +	char path[MAX_PATH_LENGTH], port_name[16], dst_addr[18], *svc;  	char *src_addr = data;  	bdaddr_t dst, src;  	int ch, id; @@ -2156,6 +2158,10 @@ static void parse_port(char *key, char *value, void *data)  	if (sscanf(value,"%d:", &ch) != 1)  		return; +	svc = strchr(value, ':'); +	if (svc && *svc) +		svc++; +  	str2ba(dst_addr, &dst);  	str2ba(src_addr, &src); @@ -2164,7 +2170,8 @@ static void parse_port(char *key, char *value, void *data)  	snprintf(port_name, sizeof(port_name), "/dev/rfcomm%d", id); -	if (port_register(connection, id, &src, &dst, port_name, path) < 0) { +	if (port_register(connection, id, &src, &dst, +				port_name, path, svc) < 0) {  		rfcomm_release(id);  		return;  	}  | 
