Explorar o código

fixing client blocking on server disonnect

Stasik0 %!s(int64=9) %!d(string=hai) anos
pai
achega
66caa20e93
Modificáronse 1 ficheiros con 3 adicións e 1 borrados
  1. 3 1
      examples/networklayer_tcp.c

+ 3 - 1
examples/networklayer_tcp.c

@@ -70,7 +70,9 @@ static UA_StatusCode socket_recv(UA_Connection *connection, UA_ByteString *respo
 	if(ret == 0) {
 		free(response->data);
         UA_ByteString_init(response);
-		return UA_STATUSCODE_GOOD; /* no response -> retry */
+        connection->close(connection);
+        connection->state = UA_CONNECTION_CLOSED;
+        return UA_CONNECTION_CLOSED; /* ret == 0 -> server has closed the connection */
 	} else if(ret < 0) {
         free(response->data);
         UA_ByteString_init(response);