Quellcode durchsuchen

fixed 2 memleaks, one is still left

Stasik0 vor 11 Jahren
Ursprung
Commit
68ee3c64b9
3 geänderte Dateien mit 8 neuen und 4 gelöschten Zeilen
  1. 1 1
      examples/src/Makefile.am
  2. 2 3
      examples/src/opcuaServer.c
  3. 5 0
      src/opcua_secureChannelLayer.c

+ 1 - 1
examples/src/Makefile.am

@@ -1,6 +1,6 @@
 
 
 bin_PROGRAMS= $(top_builddir)/bin/exampleServer
 bin_PROGRAMS= $(top_builddir)/bin/exampleServer
-__top_builddir__bin_exampleServer_LDFLAGS = -all-static
+#__top_builddir__bin_exampleServer_LDFLAGS = -all-static
 __top_builddir__bin_exampleServer_CFLAGS = -I$(top_builddir)/src -I$(top_builddir)/include
 __top_builddir__bin_exampleServer_CFLAGS = -I$(top_builddir)/src -I$(top_builddir)/include
 __top_builddir__bin_exampleServer_SOURCES = opcuaServer.c
 __top_builddir__bin_exampleServer_SOURCES = opcuaServer.c
 __top_builddir__bin_exampleServer_LDADD= $(top_builddir)/lib/libopen62541.a
 __top_builddir__bin_exampleServer_LDADD= $(top_builddir)/lib/libopen62541.a

+ 2 - 3
examples/src/opcuaServer.c

@@ -59,7 +59,7 @@ void server_run()
 
 
 	UA_ByteString slMessage;
 	UA_ByteString slMessage;
 
 
-	char optval;
+	char optval = 1;
 	int sockfd, newsockfd, portno, clilen;
 	int sockfd, newsockfd, portno, clilen;
 	char buffer[BUFFER_SIZE];
 	char buffer[BUFFER_SIZE];
 	struct sockaddr_in serv_addr, cli_addr;
 	struct sockaddr_in serv_addr, cli_addr;
@@ -82,9 +82,8 @@ void server_run()
 	serv_addr.sin_family = AF_INET;
 	serv_addr.sin_family = AF_INET;
 	serv_addr.sin_addr.s_addr = INADDR_ANY;
 	serv_addr.sin_addr.s_addr = INADDR_ANY;
 	serv_addr.sin_port = htons(portno);
 	serv_addr.sin_port = htons(portno);
-	optval = 1;
 
 
-	if (setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&optval,sizeof(int)) == -1) {
+	if (setsockopt(sockfd,SOL_SOCKET,(SO_REUSEPORT | SO_REUSEADDR),(char*)&optval,sizeof(int)) == -1) {
 	    perror("setsockopt");
 	    perror("setsockopt");
 	    exit(1);
 	    exit(1);
 	}
 	}

+ 5 - 0
src/opcua_secureChannelLayer.c

@@ -288,6 +288,8 @@ UA_Int32 SL_openSecureChannel(UA_connection *connection,
 	//449 = openSecureChannelResponse
 	//449 = openSecureChannelResponse
 	SL_send(connection, response, 449);
 	SL_send(connection, response, 449);
 
 
+	UA_free(response.data);
+
 	return UA_SUCCESS;
 	return UA_SUCCESS;
 }
 }
 /*
 /*
@@ -427,6 +429,8 @@ UA_Int32 SL_processMessage(UA_connection *connection, UA_ByteString message) {
 				&clientNonce);
 				&clientNonce);
 		UA_ByteString_printf("SL_processMessage - clientNonce=", &clientNonce);
 		UA_ByteString_printf("SL_processMessage - clientNonce=", &clientNonce);
 
 
+		UA_ByteString_delete(&clientNonce);
+
 		//  Req-6) Int32 RequestLifetime
 		//  Req-6) Int32 RequestLifetime
 		UA_Int32_decode(message.data, &pos,
 		UA_Int32_decode(message.data, &pos,
 				&requestedLifetime);
 				&requestedLifetime);
@@ -488,6 +492,7 @@ void SL_receive(UA_connection *connection, UA_ByteString *serviceMessage) {
 					//TODO return UA_ERROR_BadSecureChannelUnknown
 					//TODO return UA_ERROR_BadSecureChannelUnknown
 				}
 				}
 
 
+			//FIXME: destroy decodeAASHeader (to prevent memleak)
 			}
 			}
 			else
 			else
 			{
 			{