Forráskód Böngészése

fix some small bugs

Julius Pfrommer 9 éve
szülő
commit
f0acccbebb

+ 1 - 0
examples/networklayer_tcp.c

@@ -384,6 +384,7 @@ static size_t ServerNetworkLayerTCP_getJobs(ServerNetworkLayerTCP *layer, UA_Job
 }
 
 static size_t ServerNetworkLayerTCP_stop(ServerNetworkLayerTCP *layer, UA_Job **jobs) {
+    close(layer->serversockfd);
     UA_Job *items = malloc(sizeof(UA_Job) * layer->mappingsSize * 2);
     if(!items)
         return 0;

+ 1 - 1
include/ua_types.h

@@ -495,7 +495,7 @@ static UA_INLINE UA_ExpandedNodeId UA_EXPANDEDNODEID_BYTESTRING_ALLOC(UA_UInt16
     return id; }
 
 /* StatusCode */
-UA_StatusCode UA_EXPORT * UA_StatusCode_new(void);
+static UA_INLINE UA_StatusCode * UA_StatusCode_new(void) { return (UA_StatusCode*)UA_Int32_new(); }
 static UA_INLINE void UA_StatusCode_init(UA_StatusCode *p) { *p = UA_STATUSCODE_GOOD; }
 void UA_EXPORT UA_StatusCode_delete(UA_StatusCode *p);
 static UA_INLINE void UA_StatusCode_deleteMembers(UA_StatusCode *p) { }

+ 5 - 0
src/server/ua_server_worker.c

@@ -629,6 +629,11 @@ UA_StatusCode UA_Server_run_mainloop(UA_Server *server, UA_Boolean *running) {
 
 UA_StatusCode UA_Server_run_shutdown(UA_Server *server, UA_UInt16 nThreads){
 #ifdef UA_MULTITHREADING
+    UA_Job *stopJobs;
+    for(size_t i = 0; i < server->networkLayersSize; i++) {
+        size_t stopJobsSize = server->networkLayers[i]->stop(server->networkLayers[i], &jobs);
+        processJobs(server, stopJobs, stopJobsSize);
+    }
     /* Wait for all worker threads to finish */
     for(UA_UInt32 i=0;i<nThreads;i++) {
         pthread_join(server->thr[i], UA_NULL);

+ 1 - 1
src/server/ua_services_nodemanagement.c

@@ -358,7 +358,7 @@ referenceTypeNodeFromAttributes(UA_AddNodesItem *item, UA_ReferenceTypeAttribute
     UA_ReferenceTypeNode *rtnode = UA_ReferenceTypeNode_new();
     if(!rtnode)
         return UA_NULL;
-    moveStandardAttributes((UA_Node*)rtnode, item, (UA_NodeAttributes*)&attr);
+    moveStandardAttributes((UA_Node*)rtnode, item, (UA_NodeAttributes*)attr);
     rtnode->isAbstract = attr->isAbstract;
     rtnode->symmetric = attr->symmetric;
     rtnode->inverseName = attr->inverseName;