From c44cc446f7d34edab0c3080928e3735575665602 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Mon, 2 Apr 2007 22:10:41 +0000 Subject: [PATCH] natPlainSocketImplPosix.cc (create): Return if already created. https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=233406 * gnu/java/net/natPlainSocketImplPosix.cc (create): Return if already created. * gnu/java/net/PlainSocketImpl.java (getLocalAddress): Handle case where localport is -1. (create): Now public. * gnu/java/nio/SocketChannelImpl.java (SocketChannelImpl): Call 'create' on the socket. From-SVN: r123440 --- libjava/ChangeLog | 11 +++++++++++ .../jdwp/event/ThreadStartEvent.class | Bin 1146 -> 1146 bytes .../jdwp/transport/SocketTransport.class | Bin 2603 -> 2696 bytes .../PlainSocketImpl$SocketInputStream.class | Bin 810 -> 810 bytes .../PlainSocketImpl$SocketOutputStream.class | Bin 720 -> 720 bytes .../lib/gnu/java/net/PlainSocketImpl.class | Bin 3586 -> 3598 bytes .../lib/gnu/java/nio/SocketChannelImpl.class | Bin 5935 -> 5966 bytes libjava/gnu/java/net/PlainSocketImpl.java | 6 ++++-- .../gnu/java/net/natPlainSocketImplPosix.cc | 4 ++++ libjava/gnu/java/nio/SocketChannelImpl.java | 3 ++- 10 files changed, 21 insertions(+), 3 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index dce810fa3ab..ca939837674 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,14 @@ +2007-04-02 Tom Tromey + + https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=233406 + * gnu/java/net/natPlainSocketImplPosix.cc (create): Return if + already created. + * gnu/java/net/PlainSocketImpl.java (getLocalAddress): Handle case + where localport is -1. + (create): Now public. + * gnu/java/nio/SocketChannelImpl.java (SocketChannelImpl): Call + 'create' on the socket. + 2007-04-02 Andrew Haley * java/lang/reflect/natVMProxy.cc (run_proxy): Use diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/event/ThreadStartEvent.class b/libjava/classpath/lib/gnu/classpath/jdwp/event/ThreadStartEvent.class index 05fd3dcb5700bedb875eeb99573e5e27341ef62c..84f88dd75acac21dc095002817d0c267e177c3f5 100644 GIT binary patch delta 14 Vcmeyx@rz?a6f+~+=4fVlMgS?Y1WEt^ delta 14 Vcmeyx@rz?a6f-0H=4fVlMgS?e1WNz_ diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/transport/SocketTransport.class b/libjava/classpath/lib/gnu/classpath/jdwp/transport/SocketTransport.class index 8d7f0932b0241ae1493c7323e92e482b8df66060..eb7fc332aa6f83243b332918996ef92d734335c0 100644 GIT binary patch delta 1012 zcmaKq+fP(i7{z~k=FFTk#{nnE2q!K6|h4TWf!7o&BV2yxe~C z{?8Y{3T{u?V?Ns^Mzh08T6C+wu4I)$o$;_Xhc&e80e^L=MTem69=hIP17GTgzUFG1 zPBxizDN6ejrxLMDVlWl!8O$Y9$zg}D=+^Ijb!}T5!pyVyS`o@*`x2RSb|e=<5qBuV z@-(+OY-fiem`M(%a%qKsS$&V5@b3ui<$IHTib@?ZDgzEb@S`@3mDXMkI2`1V?lfA1 zhdE->r!N>0f0Cp6p0Ttv?NGr2n|?AT1Bwd$uTfFpAJ^}UDyyHY!wH6TIM7iu;;@jM zV!^WbM;|-W!`acq;Y@OE{ce*}dN}Ync#+E{mvnWotoRBMMW8Q}9Z8yu>8@axb&+2k zt}(7}1Y>fz;qV(1`c?34{y+Q}lK4lQt>7!;-67=wK(i#IF*Ch#<9~hpfu{o_Is_8Ji84{k>6fo|q;zNzHSP#iL$j zt59YLb8ryO1^WLpq%T1|4t2By6(`%T{d#R zFmVe3>Fs2RE((S6qvAzL{~XS6R@7>kE6&af)+U-4_(^t(yv(gwB)smz8A-TX-bMq$ocr-0KKac(X|P?0 dut0ZpiCx|*k4VtZGOvHieCaXGn+3gF9{^=^xGDeu delta 952 zcmaiy*-sNu6ob1ukkK|#{s0d;^G%?T5T!W&{PQ_?%x8ga^Hvuw zQUoZ@LYfszSgP-Ns>ino_*B-nLa~xn`irMRzwoZ}ZD5n1joL9Qy=`pPF>|)Pfvt*d zY}cJ;UEWT1``Kj>(qFBRrP#w>{mGnCv`x-HMCqo!nI73rA1(B=nj=(5dN?OYlBS3y(j=0QZ8|j5iY@4nOmPis zMY_Q{J!(%)uTMn6FIZ@1*wPvnK|4lBKBnpw?TK(U(vXd2IOw{^CEilKE%K7?55q!$ zS{g({PVzMJ#FNI)poqUDcMVA^*Qw%$WZj~X+brgetF#tNa+|44yHfKd`LHx0dzaFq z3<$D{LXL4 delta 29 lcmZ3*wu)_oBNJouWG5z1#_q{IOrES$8Q2-8O}@nx004%Q2;~3( diff --git a/libjava/classpath/lib/gnu/java/net/PlainSocketImpl$SocketOutputStream.class b/libjava/classpath/lib/gnu/java/net/PlainSocketImpl$SocketOutputStream.class index 739340fd585bbcfc8c94ce5934ec10a0432b14ed..58cd4b956dbcc831345dd650259dad05afb60872 100644 GIT binary patch delta 23 fcmcb>dVzI=Ars@S$wo|`tj8GG8IMnHULU33Rn delta 23 fcmcb>dVzI=Ars?{$wo|`tVbBw8IMkGULT{;I+ diff --git a/libjava/classpath/lib/gnu/java/net/PlainSocketImpl.class b/libjava/classpath/lib/gnu/java/net/PlainSocketImpl.class index 1e26dd573b3c588f51fd99a2781a3d949016053f..1eaf6587bcf4c795ae24eb3f155e419373b890e6 100644 GIT binary patch delta 186 zcmZpY>66)Tmy3~c@;xq3)~^hl4BsZ}aHp^`G4L@mPoBy>h1Gz8gVAuZ9#5fG2Ll@e zBLf42nbsDDy5kJGTDuuCBeewhw=pyvV2A?>HZd(=U}s*=z&?2|kCeSOgC0W&0~3P@ zP>UMSUHf?9f-pWw7oPjNzaRW%v2B3O&26+Z0 zh7blO1{0uOHJ}X)jJ^!)jDbLNgBU~^gBc`&v<#51#2Ct;%oxs~${5993RKGjv5mou v!5qj_VPR-xXq!BNS9Y>DuL@^6(1;8MVaBY<6}*w0@3Te3uFl-5Tn!s`}jcstMFF^1p+HZ;^Xz_MkXTlaowozGKS96QtL+}@wgTXZySp# za0?usT_3VmlCw7oxOMKOvbLNyEmhwci|BDnrPS3Z;7OVW1j-#dX}3MxVeR9d#X|y4=9g9{}pilHi4B2am#V0ZdD1nchQi1g!dGBlwavZDek!Y_{u^PuQh!HK7 z$5eV>Q|pkPCkFyW!+Jat(=X5x6627HwK!g&SWm9E_^U-tX7tO|1{IBxDTPBZBdIAk zDZ|59BtBB_;9)VHX^*7z39aQ+Q#>r`)TCk^P8L`u%WS<=F(*GVq6PuKxx|4{Z_|wNlq6ism$I+>FDJuuE3QnwS+dJCsP{1JUIh5+j#D1 zwNJ6e@O%MTDw*|-+9cI}7S|}aI!osH^r-lp>>Zw@saJ|ztKvF2Rb)-I8-(9$jSYHL zIS-DOStG$?pwKK$p2=)YD-dEQ%eK5+y>T|1k8J)a?3Ti$h9mIi$&}VSK0GYX>#%~a z5ZJj{X*W`RyqIJa)A`{mZ+h@9yd9%f0)`3F@zBpBDyv7)9tAd{hRGYLhPt>=ZhOepkEq=$l65nax z!NYO~51lI{;v0BN!JEvB8318%uB&(jzt85CN3|=N;6dUsOzrgCay(DU>^OgtvNA?W zFh*5+ozmhqw!SW7JTauT=<+64W}Scb(IRi_W9r`r6w8$H2X;`<*!7eoloh; zqCgsJcA=P$6Q){GR=x*W4Zwwj_#%?#V%EYXY(AIaC|pizUP&@uMUq{O z7Fes(;G zGkDJR;28|yyTs*L4B|O6UaQcfcDy0Ve*xDs-X50c7x5)VEaYb%e`PVQHjx1A61XAf zlU0w;&qIGfoHO#yV(!ite$gSEDQ4L}ZnTX%g{$*B!OQas^T5l`nRuElPqy)AiTWBd zJ2x{syJlSLEJp5ba95Drw}%RugS{b-OwMlj{Dr$w=#qK4Zx{T0e4YOv*t(9t4{w@+ z*YA14yU7(&Tp=$d_Sx)~RZ`)utMYr&_-06PhrCm$XebK!nfC*Z3aBWWnKS2CZpV?9 zy^^3b=2y0+aja z%iQ;8v0cq`A7Tj<;pd;$mZDUYqe4{h&bbUniRCz2RN+{0I6o3r;#592i6c#1)|p3p zXBL-E{2aev6!g`^K%NAh_@#-)u~^A?Um_aE5t)}w41~PbwjU|3JsTr(u`N_s#kv=7yce2;w;j0aWE|cxExLZi3QS5cMM5v-c2}mZ-Vy;5w z=FLgFyRgtAt=lB6-z|ySN@9)DVMk9FH3YMkVAf%=IGR`ddaMwuP%T!YUW9OhSc`R{ z0jG&Zw2G6_E>1z8Xu_aq#;DkUb43e3<4+?=Pv_@t3$Eb!deO>DU>oid9VYl^S|DY? zzlTL2Nm3E71neUL`$@n767Xyia0>~zl?05CfLlqxp${P7yN4v;dvgf*XESeq`5!B+iSz&f literal 5935 zcmcIoYg8QN8Gb%?U|<<@fh-9Taxqnb#gIg^)ft{)|#@_~wo&(ND{3Vh1^hLwGXqMDSPh+KgnF@fM?5xah0XZd+HL{whD!&` z5os-S+pxJ75m)ry*Jsa^eMyi2|jC~J)kgd*LcxFw&RMJ+jOCFuTx zq7*0|ampd^p$jLl?nBES8$pIiwcQf!(+n&}1CtmslR123^fk3v+IeaqP%>ymLlNsT zGcGY+W#Dw2Ay8^1*4ZpI!>az<|SgNhvQ}(Fyrv5}S9vVna%dVAye%ioQxSFjNH;1f5(u@n7I}JCdd1fDVwyd?mdyf}b^I_{Ykmq(*a~o-+P-GVrH2hXqPCTOa)|@rPNWUo zf+GTYOs($&f%nUo)8(Q&}<%OBTjeIu>!}?unRDvQkn+Ld&y6$v})7pUHWv z!pZB5*|z9-QDB*(joMg)(Xe@Gdn(yJ*c?km!-*`uykL)wpGv%LC8SJ)jw<@{+Gg;K zX(%~Ny0@qVXqVUBaVx1P@hbzrR)~>yl7_!E@H@Q9BNLzLKZ}P8vUr&NhD7`WUf1y& z>!K1MEZOf3yo@*8x^k=bB;o@SRArr!+kxk3sfqI!sVj4&26HrI)JZeyVC(ISrQ!qT zMoS*(D(wBw*;?e$T+L&CC!j-qH}If99%Ok}AP<-7%KewuIsE7GnCmC-PNV!RwRQ>R z3%GJ>o&N~t)=i?k_XvE4v4FP=d+Q$I%@I@`#^O3Hjio&gQM3Rj^Rt4Az{mI*q@flp z;UVJ`9u`hf@03ZLiW)xAIA?zyUCI#rGeX$T6&ZZF9YTE?_0m5-7H8a*F=k*3-E}g9 zE|g)ba<#-(bzPOauF4ex1$4Ut^Z6+eXya9eF{dt#m3vUi%j$7xOpB#saI^4HCq3I= zFITs7bq8i+K>0Ileb*n4s9ce@@hy9KpRPokS~1*f!-9 zX%g*xykLs{x3FfD=;CAdl>ce;DB)f{_D%VpLQfhWR{}e@5|Z)~O7ga!mdrim6j%Id z3_EW;e4|aMMVZefPuqmaO-liOpG0^-~Nqg)4D2q9oHWZfDpjT(7Qnz5B6% zYnKz^D@dA8u}`kVA|5GDrp{^H)z83nIGcO@MryU;2K3@)?Bw=1jQfzFofP&_<4#K7 zg=?^%QupCj4*lD42zT)Q0C%fQj~#R&K8O((Rze)7j~s~cx&v`I55#*_X}2gW6GSfM z0AEOK(ilx+thLTRr#Ou(du$wM6T@qI>O4eBo8bNR=TvF?;dK@~8RBjvA;8T{#{fFZa+%e^8v>Ey3HCiRfy)RJ68te}g z$>QvV*H^d~g&tX#Lwn%k(wR@+nZ{(#I1E26>S-M9@#zyp zrx#=Vn;wm$Bm}q->v)y)c#ULvoqO{eSc*Tg%ztJ%-^6OX#ddj{?eY%WRCDZF@AoS+IYXhZ9^ z&vT^RGmKEqqGw6H0(we1cXN>@5pU$1g(UNH_&y7>l&yF-*JSRy z(M9n?dMKvFTkxaY(&82B>CC+&r?gf3;H&Z@ZLKW+WjuJtGL%ga1Rvo_}f_p%Ef$CiUp_^ zl{i`O*A-EP6=D&8lUR)Pylxgt6)uhH^w8nr(t)4hC1$}`6$WxA=)lhv8Y{4b`Tl}v zoK9qZsW1@oER&nB7^93ljU39!*CScEKcGqS?8Q8vMr!)&JwCGW71F1S>)GtJdH9<( zg&xKBW4K#Lrcv$pnnb8_jb102d<=7SGB;;U`rU)sHfc3QTAwC~+CpLtyI`uBE>0zw zH3ZX-xuTxO`sMsBa0Ql$mHd@zHGeV+pi!KKO=1mNL?hb7x#$(=p8}<3Ha9;1bkc7?VbMt9Up*~ diff --git a/libjava/gnu/java/net/PlainSocketImpl.java b/libjava/gnu/java/net/PlainSocketImpl.java index dad1724d6b1..d2c8f02b67d 100644 --- a/libjava/gnu/java/net/PlainSocketImpl.java +++ b/libjava/gnu/java/net/PlainSocketImpl.java @@ -228,7 +228,9 @@ public final class PlainSocketImpl extends SocketImpl * * @param stream true for a stream socket, false for a datagram socket */ - protected native void create(boolean stream) throws IOException; + // FIXME: this is public for nio ... but this is just a hack + // until we upgrade to Classpath's nio. + public native void create(boolean stream) throws IOException; /** * Connects to the remote hostname and port specified as arguments. @@ -336,7 +338,7 @@ public final class PlainSocketImpl extends SocketImpl { localSocketAddress = new InetSocketAddress ((InetAddress) getOption(SocketOptions.SO_BINDADDR), - localport); + localport == -1 ? 0 : localport); } catch (SocketException _) { diff --git a/libjava/gnu/java/net/natPlainSocketImplPosix.cc b/libjava/gnu/java/net/natPlainSocketImplPosix.cc index d16f1d31f7b..b4f4a851e81 100644 --- a/libjava/gnu/java/net/natPlainSocketImplPosix.cc +++ b/libjava/gnu/java/net/natPlainSocketImplPosix.cc @@ -64,6 +64,10 @@ union SockAddr void gnu::java::net::PlainSocketImpl::create (jboolean stream) { + // We might already have been create()d in the nio case. + if (native_fd != -1) + return; + int sock = _Jv_socket (AF_INET, stream ? SOCK_STREAM : SOCK_DGRAM, 0); if (sock < 0) diff --git a/libjava/gnu/java/nio/SocketChannelImpl.java b/libjava/gnu/java/nio/SocketChannelImpl.java index cda86e80723..5925712bef2 100644 --- a/libjava/gnu/java/nio/SocketChannelImpl.java +++ b/libjava/gnu/java/nio/SocketChannelImpl.java @@ -1,5 +1,5 @@ /* SocketChannelImpl.java -- - Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -71,6 +71,7 @@ public final class SocketChannelImpl extends SocketChannel { super (provider); impl = new PlainSocketImpl(); + impl.create(true); socket = new NIOSocket (impl, this); configureBlocking(true); }