Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: Winsock error 10035 while trying to upgrade from 8.0 to 8.2


  • From: "Cyril VELTER" <cyril(dot)velter(at)metadys(dot)com>
  • To: magnus(at)hagander(dot)net
  • Cc: pgsql-general(at)postgresql(dot)org
  • Subject: Re: Winsock error 10035 while trying to upgrade from 8.0 to 8.2
  • Date: Fri, 25 May 2007 10:17:34 +0200
  • Message-id: <0-39227343642-2674-1819306(at)CFGEM>


> > Cyril VELTER wrote:
> 
> > 
> > > 	Searching the source files, it seems the error message is generated in 
> > > port/win32/socket.c line 594.
> > 
> > Right, but the important thing is which path down to that function is it
> > generated in. Which is why a backtrace would help.
> 
> 	Yes, I understand that.
> 
> > 
> > Looking at the code, the problem is probably somewhere in
> > pgwin32_recv(). Now, it really shouldn't end up doing what you're
> > seeing, but obviously it is.
> 
> 
> 	After looking at the code of pgwin32_recv(), I don't understand why 
> pgwin32_waitforsinglesocket() is called with the FD_ACCEPT argument. 
> 
> > 
> > Perhaps we just need to have it retry if it gets the WSAEWOULDBLOCK?
> > Thoughts?
> 
> 	I've modified pgwin32_recv() to do that (repeat the 
> pgwin32_waitforsinglesocket() / WSARecv while the error is WSAEWOULDBLOCK and 


> not raising this error. I've an upgrade running right now (I will have the 
> result in the next hours).


	Replying to myself, the upgrade is not finished yet, but I can confirm that 
there is cases where pgwin32_waitforsinglesocket() return and the WSARecv 
immediatly fail. I-ve modified the end of pgwin32_recv() :


	/* No error, zero bytes (win2000+) or error+WSAEWOULDBLOCK (<=nt4) */

	for(;;) {
		if (pgwin32_waitforsinglesocket(s, FD_READ | FD_CLOSE | FD_ACCEPT,
										INFINITE) == 0)
			return -1;

		r = WSARecv(s, &wbuf, 1, &b, &flags, NULL, NULL);
		if (r == SOCKET_ERROR)
		{
			printf("SOCKERROR");
			if (WSAGetLastError() != WSAEWOULDBLOCK)
			{
				TranslateSocketError();
				return -1;
			}
		}
		else
		{
			return b;
		}
	}


	The printf("SOCKERROR") line have been hit two times.

	Any though ?

	Once this upgrade is finished, I will make another try removing FD_ACCEPT from 

the pgwin32_waitforsinglesocket() call.


	cyril




Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group