dlls/winsock/socket breakage

Roderick Colenbrander thunderbird2k at gmx.net
Sun Sep 12 15:32:17 CDT 2004


Hi,

Currently I don't have access to the machine I use for wine stuff, so I 
haven't been able to create a real patch. Anyway I'll try to assist you 
fixing the problem as it isn't that difficult to fix.

There are three places that break Wine on FreeBSD:
- WS2_Send
- WS_getsockopt
- WS_setsockopt 

First the code in ws2_send isn't relevant to FreeBSD as the ipx sockaddr 
structures are different in case of Linux and FreeBSD. Just add #ifdefs or 
whatever Alexandre likes the most.

Next there are the WS_getsockopt/setsockopt functions. In the getsockopt 
fuction we need to retrieve the ipx packet type and we do the opposite in 
setsockopt. The code that you need to place in both functions looks something 
like this:

//getsockopt code
struct ipx val;
getsockopt(fd, 0, SO_DEFAULT_HEADERS, &val, sizeof(struct ipx));
*opt_val = (int)val.ipx_pt;

//setsockopt code
struct ipx val; (perhaps we should retrieve this one using a getsockopt call 
and then we set modified one)
val.ipx_pt = *opt_val;
setsockopt(fd, 0, SO_DEFAULT_HEADERS, &val, sizeof(struct ipx));
*opt_val = (int)val.ipx_pt;

I hope this helps.

Roderick

On Saturday 11 September 2004 19:36, Gerald Pfeifer wrote:
> On Thu, 9 Sep 2004, Roderick Colenbrander wrote:
> > I made some more progress with the fix but I'm not fully sure how it
> > works. I checked the freebsd source code to figure out how it works.
> > Compared to the linux source the code was very complicated as in linux
> > there's a special ipx setsockopt option and so on. [...]
> > Perhaps you can try to build a fix as I don't have access to any FreeBSD
> > box and can't test the patch. Note that in the function ws2_send we don't
> > need to retrieve the ipx packet type as that won't be needed for freebsd
> > as the linux/freebsd ipx sockaddr structure is different.
>
> The problem is, I don't know anything about IPX in general nor IPX on
> Windows or FreeBSD :-(, else I really would have tried to fix this.
>
> (This is why I tried to describe the FreeBSD situation as far as I could
> find out from an installation in my original message.)
>
> If you could provide a prototype path, I'd be most happy to give it a
> try and will also try to tweak it as good as I can, if needed.
>
> Gerald



More information about the wine-devel mailing list