>> Basically, I think internal_forkexec() needs to be split up >into two - >> one win32 and one other. For win32 version, it needs to >CreateProcess() >> *before* it does write_backend_variables(), and then pass >the process id >> as a parameter to write_backend_vars(). > >Huh? Why?
Because we need to write the duplicated socket structure/pipe handle to the parameter file. I guess we could create a separate parameter file just for these things, but that seemed a bit unnecessary. Basically: 1) To create the new HANDLE, or in the case of a socket, the WSAPROTOCOL_INFO structure, we need to know the new pid. We can only know this after CreateProcess(), which sits in win32_forkexec. 2) To get the data down to the backend, we need to put it in the parameter file, which is done using write_backend_vars(). This gives that we either: 1) Write the data out in write_backend_vars, in which case write_backend_vars needs to know the pid of the new backend. or 2) Write the data out in win32_forkexec, in which case we need another parameter file. I was thinking (1) was the cleaner approach. //Magnus ---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org