libgaim/network.c

changeset 14957
1519e663dd9b
parent 14877
084d14fe0445
child 14959
eb5cf3522fda
equal deleted inserted replaced
14956:974d7da482fc 14957:1519e663dd9b
388 { 388 {
389 guint net_cnt = 0; 389 guint net_cnt = 0;
390 390
391 WSAQUERYSET qs; 391 WSAQUERYSET qs;
392 HANDLE h; 392 HANDLE h;
393 int retval; 393 gint retval;
394 int errorid;
394 395
395 memset(&qs, 0, sizeof(WSAQUERYSET)); 396 memset(&qs, 0, sizeof(WSAQUERYSET));
396 qs.dwSize = sizeof(WSAQUERYSET); 397 qs.dwSize = sizeof(WSAQUERYSET);
397 qs.dwNameSpace = NS_NLA; 398 qs.dwNameSpace = NS_NLA;
398 399
399 retval = WSALookupServiceBegin(&qs, LUP_RETURN_ALL, &h); 400 retval = WSALookupServiceBegin(&qs, LUP_RETURN_ALL, &h);
400 if (retval != ERROR_SUCCESS) { 401 if (retval != ERROR_SUCCESS) {
401 int errorid = WSAGetLastError(); 402 gchar *msg;
402 gchar *msg = g_win32_error_message(errorid); 403 errorid = WSAGetLastError();
404 msg = g_win32_error_message(errorid);
403 gaim_debug_warning("network", "Couldn't retrieve NLA SP lookup handle. " 405 gaim_debug_warning("network", "Couldn't retrieve NLA SP lookup handle. "
404 "NLA service is probably not running. Message: %s (%d).\n", 406 "NLA service is probably not running. Message: %s (%d).\n",
405 msg, errorid); 407 msg, errorid);
406 g_free(msg); 408 g_free(msg);
407 409
408 return -1; 410 return -1;
409 } else { 411 } else {
410 char buf[1024]; 412 char buf[1024];
411 WSAQUERYSET *res = (LPWSAQUERYSET) buf; 413 WSAQUERYSET *res = (LPWSAQUERYSET) buf;
412 DWORD size = sizeof(buf); 414 DWORD size = sizeof(buf);
413 while (WSALookupServiceNext(h, 0, &size, res) == ERROR_SUCCESS) { 415 while ((retval = WSALookupServiceNext(h, 0, &size, res)) == ERROR_SUCCESS) {
414 net_cnt++; 416 net_cnt++;
415 gaim_debug_info("network", "found network '%s'\n", 417 gaim_debug_info("network", "found network '%s'\n",
416 res->lpszServiceInstanceName ? res->lpszServiceInstanceName : "(NULL)"); 418 res->lpszServiceInstanceName ? res->lpszServiceInstanceName : "(NULL)");
417 size = sizeof(buf); 419 size = sizeof(buf);
418 } 420 }
419 421
420 WSALookupServiceEnd(h); 422 errorid = WSAGetLastError();
423 if (!(errorid == WSA_E_NO_MORE || errorid == WSAENOMORE)) {
424 gchar *msg = g_win32_error_message(errorid);
425 gaim_debug_error("network", "got unexpected NLA response %s (%d)\n", msg, errorid);
426 g_free(msg);
427
428 net_cnt = -1;
429 }
430
431 retval = WSALookupServiceEnd(h);
421 } 432 }
422 433
423 return net_cnt; 434 return net_cnt;
424 435
425 } 436 }

mercurial