Handle virtual header allocation failure to deliver_request on test 70/240070/2 accepted/tizen_6.0_unified_hotfix tizen_6.0_hotfix accepted/tizen/6.0/unified/20201030.121942 accepted/tizen/6.0/unified/hotfix/20201103.004230 accepted/tizen/6.0/unified/hotfix/20201103.051255 accepted/tizen/unified/20200814.123131 submit/tizen/20200813.070305 submit/tizen_6.0/20201029.205102 submit/tizen_6.0_hotfix/20201102.192502 submit/tizen_6.0_hotfix/20201103.114802 tizen_6.0.m2_release
authorYu <jiung.yu@samsung.com>
Mon, 3 Aug 2020 05:08:13 +0000 (14:08 +0900)
committerYu <jiung.yu@samsung.com>
Mon, 3 Aug 2020 05:09:36 +0000 (14:09 +0900)
Change-Id: I7e0d9041b4a2dd4667163e98ef716f265ee88a9a
Signed-off-by: Yu jiung <jiung.yu@samsung.com>
tests/mock/nsd-mock-dns-sd.c
tests/mock/nsd-mock-gsource.c [moved from tests/mock/nsd-mock-gio.c with 95% similarity]
tests/mock/nsd-mock-gssdp.c
tests/mock/nsd-mock.c

index 03907bf..6634b54 100644 (file)
 
 /* dnssd_sock_t, ipc_msg_hdr and request_op_t are from dnssd_ipc.h */
 
-#   define dnssd_InvalidSocket  -1
-#   define dnssd_SocketValid(s) ((s) >= 0)
+#define dnssd_InvalidSocket  -1
+#define dnssd_SocketValid(s) ((s) >= 0)
 
 typedef int dnssd_sock_t;
 
 typedef struct
 {
-    uint32_t op;        // request_op_t or reply_op_t
+       uint32_t op;        // request_op_t or reply_op_t
 } ipc_msg_hdr;
 
 typedef enum
 {
-    request_op_none = 0,    // No request yet received on this connection
-    connection_request = 1, // connected socket via DNSServiceConnect()
-    reg_record_request,     // reg/remove record only valid for connected sockets
-    remove_record_request,
-    enumeration_request,
-    reg_service_request,
-    browse_request,
-    resolve_request,
-    query_request,
-    reconfirm_record_request,
-    add_record_request,
-    update_record_request,
-    setdomain_request,      // Up to here is in Tiger and B4W 1.0.3
-    getproperty_request,    // New in B4W 1.0.4
-    port_mapping_request,   // New in Leopard and B4W 2.0
-    addrinfo_request,
-    send_bpf,               // New in SL
-    getpid_request,
-    release_request,
-    connection_delegate_request,
-
-    cancel_request = 63
+       request_op_none = 0,    // No request yet received on this connection
+       connection_request = 1, // connected socket via DNSServiceConnect()
+       reg_record_request,     // reg/remove record only valid for connected sockets
+       remove_record_request,
+       enumeration_request,
+       reg_service_request,
+       browse_request,
+       resolve_request,
+       query_request,
+       reconfirm_record_request,
+       add_record_request,
+       update_record_request,
+       setdomain_request,      // Up to here is in Tiger and B4W 1.0.3
+       getproperty_request,    // New in B4W 1.0.4
+       port_mapping_request,   // New in Leopard and B4W 2.0
+       addrinfo_request,
+       send_bpf,               // New in SL
+       getpid_request,
+       release_request,
+       connection_delegate_request,
+
+       cancel_request = 63
 } request_op_t;
 
 typedef struct _DNSServiceRef_t DNSServiceOp;
@@ -68,10 +68,10 @@ typedef struct _DNSRecordRef_t DNSRecord;
 
 typedef struct
 {
-    ipc_msg_hdr ipc_hdr;
-    DNSServiceFlags cb_flags;
-    uint32_t cb_interface;
-    DNSServiceErrorType cb_err;
+       ipc_msg_hdr ipc_hdr;
+       DNSServiceFlags cb_flags;
+       uint32_t cb_interface;
+       DNSServiceErrorType cb_err;
 } CallbackHeader;
 
 // client stub callback to process message from server and deliver results to client application
