Diff between 1d98f8e7f2b7a6eada70c844e19d8e6b7c6fbda3 and ebf7f236a457a80ca474384e0d9244b7c4ad51ab

Changed Files

File Additions Deletions Status
obexd/src/obex.c +25 -10 modified

Full Patch

diff --git a/obexd/src/obex.c b/obexd/src/obex.c
index dbde5bd..cb47794 100644
--- a/obexd/src/obex.c
+++ b/obexd/src/obex.c
@@ -375,12 +375,20 @@ static void cmd_get(struct obex_session *os, obex_t *obex, obex_object_t *obj)
 	}
 
 	if (!os->driver) {
-		os->driver = obex_mime_type_driver_find(os->service->target, NULL, NULL, 0);
+		/* Fallback to target default */
+		os->driver = obex_mime_type_driver_find(os->service->target,
+							NULL, NULL, 0);
 		if (!os->driver) {
-			error("No driver found");
-			OBEX_ObjectSetRsp(obj, OBEX_RSP_NOT_IMPLEMENTED,
-					OBEX_RSP_NOT_IMPLEMENTED);
-			return;
+			/* Fallback to general default */
+			os->driver = obex_mime_type_driver_find(NULL,
+							NULL, NULL, 0);
+			if (!os->driver) {
+				error("No driver found");
+				OBEX_ObjectSetRsp(obj,
+						OBEX_RSP_NOT_IMPLEMENTED,
+						OBEX_RSP_NOT_IMPLEMENTED);
+				return;
+			}
 		}
 	}
 
@@ -759,13 +767,20 @@ static gboolean check_put(obex_t *obex, obex_object_t *obj)
 	OBEX_ObjectReParseHeaders(obex, obj);
 
 	if (!os->driver) {
+		/* Fallback to target default */
 		os->driver = obex_mime_type_driver_find(os->service->target,
-				NULL, NULL, 0);
+							NULL, NULL, 0);
 		if (!os->driver) {
-			error("No driver found");
-			OBEX_ObjectSetRsp(obj, OBEX_RSP_NOT_IMPLEMENTED,
-					OBEX_RSP_NOT_IMPLEMENTED);
-			return FALSE;
+			/* Fallback to general default */
+			os->driver = obex_mime_type_driver_find(NULL,
+							NULL, NULL, 0);
+			if (!os->driver) {
+				error("No driver found");
+				OBEX_ObjectSetRsp(obj,
+						OBEX_RSP_NOT_IMPLEMENTED,
+						OBEX_RSP_NOT_IMPLEMENTED);
+				return FALSE;
+			}
 		}
 	}