Author: hbelusca
Date: Fri Mar 3 23:31:32 2017
New Revision: 74041
URL:
http://svn.reactos.org/svn/reactos?rev=74041&view=rev
Log:
[WS2_32]: Cosmetic changes first, before real fixes - CORE-12880 :
- Use IsListEmpty where needed;
- Initialize NextEntry using Catalog->ProtocolList after the lock on the catalog has
been acquired;
- Rearrange WsNqLookupServiceNext to reduce the code indent level; also, convert the
construct "if (var) { do { ... } while (var); }" into a mere "while (var) {
... }";
- WsNqPreviousProvider: the "next" provider is the previous one...;
- WsNqAddProvider: Use a more standard name for the boolean return value;
- Fix the annotation of MapUnicodeQuerySetToAnsi;
- Factor out setting the SetLastError WSALookupServiceBeginA.
Modified:
trunk/reactos/dll/win32/ws2_32/src/async.c
trunk/reactos/dll/win32/ws2_32/src/dcatalog.c
trunk/reactos/dll/win32/ws2_32/src/nscatalo.c
trunk/reactos/dll/win32/ws2_32/src/nsquery.c
trunk/reactos/dll/win32/ws2_32/src/qshelpr.c
trunk/reactos/dll/win32/ws2_32/src/rnr.c
Modified: trunk/reactos/dll/win32/ws2_32/src/async.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ws2_32/src/async…
==============================================================================
--- trunk/reactos/dll/win32/ws2_32/src/async.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/ws2_32/src/async.c [iso-8859-1] Fri Mar 3 23:31:32 2017
@@ -721,7 +721,7 @@
WsAsyncLock();
/* Process the queue */
- while (ListHead->Flink != ListHead)
+ while (!IsListEmpty(ListHead))
{
/* Remove this entry and get the async block */
Entry = RemoveHeadList(ListHead);
Modified: trunk/reactos/dll/win32/ws2_32/src/dcatalog.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ws2_32/src/dcata…
==============================================================================
--- trunk/reactos/dll/win32/ws2_32/src/dcatalog.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/ws2_32/src/dcatalog.c [iso-8859-1] Fri Mar 3 23:31:32 2017
@@ -384,7 +384,7 @@
IN PTCATALOG_ENTRY *CatalogEntry)
{
INT ErrorCode = WSAEINVAL;
- PLIST_ENTRY NextEntry = Catalog->ProtocolList.Flink;
+ PLIST_ENTRY NextEntry;
PTCATALOG_ENTRY Entry;
/* Assume failure */
@@ -394,6 +394,7 @@
WsTcLock();
/* Match the Id with all the entries in the List */
+ NextEntry = Catalog->ProtocolList.Flink;
while (NextEntry != &Catalog->ProtocolList)
{
/* Get the Current Entry */
@@ -435,13 +436,14 @@
IN PTCATALOG_ENTRY *CatalogEntry)
{
INT ErrorCode = WSAEINVAL;
- PLIST_ENTRY NextEntry = Catalog->ProtocolList.Flink;
+ PLIST_ENTRY NextEntry;
PTCATALOG_ENTRY Entry;
/* Lock the catalog */
WsTcLock();
/* Match the Id with all the entries in the List */
+ NextEntry = Catalog->ProtocolList.Flink;
while (NextEntry != &Catalog->ProtocolList)
{
/* Get the Current Entry */
@@ -483,7 +485,7 @@
IN PTCATALOG_ENTRY *CatalogEntry)
{
INT ErrorCode = WSAEINVAL;
- PLIST_ENTRY NextEntry = Catalog->ProtocolList.Flink;
+ PLIST_ENTRY NextEntry;
PTCATALOG_ENTRY Entry;
DPRINT("WsTcGetEntryFromTriplet: %lx, %lx, %lx, %lx\n", af, type, protocol,
StartId);
@@ -492,6 +494,8 @@
/* Lock the catalog */
WsTcLock();
+
+ NextEntry = Catalog->ProtocolList.Flink;
/* Check if we are starting past 0 */
if (StartId)
@@ -674,14 +678,14 @@
RemoveEntryList(&Catalog->ProtocolList);
InitializeListHead(&Catalog->ProtocolList);
- /* Loop every item on the list */
+ /* Loop every item in the list */
while (!IsListEmpty(List))
{
/* Get the catalog entry */
Entry = RemoveHeadList(List);
CatalogEntry = CONTAINING_RECORD(Entry, TCATALOG_ENTRY, CatalogLink);
- /* Check if this item is already on our list */
+ /* Check if this item is already in our list */
Entry = TempList.Flink;
while (Entry != &TempList)
{
@@ -709,7 +713,7 @@
Catalog->ItemCount++;
}
- /* If there's anything left on the temporary list */
+ /* If there's anything left in the temporary list */
while (!IsListEmpty(&TempList))
{
/* Get the entry */
Modified: trunk/reactos/dll/win32/ws2_32/src/nscatalo.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ws2_32/src/nscat…
==============================================================================
--- trunk/reactos/dll/win32/ws2_32/src/nscatalo.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/ws2_32/src/nscatalo.c [iso-8859-1] Fri Mar 3 23:31:32 2017
@@ -498,13 +498,14 @@
IN LPGUID ProviderId,
OUT PNSCATALOG_ENTRY *CatalogEntry)
{
- PLIST_ENTRY NextEntry = Catalog->CatalogList.Flink;
+ PLIST_ENTRY NextEntry;
PNSCATALOG_ENTRY Entry;
/* Lock the catalog */
WsNcLock();
/* Match the Id with all the entries in the List */
+ NextEntry = Catalog->CatalogList.Flink;
while (NextEntry != &Catalog->CatalogList)
{
/* Get the Current Entry */
Modified: trunk/reactos/dll/win32/ws2_32/src/nsquery.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ws2_32/src/nsque…
==============================================================================
--- trunk/reactos/dll/win32/ws2_32/src/nsquery.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/ws2_32/src/nsquery.c [iso-8859-1] Fri Mar 3 23:31:32 2017
@@ -134,9 +134,9 @@
if (!(Provider = Entry->Provider))
{
/* None was loaded, load it */
- if ((WsNcLoadProvider(EnumContext->Catalog, Entry) != ERROR_SUCCESS))
+ if (WsNcLoadProvider(EnumContext->Catalog, Entry) != ERROR_SUCCESS)
{
- /* return TRUE to continue enumerating */
+ /* Return TRUE to continue enumerating */
return TRUE;
}
@@ -145,7 +145,7 @@
}
/* Add it to the query */
- if (!(WsNqAddProvider(NsQuery, Provider)))
+ if (!WsNqAddProvider(NsQuery, Provider))
{
/* We failed */
EnumContext->ErrorCode = WSASYSCALLFAILURE;
@@ -194,157 +194,150 @@
OUT PDWORD BufferLength,
OUT LPWSAQUERYSETW Results)
{
+ INT ErrorCode = SOCKET_ERROR, OldErrorCode;
PNSQUERY_PROVIDER Provider, NextProvider;
- INT ErrorCode = SOCKET_ERROR, OldErrorCode;
PLIST_ENTRY Entry;
/* Make sure we're not shutting down */
- if (!NsQuery->ShuttingDown)
- {
- /* Acquire query lock */
+ if (NsQuery->ShuttingDown)
+ {
+ /* We are shutting down, fail */
+ SetLastError(WSAECANCELLED);
+ return ErrorCode;
+ }
+
+ /* Acquire query lock */
+ WsNqLock();
+
+ /* Check if we already have an active provider */
+ NextProvider = NsQuery->ActiveProvider;
+ if (!NextProvider)
+ {
+ /* Make sure we have a current provider */
+ if (!NsQuery->CurrentProvider)
+ {
+ /* We don't; fail */
+ WsNqUnlock();
+ SetLastError(WSA_E_NO_MORE);
+ return SOCKET_ERROR;
+ }
+
+ /* Get the last provider in the list and start looping */
+ Entry = NsQuery->ProviderList.Blink;
+ NextProvider = CONTAINING_RECORD(Entry, NSQUERY_PROVIDER, QueryLink);
+ while (NextProvider)
+ {
+ /* Check if this is a new-style provider */
+ if (NextProvider->Provider->Service.NSPIoctl)
+ {
+ /* Remove it and re-add it on top */
+ RemoveEntryList(&NextProvider->QueryLink);
+ InsertHeadList(&NsQuery->ProviderList,
&NextProvider->QueryLink);
+
+ /* Set it as the active provider and exit the loop */
+ NsQuery->ActiveProvider = NextProvider;
+ break;
+ }
+
+ /* Get the previous provider */
+ NextProvider = WsNqPreviousProvider(NsQuery, NextProvider);
+ }
+ }
+
+ /* Release the lock */
+ WsNqUnlock();
+
+ /* Restart and keep looping as long as there is an active provider */
+ while (NextProvider)
+ {
+ /* Call its routine */
+ ErrorCode = WsNqProvLookupServiceNext(NextProvider,
+ ControlFlags,
+ BufferLength,
+ Results);
+ /* Check for error or shutdown */
+ if ((ErrorCode == ERROR_SUCCESS) ||
+ (GetLastError() == WSAEFAULT) || (NsQuery->ShuttingDown))
+ {
+ /* Get out */
+ break;
+ }
+
+ /* Acquire Query Lock */
WsNqLock();
- /* Check if we already have an active provider */
- NextProvider = NsQuery->ActiveProvider;
- if (!NextProvider)
- {
- /* Make sure we have a current provider */
- if (!NsQuery->CurrentProvider)
+ /* Save the current active provider */
+ Provider = NsQuery->ActiveProvider;
+
+ /* Check if one exists */
+ if (Provider)
+ {
+ /* Get the next one */
+ NextProvider = WsNqNextProvider(NsQuery,
+ NsQuery->ActiveProvider);
+
+ /* Was the old provider our active? */
+ if (Provider == NsQuery->ActiveProvider)
{
- /* We don't; fail */
- WsNqUnlock();
- SetLastError(WSA_E_NO_MORE);
- return SOCKET_ERROR;
+ /* Change our active provider to the new one */
+ NsQuery->ActiveProvider = NextProvider;
}
-
- /* Get the first provider on the list and start looping */
- Entry = NsQuery->ProviderList.Blink;
- NextProvider = CONTAINING_RECORD(Entry, NSQUERY_PROVIDER, QueryLink);
- while (NextProvider)
+ }
+ else
+ {
+ /* No next provider */
+ NextProvider = NULL;
+ }
+
+ /* Check if we failed and if we can try again */
+ if (!(NextProvider) &&
+ (ErrorCode == SOCKET_ERROR) &&
+ (NsQuery->TryAgain))
+ {
+ /* Save the error code so RAS doesn't overwrite it */
+ OldErrorCode = GetLastError();
+
+ /* Make sure we won't try for a 3rd time */
+ NsQuery->TryAgain = FALSE;
+
+ /* Call the helper to auto-dial */
+ if (WSAttemptAutodialName(NsQuery->QuerySet))
{
- /* Check if this is a new-style provider */
- if (NextProvider->Provider->Service.NSPIoctl)
+ /* It succeeded, so we'll delete the current state. */
+ while (!IsListEmpty(&NsQuery->ProviderList))
{
- /* Remove it and re-add it on top */
- RemoveEntryList(&NextProvider->QueryLink);
- InsertHeadList(&NsQuery->ProviderList,
&NextProvider->QueryLink);
-
- /* Set it as the active provider and exit the loop */
- NsQuery->ActiveProvider = NextProvider;
- break;
+ /* Remove the entry and get its provider */
+ Entry = RemoveHeadList(&NsQuery->ProviderList);
+ Provider = CONTAINING_RECORD(Entry,
+ NSQUERY_PROVIDER,
+ QueryLink);
+
+ /* Reset it */
+ WsNqProvLookupServiceEnd(Provider);
+ WsNqProvDelete(Provider);
}
- /* Get the previous provider */
- NextProvider = WsNqPreviousProvider(NsQuery, NextProvider);
+ /* Start a new query */
+ if (WsNqLookupServiceBegin(NsQuery,
+ NsQuery->QuerySet,
+ NsQuery->ControlFlags,
+ NsQuery->Catalog) == ERROR_SUCCESS)
+ {
+ /* New query succeeded, set active provider now */
+ NsQuery->ActiveProvider =
+ WsNqNextProvider(NsQuery,
+ NsQuery->ActiveProvider);
+ }
}
- }
-
- /* Release the lock */
+ else
+ {
+ /* Reset the error code */
+ SetLastError(OldErrorCode);
+ }
+ }
+
+ /* Release lock */
WsNqUnlock();
-
- /* Check if we have an active provider now */
- if (NextProvider)
- {
- /* Start loop */
- do
- {
- /* Call its routine */
- ErrorCode = WsNqProvLookupServiceNext(NextProvider,
- ControlFlags,
- BufferLength,
- Results);
- /* Check for error or shutdown */
- if ((ErrorCode == ERROR_SUCCESS) ||
- (GetLastError() == WSAEFAULT) || (NsQuery->ShuttingDown))
- {
- /* Get out */
- break;
- }
-
- /* Acquire Query Lock */
- WsNqLock();
-
- /* Save the current active provider */
- Provider = NsQuery->ActiveProvider;
-
- /* Check if one exists */
- if (Provider)
- {
- /* Get the next one */
- NextProvider = WsNqNextProvider(NsQuery,
- NsQuery->ActiveProvider);
-
- /* Was the old provider our active? */
- if (Provider == NsQuery->ActiveProvider)
- {
- /* Change our active provider to the new one */
- NsQuery->ActiveProvider = NextProvider;
- }
- }
- else
- {
- /* No next provider */
- NextProvider = NULL;
- }
-
- /* Check if we failed and if we can try again */
- if (!(NextProvider) &&
- (ErrorCode == SOCKET_ERROR) &&
- (NsQuery->TryAgain))
- {
- /* Save the error code so RAS doesn't overwrite it */
- OldErrorCode = GetLastError();
-
- /* Make sure we won't try for a 3rd time */
- NsQuery->TryAgain = FALSE;
-
- /* Call the helper to auto-dial */
- if (WSAttemptAutodialName(NsQuery->QuerySet))
- {
- /* It succeeded, so we'll delete the current state. */
- while (!IsListEmpty(&NsQuery->ProviderList))
- {
- /* Remove the entry and get its provider */
- Entry = RemoveHeadList(&NsQuery->ProviderList);
- Provider = CONTAINING_RECORD(Entry,
- NSQUERY_PROVIDER,
- QueryLink);
-
- /* Reset it */
- WsNqProvLookupServiceEnd(Provider);
- WsNqProvDelete(Provider);
- }
-
- /* Start a new query */
- if (!WsNqLookupServiceBegin(NsQuery,
- NsQuery->QuerySet,
- NsQuery->ControlFlags,
- NsQuery->Catalog))
- {
- /* New query succeeded, set active provider now */
- NsQuery->ActiveProvider =
- WsNqNextProvider(NsQuery,
- NsQuery->ActiveProvider);
- }
- }
- else
- {
- /* Reset the error code */
- SetLastError(OldErrorCode);
- }
- }
-
- /* Release lock */
- WsNqUnlock();
-
- /* Keep looping as long as there is a provider */
- } while (NextProvider);
- }
- }
- else
- {
- /* We are shuting down; fail */
- SetLastError(WSAECANCELLED);
}
/* Return */
@@ -359,9 +352,8 @@
IN PNSCATALOG Catalog)
{
WSASERVICECLASSINFOW ClassInfo;
- PNSQUERY_PROVIDER Provider;
LPWSASERVICECLASSINFOW pClassInfo = &ClassInfo;
- PNSQUERY_PROVIDER NextProvider;
+ PNSQUERY_PROVIDER Provider, NextProvider;
PLIST_ENTRY Entry;
INT ErrorCode;
DWORD ClassInfoSize;
@@ -539,28 +531,28 @@
WsNqPreviousProvider(IN PNSQUERY Query,
IN PNSQUERY_PROVIDER Provider)
{
- PNSQUERY_PROVIDER NextProvider = NULL;
+ PNSQUERY_PROVIDER PrevProvider = NULL;
PLIST_ENTRY Entry;
- /* Get the first entry and get its provider */
+ /* Get the last entry and get its provider */
Entry = Provider->QueryLink.Blink;
if (Entry != &Query->ProviderList)
{
/* Get the current provider */
- NextProvider = CONTAINING_RECORD(Entry, NSQUERY_PROVIDER, QueryLink);
+ PrevProvider = CONTAINING_RECORD(Entry, NSQUERY_PROVIDER, QueryLink);
}
/* Return it */
- return NextProvider;
-}
-
-DWORD
+ return PrevProvider;
+}
+
+BOOL
WSAAPI
WsNqAddProvider(IN PNSQUERY Query,
IN PNS_PROVIDER Provider)
{
+ BOOL Success = TRUE;
PNSQUERY_PROVIDER QueryProvider;
- DWORD Return = TRUE;
/* Allocate a new Query Provider */
if ((QueryProvider = WsNqProvAllocate()))
@@ -575,11 +567,10 @@
{
/* We failed */
SetLastError(WSASYSCALLFAILURE);
- Return = FALSE;
+ Success = FALSE;
}
/* Return */
- return Return;
-}
-
-
+ return Success;
+}
+
Modified: trunk/reactos/dll/win32/ws2_32/src/qshelpr.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ws2_32/src/qshel…
==============================================================================
--- trunk/reactos/dll/win32/ws2_32/src/qshelpr.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/ws2_32/src/qshelpr.c [iso-8859-1] Fri Mar 3 23:31:32 2017
@@ -926,9 +926,9 @@
INT
WSAAPI
-MapUnicodeQuerySetToAnsi(OUT LPWSAQUERYSETW UnicodeSet,
+MapUnicodeQuerySetToAnsi(IN LPWSAQUERYSETW UnicodeSet,
IN OUT PSIZE_T SetSize,
- IN LPWSAQUERYSETA AnsiSet)
+ OUT LPWSAQUERYSETA AnsiSet)
{
INT ErrorCode = ERROR_SUCCESS;
SIZE_T UnicodeSize, AnsiSize;
Modified: trunk/reactos/dll/win32/ws2_32/src/rnr.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ws2_32/src/rnr.c…
==============================================================================
--- trunk/reactos/dll/win32/ws2_32/src/rnr.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/ws2_32/src/rnr.c [iso-8859-1] Fri Mar 3 23:31:32 2017
@@ -2,7 +2,7 @@
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS WinSock 2 API
* FILE: dll/win32/ws2_32_new/src/rnr.c
- * PURPOSE: Registration n' Resolution Support
+ * PURPOSE: Registration and Resolution Support
* PROGRAMMER: Alex Ionescu (alex(a)relsoft.net)
*/
@@ -285,11 +285,6 @@
dwControlFlags,
lphLookup);
}
- else
- {
- /* Fail, conversion failed */
- SetLastError(ErrorCode);
- }
/* Free our buffer */
HeapFree(WsSockHeap, 0, UnicodeQuerySet);
@@ -297,14 +292,13 @@
else
{
/* No memory to allocate */
- SetLastError(WSAEFAULT);
+ ErrorCode = WSAEFAULT;
}
}
- else
- {
- /* We couldn't get the size for some reason */
+
+ /* Set the error in case of failure */
+ if (ErrorCode != ERROR_SUCCESS)
SetLastError(ErrorCode);
- }
/* Return to caller */
return ErrorCode == ERROR_SUCCESS ? ErrorCode : SOCKET_ERROR;