@@ -83,60 +83,60 @@ typedef void (*ProcessReplyFn)(DNSServiceOp *const sdr, const CallbackHeader *co
 /* The virtual #_DNSServiceRef_t structure for unittest */
 struct _DNSServiceRef_t
 {
-    dnssd_sock_t sockfd;                // Connected socket between client and daemon
-    dnssd_sock_t validator;             // Used to detect memory corruption, double disposals, etc.
-    uint32_t op;                        // request_op_t or reply_op_t
-    ProcessReplyFn ProcessReply;        // Function pointer to the code to handle received messages
-    void             *AppCallback;      // Client callback function and context
-    void             *AppContext;
-    DNSRecord        *rec;
+       dnssd_sock_t sockfd;                // Connected socket between client and daemon
+       dnssd_sock_t validator;             // Used to detect memory corruption, double disposals, etc.
+       uint32_t op;                        // request_op_t or reply_op_t
+       ProcessReplyFn ProcessReply;        // Function pointer to the code to handle received messages
+       void *AppCallback;      // Client callback function and context
+       void *AppContext;
+       DNSRecord *rec;
 };
 
 /* The virtual #_DNSRecordRef_t structure for unittest */
 struct _DNSRecordRef_t
 {
-    DNSRecord       *recnext;
+       DNSRecord *recnext;
        DNSServiceOp *sdr;
 };
 
 static ipc_msg_hdr *create_hdr(uint32_t op, size_t *len, char **data_start, int SeparateReturnSocket, DNSServiceOp *ref)
 {
-    char *msg = NULL;
-    ipc_msg_hdr *hdr;
+       char *msg = NULL;
+       ipc_msg_hdr *hdr;
 
-    *len += sizeof(ipc_msg_hdr);
+       *len += sizeof(ipc_msg_hdr);
 
-    // Write message to buffer
-    msg = malloc(*len);
+       // Write message to buffer
+       msg = malloc(*len);
 
-    memset(msg, 0, *len);
-    hdr = (ipc_msg_hdr *)msg;
-    hdr->op = op;
-    *data_start = msg + sizeof(ipc_msg_hdr);
+       memset(msg, 0, *len);
+       hdr = (ipc_msg_hdr *)msg;
+       hdr->op = op;
+       *data_start = msg + sizeof(ipc_msg_hdr);
 
-    return hdr;
+       return hdr;
 }
 
 static void FreeDNSRecords(DNSServiceOp *sdRef)
 {
-    DNSRecord *rec = sdRef->rec;
-    while (rec)
-    {
-        DNSRecord *next = rec->recnext;
-        free(rec);
-        rec = next;
-    }
+       DNSRecord *rec = sdRef->rec;
+       while (rec)
+       {
+               DNSRecord *next = rec->recnext;
+               free(rec);
+               rec = next;
+       }
 }
 
 static void FreeDNSServiceOp(DNSServiceOp *x)
 {
-    // We don't use our DNSServiceRefValid macro here because if we're cleaning up after a socket() call failed
-    // then sockfd could legitimately contain a failing value (e.g. dnssd_InvalidSocket)
-       x->sockfd       = dnssd_InvalidSocket;
-       x->validator    = 0xDDDDDDDD;
-       x->op           = request_op_none;
-       x->AppCallback  = NULL;
-       FreeDNSRecords(x);
+       // We don't use our DNSServiceRefValid macro here because if we're cleaning up after a socket() call failed
+       // then sockfd could legitimately contain a failing value (e.g. dnssd_InvalidSocket)
+       x->sockfd       = dnssd_InvalidSocket;
+       x->validator    = 0xDDDDDDDD;
+       x->op           = request_op_none;
+       x->AppCallback  = NULL;
+       FreeDNSRecords(x);
        free(x);
 }
 
@@ -145,25 +145,25 @@ static void FreeDNSServiceOp(DNSServiceOp *x)
 // Return a connected service ref (deallocate with DNSServiceRefDeallocate)
 static DNSServiceErrorType ConnectToServer(DNSServiceRef *ref, DNSServiceFlags flags, uint32_t op, ProcessReplyFn ProcessReply, void *AppCallback, void *AppContext)
 {
-    DNSServiceOp *sdr;
+       DNSServiceOp *sdr;
 
-    if (!ref)
-        return kDNSServiceErr_BadParam;
+       if (!ref)
+               return kDNSServiceErr_BadParam;
 
-    sdr = malloc(sizeof(DNSServiceOp));
-    sdr->sockfd        = dnssd_InvalidSocket;
-    sdr->validator     = sdr->sockfd ^ ValidatorBits;
-    sdr->op            = op;
-    sdr->AppCallback   = AppCallback;
-    sdr->AppContext    = AppContext;
-    sdr->rec           = NULL;
+       sdr = malloc(sizeof(DNSServiceOp));
+       sdr->sockfd        = dnssd_InvalidSocket;
+       sdr->validator     = sdr->sockfd ^ ValidatorBits;
+       sdr->op            = op;
+       sdr->AppCallback   = AppCallback;
+       sdr->AppContext    = AppContext;
+       sdr->rec           = NULL;
 
        *ref = NULL;
        sdr->sockfd    = MOCK_DNSSD_SOCK_FD;
        sdr->validator = sdr->sockfd ^ ValidatorBits;
 
-    *ref = sdr;
-    return kDNSServiceErr_NoError;
+       *ref = sdr;
+       return kDNSServiceErr_NoError;
 }
 
 #define TIZEN_DNSSD_MOCK_SERVICE "TizenDnssdMock"
@@ -177,22 +177,23 @@ static DNSServiceErrorType ConnectToServer(DNSServiceRef *ref, DNSServiceFlags f
 static DNSServiceErrorType deliver_request(ipc_msg_hdr *hdr, DNSServiceOp *sdr)
 {
        if (!DNSServiceRefValid(sdr))
-       return kDNSServiceErr_BadReference;
+               return kDNSServiceErr_BadReference;
 
-    free(hdr);
+       if (hdr)
+               free(hdr);
 
        return kDNSServiceErr_NoError;
 }
 
 API dnssd_sock_t DNSServiceRefSockFD(DNSServiceRef sdRef)
 {
-    if (!sdRef)
-       return dnssd_InvalidSocket;
+       if (!sdRef)
+               return dnssd_InvalidSocket;
 
-    if (!DNSServiceRefValid(sdRef))
-       return dnssd_InvalidSocket;
+       if (!DNSServiceRefValid(sdRef))
+               return dnssd_InvalidSocket;
 
-    return sdRef->sockfd;
+       return sdRef->sockfd;
 }
 
 
@@ -273,11 +274,11 @@ API DNSServiceErrorType DNSServiceProcessResult(DNSServiceRef sdRef)
                return kDNSServiceErr_BadReference;
 
        /* original flow:
-        * Read reply header
-        * check header validity
-        * read body
-        * call sdRef->ProcessReply(sdRef, &cbh, ptr, data + cbh.ipc_hdr.datalen);
-        */
+       * Read reply header
+       * check header validity
+       * read body
+       * call sdRef->ProcessReply(sdRef, &cbh, ptr, data + cbh.ipc_hdr.datalen);
+       */
        if (sdRef->op == reg_service_request)
                __nsd_mock_dnssd_process_result_reg_service_request(sdRef);
        else if (sdRef->op == browse_request)
@@ -287,17 +288,17 @@ API DNSServiceErrorType DNSServiceProcessResult(DNSServiceRef sdRef)
        else if (sdRef->op == addrinfo_request)
                __nsd_mock_dnssd_process_result_addrinfo_request(sdRef);
 
-    return kDNSServiceErr_NoError;
+       return kDNSServiceErr_NoError;
 }
 
 
 API void DNSServiceRefDeallocate(DNSServiceRef sdRef)
 {
        if (!sdRef)
-       return;
+               return;
 
        if (!DNSServiceRefValid(sdRef))
-       return;
+               return;
 
        FreeDNSServiceOp(sdRef);
 }
@@ -404,11 +405,11 @@ API DNSServiceErrorType DNSServiceAddRecord
     uint32_t ttl
 )
 {
-    ipc_msg_hdr *hdr;
-    size_t len = 0;
-    char *ptr;
-    DNSRecordRef rref;
-    DNSRecord **p;
+       ipc_msg_hdr *hdr;
+       size_t len = 0;
+       char *ptr;
+       DNSRecordRef rref;
+       DNSRecord **p;
 
        if (!sdRef || !RecordRef || (!rdata && rdlen))
                return kDNSServiceErr_BadParam;
@@ -419,19 +420,19 @@ API DNSServiceErrorType DNSServiceAddRecord
        if (!DNSServiceRefValid(sdRef))
                return kDNSServiceErr_BadReference;
 
-    *RecordRef = NULL;
+       *RecordRef = NULL;
 
-    hdr = create_hdr(add_record_request, &len, &ptr, 0, sdRef);
+       hdr = create_hdr(add_record_request, &len, &ptr, 0, sdRef);
 
-    rref = malloc(sizeof(DNSRecord));
-    rref->sdr = sdRef;
-    rref->recnext = NULL;
+       rref = malloc(sizeof(DNSRecord));
+       rref->sdr = sdRef;
+       rref->recnext = NULL;
 
-    *RecordRef = rref;
+       *RecordRef = rref;
 
-    p = &(sdRef)->rec;
-    while (*p) p = &(*p)->recnext;
-    *p = rref;
+       p = &(sdRef)->rec;
+       while (*p) p = &(*p)->recnext;
+       *p = rref;
 
        return deliver_request(hdr, sdRef);;
 }
