From c3f7247cfe67e94a6265d7ea164d53a046fc1778 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 6 Jan 2013 14:15:48 -0800 Subject: [PATCH] core: Add support for setting a fixed SDP database timestamp This is only useful for unit testing where the service database state needs to be known and should not change. --- src/sdpd-service.c | 17 ++++++++++++++--- src/sdpd.h | 2 ++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/sdpd-service.c b/src/sdpd-service.c index a7903a8dd..1eb07e277 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 93ebcd6f5..9a0e1e9df 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); -- 2.47.3