Skip to content

Commit e19e07e

Browse files
committed
tests: internal: oauth2: add windows guards for init and cleanup
Signed-off-by: Eduardo Silva <[email protected]>
1 parent cd9c705 commit e19e07e

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

tests/internal/oauth2.c

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#else
2020
#include <winsock2.h>
2121
#include <ws2tcpip.h>
22+
#include <fluent-bit/flb_compat.h>
2223
#endif
2324

2425
#include "flb_tests_internal.h"
@@ -35,6 +36,9 @@ struct oauth2_mock_server {
3536
int expires_in;
3637
char latest_token[64];
3738
pthread_t thread;
39+
#ifdef _WIN32
40+
int wsa_initialized;
41+
#endif
3842
};
3943

4044
static void compose_http_response(flb_sockfd_t fd, int status, const char *body)
@@ -176,14 +180,34 @@ static int oauth2_mock_server_start(struct oauth2_mock_server *server, int expir
176180
int on = 1;
177181
struct sockaddr_in addr;
178182
socklen_t len;
183+
#ifdef _WIN32
184+
WSADATA wsa_data;
185+
int wsa_result;
186+
#endif
179187

180188
memset(server, 0, sizeof(struct oauth2_mock_server));
181189
server->expires_in = expires_in;
182190
server->resource_challenge = resource_challenge;
183191

192+
#ifdef _WIN32
193+
/* Initialize Winsock on Windows */
194+
wsa_result = WSAStartup(MAKEWORD(2, 2), &wsa_data);
195+
if (wsa_result != 0) {
196+
flb_errno();
197+
return -1;
198+
}
199+
server->wsa_initialized = 1;
200+
#endif
201+
184202
server->listen_fd = socket(AF_INET, SOCK_STREAM, 0);
185203
if (server->listen_fd == FLB_INVALID_SOCKET) {
186204
flb_errno();
205+
#ifdef _WIN32
206+
if (server->wsa_initialized) {
207+
WSACleanup();
208+
server->wsa_initialized = 0;
209+
}
210+
#endif
187211
return -1;
188212
}
189213

@@ -197,26 +221,51 @@ static int oauth2_mock_server_start(struct oauth2_mock_server *server, int expir
197221
if (bind(server->listen_fd, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
198222
flb_errno();
199223
flb_socket_close(server->listen_fd);
224+
#ifdef _WIN32
225+
if (server->wsa_initialized) {
226+
WSACleanup();
227+
server->wsa_initialized = 0;
228+
}
229+
#endif
200230
return -1;
201231
}
202232

203233
if (listen(server->listen_fd, 4) < 0) {
204234
flb_errno();
205235
flb_socket_close(server->listen_fd);
236+
#ifdef _WIN32
237+
if (server->wsa_initialized) {
238+
WSACleanup();
239+
server->wsa_initialized = 0;
240+
}
241+
#endif
206242
return -1;
207243
}
208244

209245
len = sizeof(addr);
246+
memset(&addr, 0, sizeof(addr));
210247
if (getsockname(server->listen_fd, (struct sockaddr *) &addr, &len) < 0) {
211248
flb_errno();
212249
flb_socket_close(server->listen_fd);
250+
#ifdef _WIN32
251+
if (server->wsa_initialized) {
252+
WSACleanup();
253+
server->wsa_initialized = 0;
254+
}
255+
#endif
213256
return -1;
214257
}
215258

216259
server->port = ntohs(addr.sin_port);
217260
if (server->port == 0) {
218261
flb_errno();
219262
flb_socket_close(server->listen_fd);
263+
#ifdef _WIN32
264+
if (server->wsa_initialized) {
265+
WSACleanup();
266+
server->wsa_initialized = 0;
267+
}
268+
#endif
220269
return -1;
221270
}
222271

@@ -225,6 +274,12 @@ static int oauth2_mock_server_start(struct oauth2_mock_server *server, int expir
225274
if (pthread_create(&server->thread, NULL, oauth2_mock_server_thread, server) != 0) {
226275
printf("pthread_create failed: %s\n", strerror(errno));
227276
flb_socket_close(server->listen_fd);
277+
#ifdef _WIN32
278+
if (server->wsa_initialized) {
279+
WSACleanup();
280+
server->wsa_initialized = 0;
281+
}
282+
#endif
228283
return -1;
229284
}
230285
printf("server started on port %d\n", server->port);
@@ -283,7 +338,14 @@ static void oauth2_mock_server_stop(struct oauth2_mock_server *server)
283338
shutdown(server->listen_fd, SHUT_RDWR);
284339
pthread_join(server->thread, NULL);
285340
flb_socket_close(server->listen_fd);
341+
server->listen_fd = FLB_INVALID_SOCKET;
342+
}
343+
#ifdef _WIN32
344+
if (server->wsa_initialized) {
345+
WSACleanup();
346+
server->wsa_initialized = 0;
286347
}
348+
#endif
287349
}
288350

289351
static struct flb_oauth2 *create_oauth_ctx(struct flb_config *config,

0 commit comments

Comments
 (0)