@@ -446,13 +447,13 @@ API DNSServiceErrorType DNSServiceUpdateRecord
     uint32_t ttl
 )
 {
-    (void)sdRef;        // Unused
-    (void)RecordRef;    // Unused
-    (void)flags;        // Unused
-    (void)rdlen;        // Unused
-    (void)rdata;        // Unused
-    (void)ttl;          // Unused
-    return kDNSServiceErr_NoError;
+       (void)sdRef;        // Unused
+       (void)RecordRef;    // Unused
+       (void)flags;        // Unused
+       (void)rdlen;        // Unused
+       (void)rdata;        // Unused
+       (void)ttl;          // Unused
+       return kDNSServiceErr_NoError;
 }
 
 API DNSServiceErrorType DNSServiceRemoveRecord
similarity index 95%
rename from tests/mock/nsd-mock-gio.c
rename to tests/mock/nsd-mock-gsource.c
index 4ae7606..2acf4f5 100644 (file)
@@ -98,15 +98,9 @@ API gboolean g_source_remove (guint tag)
 {
        GSource *source;
 
-       if (tag != 0)
+       if (tag == 0 || tag > 1000)
                return FALSE;
 
-       printf("g_source_remove %u\n", tag);
-       if (tag > 1000) {
-               printf("FUCK\n");
-               return FALSE;
-       }
-
        source = g_main_context_find_source_by_id (NULL, tag);
        if (source)
                g_source_destroy (source);
index 52fbd97..5014358 100644 (file)
@@ -50,11 +50,11 @@ typedef struct _GSSDPClient GSSDPClient;
 typedef struct _GSSDPClientClass GSSDPClientClass;
 
 struct _GSSDPClient {
-        GObject parent;
+       GObject parent;
 };
 
 struct _GSSDPClientClass {
-        GObjectClass parent_class;
+       GObjectClass parent_class;
 };
 
 GType
@@ -85,11 +85,11 @@ typedef struct _GSSDPResourceGroup GSSDPResourceGroup;
 typedef struct _GSSDPResourceGroupClass GSSDPResourceGroupClass;
 
 struct _GSSDPResourceGroup {
-        GObject parent;
+       GObject parent;
 };
 
 struct _GSSDPResourceGroupClass {
-        GObjectClass parent_class;
+       GObjectClass parent_class;
 };
 
 GType
@@ -120,11 +120,11 @@ typedef struct _GSSDPResourceBrowser GSSDPResourceBrowser;
 typedef struct _GSSDPResourceBrowserClass GSSDPResourceBrowserClass;
 
 struct _GSSDPResourceBrowser {
-        GObject parent;
+       GObject parent;
 };
 
 struct _GSSDPResourceBrowserClass {
-        GObjectClass parent_class;
+       GObjectClass parent_class;
 };
 
 API GSSDPClient *gssdp_client_new(GMainContext *main_context,
index 31b7da8..38407d0 100644 (file)
@@ -76,8 +76,7 @@ API gulong g_signal_connect_data(gpointer instance,
        return DEFAULT_MOCK_GOBJECT_SIGNAL;
 }
 
-API void g_signal_handler_disconnect (gpointer instance,
-                             gulong   handler_id)
+API void g_signal_handler_disconnect (gpointer instance, gulong handler_id)
 {
        return;
 }