Diff between d16dbe8800d62b7991713c12b9786895562d5c5d and c3f7247cfe67e94a6265d7ea164d53a046fc1778

Changed Files

File Additions Deletions Status
src/sdpd-service.c +14 -3 modified
src/sdpd.h +2 -0 modified

Full Patch

diff --git a/src/sdpd-service.c b/src/sdpd-service.c
index a7903a8..1eb07e2 100644
--- a/src/sdpd-service.c
+++ b/src/sdpd-service.c
@@ -50,6 +50,7 @@
 #include "adapter.h"
 
 static sdp_record_t *server = NULL;
+static uint32_t fixed_dbts = 0;
 
 /*
  * List of version numbers supported by the SDP server.
@@ -88,9 +89,19 @@ uint32_t sdp_get_time(void)
  */
 static void update_db_timestamp(void)
 {
-	uint32_t dbts = sdp_get_time();
-	sdp_data_t *d = sdp_data_alloc(SDP_UINT32, &dbts);
-	sdp_attr_replace(server, SDP_ATTR_SVCDB_STATE, d);
+	if (fixed_dbts) {
+		sdp_data_t *d = sdp_data_alloc(SDP_UINT32, &fixed_dbts);
+		sdp_attr_replace(server, SDP_ATTR_SVCDB_STATE, d);
+	} else {
+		uint32_t dbts = sdp_get_time();
+		sdp_data_t *d = sdp_data_alloc(SDP_UINT32, &dbts);
+		sdp_attr_replace(server, SDP_ATTR_SVCDB_STATE, d);
+	}
+}
+
+void set_fixed_db_timestamp(uint32_t dbts)
+{
+	fixed_dbts = dbts;
 }
 
 void register_public_browse_group(void)
diff --git a/src/sdpd.h b/src/sdpd.h
index 93ebcd6..9a0e1e9 100644
--- a/src/sdpd.h
+++ b/src/sdpd.h
@@ -48,6 +48,8 @@ typedef struct request {
 void handle_internal_request(int sk, int mtu, void *data, int len);
 void handle_request(int sk, uint8_t *data, int len);
 
+void set_fixed_db_timestamp(uint32_t dbts);
+
 int service_register_req(sdp_req_t *req, sdp_buf_t *rsp);
 int service_update_req(sdp_req_t *req, sdp_buf_t *rsp);
 int service_remove_req(sdp_req_t *req, sdp_buf_t *rsp);