Diff between e92852400cd4c197d6e7b8b53d4a07e133a24ddc and 10bb8c3e504afb0113fdede1ff27b04dbe166b35

Changed Files

File Additions Deletions Status
obexd/src/bluetooth.c +11 -5 modified
obexd/src/bluetooth.h +1 -1 modified
obexd/src/main.c +2 -2 modified

Full Patch

diff --git a/obexd/src/bluetooth.c b/obexd/src/bluetooth.c
index 48e7936..bc7836a 100644
--- a/obexd/src/bluetooth.c
+++ b/obexd/src/bluetooth.c
@@ -191,14 +191,14 @@ static void server_destroyed(gpointer user_data)
 	g_free(server);
 }
 
-static gint server_register(guint16 service, const gchar *name,
-		guint8 channel, const gchar *folder, gboolean auto_accept)
+static gint server_register(guint16 service, const gchar *name, guint8 channel,
+		const gchar *folder, gboolean secure, gboolean auto_accept)
 {
 	struct sockaddr_rc laddr;
 	GIOChannel *io;
-	gint err, sk, arg;
 	struct server *server;
 	uint32_t *handle;
+	gint err, sk, arg, lm = RFCOMM_LM_SECURE;
 
 	sk = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
 	if (sk < 0) {
@@ -219,6 +219,11 @@ static gint server_register(guint16 service, const gchar *name,
 		goto failed;
 	}
 
+	if (setsockopt(sk, SOL_RFCOMM, RFCOMM_LM, &lm, sizeof(lm)) < 0) {
+		err = errno;
+		goto failed;
+	}
+
 	memset(&laddr, 0, sizeof(laddr));
 	laddr.rc_family = AF_BLUETOOTH;
 	bacpy(&laddr.rc_bdaddr, BDADDR_ANY);
@@ -268,7 +273,7 @@ failed:
 }
 
 gint bluetooth_init(guint service, const gchar *name, const gchar *folder,
-					guint8 channel, gboolean auto_accept)
+			guint8 channel, gboolean secure, gboolean auto_accept)
 {
 	if (!session) {
 		session = sdp_connect(BDADDR_ANY, BDADDR_LOCAL, SDP_RETRY_IF_BUSY);
@@ -279,7 +284,8 @@ gint bluetooth_init(guint service, const gchar *name, const gchar *folder,
 		}
 	}
 
-	return server_register(service, name, channel, folder, auto_accept);
+	return server_register(service, name, channel,
+				folder, secure, auto_accept);
 }
 
 static void unregister_record(gpointer rec_handle, gpointer user_data)
diff --git a/obexd/src/bluetooth.h b/obexd/src/bluetooth.h
index 9e7973b..dec0b14 100644
--- a/obexd/src/bluetooth.h
+++ b/obexd/src/bluetooth.h
@@ -28,5 +28,5 @@
 #endif
 
 gint bluetooth_init(guint service, const gchar *name, const gchar *folder,
-			guint8 channel, gboolean auto_accept);
+			guint8 channel, gboolean secure, gboolean auto_accept);
 void bluetooth_exit(void);
diff --git a/obexd/src/main.c b/obexd/src/main.c
index 1ff0a0c..7cea104 100644
--- a/obexd/src/main.c
+++ b/obexd/src/main.c
@@ -60,11 +60,11 @@ static int server_start(int service, const char *root_path,
 	switch (service) {
 	case OBEX_OPUSH:
 		bluetooth_init(OBEX_OPUSH, "OBEX OPUSH server",
-				root_path, OPUSH_CHANNEL, auto_accept);
+				root_path, OPUSH_CHANNEL, FALSE, auto_accept);
 		break;
 	case OBEX_FTP:
 		bluetooth_init(OBEX_FTP, "OBEX FTP server",
-				root_path, FTP_CHANNEL, auto_accept);
+				root_path, FTP_CHANNEL, TRUE, auto_accept);
 		break;
 	default:
 		return -EINVAL;