I have found two bugs in dlls/winsock/socket.c. One I posted about a few days ago in wine.devel. WS_accept calls WS_getpeername but passes it the Unix file descriptor rather than the Windows socket handle. A simple one-line change takes care of that. The second problem is more subtle, and I'm not sure if my solution is enough. In WINSOCK_DoAsyncEvent there is a loop that dispatches all events currently available on the socket. The problem is the order, it simply calls them in increasing order by FD_xxx values. Since FD_READ is numerically smaller than FD_CONNECT, a socket that has both events will fire the read event before the connect. When that happens, the app gets a read event before it thinks it's connected and ignores it. Ideally, the loop should post them in the order in which they occurred, but does wine keep track of that? Instead, I changed the loop so that it checks FD_CONNECT and FD_CLOSE before FD_READ and FD_WRITE. I'm not sure if the order I chose is the optimal one, but the app I was testing (Xnews) works every time now. This patch for dlls/winsock/socket.c contains both fixes. -- Paul Rupe "She smiled, in the end." p r u p e @ n c . r r . c o m begin 644 winepatch.dff M26YD97@Z('-O8VME="YC"CT]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T] M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T*4D-3(&9I M;&4Z("]H;VUE+W=I;F4O=VEN92]D;&QS+W=I;G-O8VLO<V]C:V5T+F,L=@IR M971R:65V:6YG(')E=FES:6]N(#$N-C@*9&EF9B`M=2`M<C$N-C@@<V]C:V5T M+F,*+2TM('-O8VME="YC"3(P,#$O,3$O,30@,C$Z,C8Z,C,),2XV.`HK*RL@ M<V]C:V5T+F,),C`P,2\Q,2\R."`Q.#HT.3HR,0I`0"`M,C`R+#8@*S(P,BPR M,R!`0`H@"3`*('T["B`**R\J(%!E<FUU=&%T:6]N(&]F(#`N+D9$7TU!6%]% M5D5.5%,@+2`Q(')E<')E<V5N=&EN9R!T:&4@;W)D97(@:6X@=VAI8V@@=V4@ M<&]S=`HK("H@;65S<V%G97,@:68@=&AE<F4@87)E(&UU;'1I<&QE(&5V96YT M<RX@(%5S960@:6X@5TE.4T]#2U]$;T%S>6YC179E;G0N("!4:&4**R`J('!R M;V)L96T@:7,@:68@=&AE<F4@:7,@8F]T:"!A($9$7T-/3DY%0U0@979E;G0@ M86YD+"!S87DL(&%N($9$7U)%040@979E;G0**R`J(&%V86EL86)L92!O;B!T M:&4@<V%M92!S;V-K970L('=E('=A;G0@=&\@;F]T:69Y('1H92!A<'`@;V8@ M=&AE(&-O;FYE8W0@979E;G0**R`J(&9I<G-T+B`@3W1H97)W:7-E(&ET(&UA M>2!D:7-C87)D('1H92!R96%D(&5V96YT(&)E8V%U<V4@:70@=&AI;FMS(&ET M(&AA<VXG=`HK("H@8V]N;F5C=&5D('EE="X**R`J+PHK<W1A=&EC(&-O;G-T M(&EN="!E=F5N=%]B:71O<F1E<EM&1%]-05A?159%3E1372`]('L**R`@("!& M1%]#3TY.14-47T))5"P**R`@("!&1%]#3$]315]"250L"BL@("`@1D1?04-# M15!47T))5"P**R`@("!&1%]/3T)?0DE4+`HK("`@($9$7U=2251%7T))5"P* M*R`@("!&1%]214%$7T))5"P**R`@("`V+"`W+"`X+"`Y("`O*B!L969T;W9E M<G,@*B\**WT["BL*("\J('-E="!L87-T(&5R<F]R(&-O9&4@9G)O;2!.5"!S M=&%T=7,@=VET:&]U="!M87!P:6YG(%=302!E<G)O<G,@*B\*(&EN;&EN92!S M=&%T:6,@=6YS:6=N960@:6YT('-E=%]E<G)O<B@@=6YS:6=N960@:6YT(&5R M<B`I"B!["D!`("TY,#<L-R`K.3(T+#<@0$`*(`EI9B`H87,I"B`)>PH@"2`@ M("!U;G-I9VYE9"!O;6%S:R`](%]G971?<V]C:U]M87-K*"!S("D["BT)("`@ M(%=37V=E='!E97)N86UE*&9D+"!A9&1R+"!A9&1R;&5N,S(I.PHK"2`@("!7 M4U]G971P965R;F%M92AA<RP@861D<BP@861D<FQE;C,R*3L*(`D@("`@:68@ M*&]M87-K("8@1D1?5TE.15]315)6159%3E0I"B`)"7=S,E]A<WEN8U]A8V-E M<'0H<RP@87,I.PH@"2`@("!R971U<FX@87,["D!`("TR-S8T+#<@*S(W.#$L M-R!`0`H@5D])1"!#04Q,0D%#2R!724Y33T-+7T1O07-Y;F-%=F5N="@@54Q/ M3D=?4%12('!T<B`I"B!["B`@("`@=W-?<V5L96-T7VEN9F\@*FEN9F\@/2`H M=W-?<V5L96-T7VEN9F\J*7!T<CL*+2`@("!U;G-I9VYE9"!I;G0@:2P@<&UA M<VLL(&]R<&AA;B`]($9!3%-%.PHK("`@('5N<VEG;F5D(&EN="!I+"!J+"!P M;6%S:RP@;W)P:&%N(#T@1D%,4T4["B`@("`@:6YT(&5R<F]R<UM&1%]-05A? M159%3E1373L*(`H@("`@(%1204-%*")S;V-K970@)3`X>"P@979E;G0@)3`X M>%QN(BP@:6YF;RT^<V]C:RP@:6YF;RT^979E;G0I.PI`0"`M,C@P,BPQ,R`K M,C@Q.2PQ-R!`0`H@"2`@("!]"B`)<&UA<VL@)CT@?D9$7U=)3D5?4T525D56 M14Y4.PH@("`@('T*+2`@("`O*B!D:7-P871C:"!N971W;W)K(&5V96YT<R`J M+PHM("`@(&9O<B`H:3TP.R!I/$9$7TU!6%]%5D5.5%,[(&DK*RD*+0EI9B`H M<&UA<VL@)B`H,3P\:2DI('L*+0D@("`@5%)!0T4H(G!O<W0Z(&5V96YT(&)I M="`E9"P@97)R;W(@)61<;B(L(&DL(&5R<F]R<UMI72D["BT)("`@(%!O<W1- M97-S86=E02AI;F9O+3YH5VYD+"!I;F9O+3YU37-G+"!I;F9O+3YS;V-K+`HM M"0D)(%=304U!2T5314Q%0U1215!,62@Q/#QI+"!E<G)O<G-;:5TI*3L*+0E] M"BL@("`@+RH@9&ES<&%T8V@@;F5T=V]R:R!E=F5N=',L(&)U="!U<V4@=&AE M(&]R9&5R(&EN('1H92!E=F5N=%]B:71O<F1E<@HK("`@("`J(&%R<F%Y+@HK M("`@("`J+PHK("`@(&9O<B`H:3TP.R!I/$9$7TU!6%]%5D5.5%,[(&DK*RD@ M>PHK("`@("`@("!J(#T@979E;G1?8FET;W)D97);:5T["BL@("`@("`@(&EF M("AP;6%S:R`F("@Q/#QJ*2D@>PHK("`@("`@("`@("`@5%)!0T4H(G!O<W0Z M(&5V96YT(&)I="`E9"P@97)R;W(@)61<;B(L(&HL(&5R<F]R<UMJ72D["BL@ M("`@("`@("`@("!0;W-T365S<V%G94$H:6YF;RT^:%=N9"P@:6YF;RT^=4US M9RP@:6YF;RT^<V]C:RP**R`@("`@("`@("`@("`@("`@("`@("`@("!74T%- M04M%4T5,14-44D503%DH,3P\:BP@97)R;W)S6VI=*2D["BL@("`@("`@('T* M*R`@("!]"B`@("`@+RH@8VQE86YU<"`J+PH@("`@(&EF("AO<G!H86XI"B`@ %("`@>PH` ` end