From: Viktor Szakats Date: Thu, 29 Jan 2026 19:54:17 +0000 (+0100) Subject: tests/server: tidy-up error messages (Windows) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=373e89a021936da00d4469c1db084006294b9125;p=thirdparty%2Fcurl.git tests/server: tidy-up error messages (Windows) - show error description on `PeekNamedPipe()` error. - show `GetLastError()` instead of socket error on non-socket failures in the window handler. - include full hex `GetLastError()` numbers in error messages, syncing with Schannel code. - drop internal `win32_perror()` function, in favor of direct `curlx_*strerror()` calls. Closes #20477 --- diff --git a/tests/server/sockfilt.c b/tests/server/sockfilt.c index 2153498929..549eb1fcf7 100644 --- a/tests/server/sockfilt.c +++ b/tests/server/sockfilt.c @@ -526,7 +526,10 @@ static DWORD WINAPI select_ws_wait_thread(void *lpParameter) /* if the pipe has NOT been closed, sleep and continue waiting */ ret = GetLastError(); if(ret != ERROR_BROKEN_PIPE) { - logmsg("[select_ws_wait_thread] PeekNamedPipe error (%lu)", ret); + char buffer[WINAPI_ERROR_LEN]; + curlx_winapi_strerror(ret, buffer, sizeof(buffer)); + logmsg("[select_ws_wait_thread] PeekNamedPipe error: (0x%08lx) - %s", + ret, buffer); SleepEx(0, FALSE); continue; } diff --git a/tests/server/util.c b/tests/server/util.c index 1cf62c0e76..880fd90146 100644 --- a/tests/server/util.c +++ b/tests/server/util.c @@ -141,17 +141,6 @@ void logmsg(const char *msg, ...) } #ifdef _WIN32 -/* use instead of perror() on generic Windows */ -static void win32_perror(const char *msg) -{ - char buf[512]; - int err = SOCKERRNO; - curlx_winapi_strerror(err, buf, sizeof(buf)); - if(msg) - fprintf(stderr, "%s: ", msg); - fprintf(stderr, "%s\n", buf); -} - static void win32_cleanup(void) { #ifdef USE_WINSOCK @@ -170,12 +159,13 @@ int win32_init(void) WORD wVersionRequested; WSADATA wsaData; int err; + char buffer[STRERROR_LEN]; wVersionRequested = MAKEWORD(2, 2); err = WSAStartup(wVersionRequested, &wsaData); - if(err) { - win32_perror("Winsock init failed"); + curlx_strerror(SOCKERRNO, buffer, sizeof(buffer)); + fprintf(stderr, "Winsock init failed: %s\n", buffer); logmsg("Error initialising Winsock -- aborting"); return 1; } @@ -183,7 +173,8 @@ int win32_init(void) if(LOBYTE(wsaData.wVersion) != LOBYTE(wVersionRequested) || HIBYTE(wsaData.wVersion) != HIBYTE(wVersionRequested)) { WSACleanup(); - win32_perror("Winsock init failed"); + curlx_strerror(SOCKERRNO, buffer, sizeof(buffer)); + fprintf(stderr, "Winsock init failed: %s\n", buffer); logmsg("No suitable winsock.dll found -- aborting"); return 1; } @@ -485,13 +476,17 @@ static DWORD WINAPI main_window_loop(void *lpParameter) WNDCLASS wc; BOOL ret; MSG msg; + DWORD err; + char buffer[WINAPI_ERROR_LEN]; ZeroMemory(&wc, sizeof(wc)); wc.lpfnWndProc = (WNDPROC)main_window_proc; wc.hInstance = (HINSTANCE)lpParameter; wc.lpszClassName = TEXT("MainWClass"); if(!RegisterClass(&wc)) { - win32_perror("RegisterClass failed"); + err = GetLastError(); + curlx_winapi_strerror(err, buffer, sizeof(buffer)); + fprintf(stderr, "RegisterClass failed: %s\n", buffer); return (DWORD)-1; } @@ -503,14 +498,18 @@ static DWORD WINAPI main_window_loop(void *lpParameter) (HWND)NULL, (HMENU)NULL, wc.hInstance, NULL); if(!hidden_main_window) { - win32_perror("CreateWindowEx failed"); + err = GetLastError(); + curlx_winapi_strerror(err, buffer, sizeof(buffer)); + fprintf(stderr, "CreateWindowEx failed: (0x%08lx) - %s\n", err, buffer); return (DWORD)-1; } do { ret = GetMessage(&msg, NULL, 0, 0); if(ret == -1) { - win32_perror("GetMessage failed"); + err = GetLastError(); + curlx_winapi_strerror(err, buffer, sizeof(buffer)); + fprintf(stderr, "GetMessage failed: (0x%08lx) - %s\n", err, buffer); return (DWORD)-1; } else if(ret) {