From ba0e82158d7b8cf780941ef2b36a3dd7f4172287 Mon Sep 17 00:00:00 2001 From: Vincent Lucas Date: Tue, 12 Jun 2012 16:16:39 +0000 Subject: [PATCH] Corrects RTP adresses logged in pcap file by JingleNodes socket. Updates ice4j library to revision #306: Corrects RTP adresses logged in pcap file. Adds an informational log when the RTP loss rate is > 5% (at most an entry each 5 seconds). --- lib/installer-exclude/ice4j.jar | Bin 358904 -> 360872 bytes .../neomedia/RTPConnectorTCPInputStream.java | 6 ++ .../neomedia/RTPConnectorTCPOutputStream.java | 6 ++ .../neomedia/RTPConnectorUDPInputStream.java | 6 ++ .../neomedia/RTPConnectorUDPOutputStream.java | 6 ++ .../JingleNodesCandidateDatagramSocket.java | 93 +++++++++++++----- 6 files changed, 94 insertions(+), 23 deletions(-) diff --git a/lib/installer-exclude/ice4j.jar b/lib/installer-exclude/ice4j.jar index 8806069d13c54cfd1d6986f2d093a3afb0a8507c..8c4922e4995e4eac085d4878d4f39f2f3e735195 100644 GIT binary patch delta 14312 zcmZ8o1zc2J)8D$JfP{2QcZZ~Ox0KS-T@nH-rF4jJB?Lr3qy!OH%0dBYL=-^*2?+%R z@j+1ZyL)%v_kH~KhrgYj`A?iVbI#r4nf>wYL|rl?m4z`HLxDh$ArL+}!}(M~Xm99E zDI4txy$x`|pEmgMpW5hSJh6#+w4-`!N5#u3nPD;6pjpG`=qnG6RGS8D)kCs^=M(|P zHgyLLGT6W+HydhL?`?1mAs}qnTY@ErsHY?_h9e=66vkwyHXnlt^{ZxtKyr(^NnnoI zjUs~jYQ-`feZlChFR-MiIsk+Af?^fBQ;njA2u-Ox$%Y9O0)YX*r>scUwjT}u5OjB% z4+sg|d^k(+IP_$ekc&IdnMq(P&j(8}u$3d7hdwI^1R@9tCXzto5?2Q(z^m#2UBRuf zZ5UcOE=8ETfe8#Dgt4g=f;rr~0)k7^_oVPt-LhLIjL30~i{L13tAvnamR%5l?X~S! zV5smZwHa8nnMNZJQw46zY;Cc>{(*rt;Ybo#Y#}trWCe{cx!~zLHe4wQG8#pNA2&a* z+DW7T@WEVdfE{N?jDC7$S?x7hY?9| ziF*L$kAw^#Q~&J6a|PY+xN$$YkwFBQ?@44lJcGD(VI(;PoVCWTy54!nvXI1e}x736n-7H>IEDo$S(Kp?~@5eV4=S_h^g1Aq(XbsDJ#rv+E5 zhde;hLM5l!mvaDYU=WC2as+}Oj|4jm09xF%A#x8cDcqPDG7O#)oQ?%D7KyJe@TnzI z7@uBn(-Jw3CvZ=!kR&LWdTE2~N5fQsJ`X>N9qx*^fe(<;7Y)m-a{tSz`B!9k;{a^cRokj5-OC7b^Am)R9mA6@J~AO z1V}xABnK1B08&u9A6W;hZS^Co362T}krZsS_zBifmRse7>LQc`fe;6I`jPZtkU7AC zTUbE~5dxrGN6y3Lh1=Xl25`fc&K*a+B7`E%jj|+2Qw31+$6#rX4C*Ao&ypPKJYkSV zr%;mwidz%KOR%h~jZz@+5)4pm%&=~mD@uzX{pf)zhL;vDJ`jbXgQZDWR4iP$xIam# zNO-5gMWv#22nl+WjtU@1#j{aH1S&QURR&Wa%QX~XHcYRfNRY5O+d>p4!CBOGR1Luh z*9{aUffB!oN+5@E&GjfhLMUwaQK|&Djt@{~WU#d15sH)wrrL*4;{?lTBPeYSe68R{ zH&AD3U`p%|B|*@2`h`lNrpA|Fc15v$0aV+wB;b=F6g!TR65T<-^i!d231!Vqht{No z>&}A%Ee@M1;6Q&MlxH|ET9i-3jz51#g7hN0AZhy(5r` zRWkTVE2}5E&3s~=>Xz00N$uc?*<(MF2?;9v^+NPxW<-Gq;7DJb~_lgOX~51V=czpb<}7NNdQ&6#ZqEja)88k%)7Q z8TwiDO9$bP#3(SzCtJ6IeZ6TOLWW~>#+p>Rn=tyqza+1Bt06r_;XN&R z75_kKOj_ljTx4g--g^?EY%G zrk3YrN_}hxAJ{4F9l~2=X4;Ixm7<@l@ZY*27@b7bG_u9dQV@~n{yM8AXzTNa)zaoi z(FLiyZ$8i)*E3GXZECw{$zK$xB%PQqR=ZfZ>6s~J#~V*oqJl^kXo?B zBfi_JIixC;iF``cCbA;jIOp?ynJYIR+1-C~yoW`xSz3!RmF!B&VCS{x);)+wwDaoJWT}^qREBf<%{! zUscGKE#w+RfAq1+jsmoW|76K_?b%yPDZFFikZ(YEMRFS#hv>=WjO2Bo5bJN}($y7i zvc$PNIgwuu<9{s<22n%>Ckda+e*WNTK|HpHxj_rq4b<}dZ5he-nuRj|&9=*O8(WjjiaBjD0?{#4|jlpIP%&>KOZt&99$X-&ab_ ztU5AhFgwgoa(?dp68@}gRM2Z^rfpi9B9J?+{l3}FOovAAQ1VP;hjTjqEj6;<=CX6>J;T)IT7QPlq8E{S!l~+}Z$Tpe@>X@TW2ewW#x6VeVuqYUH*DL+d@`H!DQyEi{t{hFkY26vYGL0rt z>||_z*n)WUqJUN!zxjiaH(u`Yoq-2pa#8UyC4GD(J`}SZmwQFZq$HIe#))U{de&HL zaKF+Z+x__C9;zmH;ntkXkV^U3y&6YU-Jm@3=dj7G>CNAfBTX|Jn`8@t9j^@70bk0; zYWX%7^VTNAp2U1KNC~!8if@g&@pR64(+6AZ`$Iz9mGO1Xx{SLI@@K4X^H}qFlWncC zpZ(P5q*%#Wg6@ZyD9xNmZj-f4YCX6!H!*p=%_>i}s7qz#uERUi!HE3Ymk(c66Xs*h3$Mw1vh(Wn}!UuN_`w%uj@RCPYDp?WBf-` z8mpX>HymlF$BoOeFH= zm%h6kYNc`%ZpqIsShPsDUW&e|+ItPm)N>+XW#jf9R~i?>WLu5bk!0UN?0Yawe%+ur z#(K`9f}HZ^2+7SRlA9%(D^kK-Q^KKPm$I>>0lQCYnFBbB$I>!jjB5*BCCDk+0b#j-D^$kXJf&J;(ft;<}0AT8Oxj zbma|$#;B~)4YPYb#nDvfLnoad`noVG1}27^M_4~QA5Lq;>B6XFvgNUWwpya8(rF7y z!}i_YV{%uR(4N+!(cY)U3|o{ulCgGSDH^V)(O2O6?63V&eRtzfbz0+q)Ur}u=fE~_ zOmntvn!mpVHCD5E?Cwp|uWC;;x8xYRwe)RKk!N~sLXMwMsPRjqXk5FCI6Bj~?Qdgt z_jZ$Ss;@ENlvBvym~HpA)^~WNi(Gi#v<16yk?C+Qd3)~4wz`t%eBjthm)2xdDr2A) zufw!&cZgMbp6nqtDA0SA-y=WMWV!06>3PB2XB=K)j;B1{_a5tG3CT2lzo^alekMyS z^yW~Gt$S6W{RFE_l~XC@h<{Z~lTRSaM97Qb99zGtLPxcS5+_-=>fcQan%tKW#f`9F zCoU{6+6Gk>p6zhTr=`NJerdIGt2$#p5u|L``2PCPCnI{?E5C2Qv&5o4Wvq$NHw_N% zjvLy~T^l+~7ueDf-D(qj`k{~#H}kyd!Q!K6y7#5wAI)S!1sy`?Rmmls4d2-fc`qI| zKJ1rme$&)3E>P-IAnv2Ue{v?UW4!jdk2SW@XN6_rD?&~+TCFd%sQmV=snDVdR{QYl z0p;AITc;vs`OG-GSM=BJBdq@1e=RH}UkEnj|9SaF^IjmQ@B?7EUA%hz0b@PxhH>_T zH}~n?%42wkZ_TcU`wBi=-I)yz>w2}IV7FT9B?c#U^vp&qE0c+3{*`8FH+29X#=vw5p9gtC+ctu?V%trvL=K0wC?SH{hniL`&X zwqo(#G|G|s1@haQV#5lJnz7)iD8;=G==goD`KMxs|73O8ZH@T41RA+CotZzr_c6yq zg(5z;>|XrOuo)(UbxQm1J&1Tot$E||{avi^EKcM0qt0uOPBlEjRc;5aT_io68>!lU z!W=m^P4H#iie)~BtHLf})_0a)R&8f8#s~dw$jWDz(BjIiIJ3FVRp~qRLXLh# z=h}B6V~bHeW$Kmp;#c+ec1=>F$GqTi!j-YVUr=1u6E!Go=I zv=lSL7b?zXzW~-2?U%!Tb>_D@}ap@gSrEijmD^%a1Zs@+kSY`hzJjF7k->_@YIS zjP~P~1|vbgZ{0i{c0A#GWx$=eGnA>E7Sp=AYM& z7`+v-RpNGN@Amn)xMVo>ME{k#z_ihCog_W~oTeO^rPYbDxOtyVZoB%VU63}ouyCxl25waPY980N|Si+IAI;psBD2^$wx=po#TgogjXOFtoGxPRw z#cte`-^mA;tV~4f&$zTqY_(rJq_N0<>ul0+xKA6fQXhsM&^Q!XKy@u}u!- zaST%|f98e-N>g}vc#P?;E`%9UbBEPm(j>d`6p@G#0q?!LA=Xg(p`|TfTl2GJ_lf6d z)hDu?(Ur%KH|o>S)W4p2bL+d`XNRU9RmZ@ZKfzuX+KRty{b<#)tA+C3kIfa`sDfPLQ*GJdl!=y2iL?!0`ehkC%rklH_YWVKYf@CI$a_hiUlBK0>woynVu*LDfn?M& zKC@~wn^Rx{lirbZnCe*a+Cr|C&56pbNgotln@}lvEzjXM&@j5~<8OJ=OM^y1Pa)-K zBvIk|HD&(e6gsylu8N9)WMQvUzjFcB~$5OC9b2bl27o=N=YMZ2W!g3&1 z$1jIGccK4Uzcf}q5%Ku-uv{D?*}+l{tNp}gPi&fFg=CfA%yR6f$k;60L;uEGnr}FB zbUtRpHdZ@)?)JMVcbwYS%#z2)L}X1a>)mOEv@Z8eJ&wm%l&uF}chJ#!&Knb>rqS;Y zEiFP*BhS3XwUd5#$U!*n=(@2WtVgiLr_BdklKBzAES<`>CoR5wbFR2i1$`4b|LxUv z$7y42r!JF|ww3?RWRUh#g_tFp^Si}JDZ;g6Kbo_Aco>Z;sdBQs?s(}xxK z(qA<_J;%nRZEijF&kXlJ)sKve+%EozAuS%#7qoU)>*IYUC1!2c*mk9* z?7Afvg*zpy4Q1?d&LYN1{9SMQ)61w-pW^iMdiwqitiBWhh#5prmpJuGIj+)h-#`ZH zJxm52Z8aN~A{Uo_-I-!BPMzOHm3;g&#bN0Z9Z04kQCV!;*A*te)~>XuuTZw09@}zB zG%Ijva-N|{e}MhO(2rXTeI~8LKgt#s=(-i^^WTJ2k0i&vW43gY@HP`FbFg%|i#@qo z(!j#fZ%{hQO`Vb#rM69JK7dnL$ZWp+w!PXp%IEN;`R5f6@$}qw9WHMhvB?ty$NI{e zzejX>g?4&Hb~1e5m70v{41bsWsq3R7hL2T&j@&zQaBe*{+d?@k{p|G{+quy*StoVJ z=&Cq4O_fm_q!$B9@0F{(?qn*X?JdT(xE~z*QeTp?qVH$wL;cvEJk7!UO3V|S_UP}w_rSBajVgv?)80UY+OiBRc|@(X;mBS$U~Kv^ zC(Z5#$HL^8r`ocfY?T(LpXC~9M5mUqZ?V>pZ>pB4L)p_s6UGL6v08qL8~UrF*a)7n zhiPY-CUO}%QzXu;$#kB(DY|Bq+FaFeqVuu~?v+AnbIm4&Q-A#1Nh*pD1Mw>MUzTYU zcdnEkd}n0D-J5<9-_;Sxh70lzCCyZEfX;Y98#Zgso#r=5?NtqEg!hE@H&@?E1aVX* zQ*bQ4aof6BcGkRQ(fnR?MmeM0^aCul#hT!r_3b(sc51%}^OiEEmU^D|79h^Wjf~uC+?KCTE_@Z7|54zks^_NZ~_S#QP>}en{zA zS<|>;`O@YzM`>-^NcURk-1jcy`bo1Fi}!>wl1@INX5#a4;^e|9MO+|L`EGL!Lq4Br z^+kH=cv{U1qdA3laVgh-CeF5QT3!FbaC*>zjXb3FbECa_??6HvYdDW)I_LAOgXPU6yl-KJXTleJnO|XCXN>7l4b+^zKyw;9YbF;rxFn#Am+|@+&p0bHf zj{IBv({@*@ie4kzrw?XkDNQGGEX*_W_^VB^&J-IQK*L!`e@YAi+pHqBJ2qy5lTsx{g>spClL1!JR?=&Ag}7P_H}idxc$TE!fSQak1CW?HOn}a=6~(4?B0>+q&7;y18&gx`kcu zr{VNo1VyRDmM49NTfvxjP-!BGOZlkX8{L>2X&#a9kb`Y9>ZE-q(>_>=+yv<^JbR+F zq*;)E_H68m&+COxRV9IkZQ~1D9zWXVd%t=;zOvNVaq6(aHU7r#+6cy+v5!Uwdu`8G z`WuVve8z#glm_OLprLfAwp9Ez_O?sXl#SOb(BF(*6K-H+Cnz7rR_ks*CS5z)-_v2D z4$CkZq*wMGR~C2nSjyFU(=%SxwMG-cG;VzL5N%g||GLDRY0s%>GN~)bHeO+YpmV;` zq%Gy>#@HO>CneYN>kQvcv5hgdmP2V)yNwPfk@B96W>oCGzxJXrwDrsqpy@)k_d=mz zQICxaY}w+s{V;|&6si0P8CRUX&q{NCIMH@k!S!IM`WXGdsE9c#l)zcX2Sxtt;TymRAJs#F0a#2F)H*Af&gZetm-U?1T&Q&|eeV zOLC;JRvyGb?Y75bySIPoH*#FVtdlwz_mq9`x^~m`3gkCR*MvfbZ`5qVZduC1Ny0Ce zugM6R51M7f+@|^z(#IZzeIbVM;*rWMaG&!`j#2gC41U3WZ20CA_I!qKK^rF4E7vYe zkTr)H(TtNBkMP_;yl=JPHm&AeuVy$is#Yf#Ypc9pMPfW;=eB#s{-8GTE@NEV6GcH_ z{-|y%)>)6UWvM~#K%^<|+tasXkG#H$AH0d9d8O@@^~35#yF>BQx8~SYQOWJ9dNZ5F z8qXEdy1~J8Yi&o})T>4{S3@ZqWuz9%JnNj2V~-8_+>J36(iUfXjm?dIEm1O6+dgIc z>G<_ow?KwB_7nntV3zuBV+{cUf!@46ifU(q0LZpepz|VbGCR`%>3Nl4(*ahP!=W zDExU2bNn3$+;x)k zs5<#(AVj&^>DuOC-UaLVUK`wf*H6fj@6|*3=KTu$LyoJ13w_uFdfAn9vl#cHq4mM; z8+~8D3i9R_03Sd;`Q=-+S7B65{ee3s<|^O2h}gL@1J(o0biO%w7)k|S$=Wf z*ja0Tz<8Y}MtQTqZro$nDArLu**Wj*+KG~G(ru5CV}hnbIPI(C-uyE!w}Qu)Y)Pu(IeOA;1*owf0wWm21$~8z64GrM z<8}BC>j$=4MVzZ#if4VwixYOU(?qAnzHXl)JD4lKXfUT4zZ`z2qFb70b-AC(?a}W) z6x}CX`jTWTgD>&MCA_ues_wfX2jr%7P#O{=w(VWrb%IBq@+BbLh{2gzKIJ#-2}I3;N;uT z&k5J=zwV=d!WW!}?dUeb-DFEAdKK;+!IeBgeulf5X}sOamm~0P6AGI7d=Y>+vhw&KVyNZB}R-F2EJ~mA?s{^0A06NLD%h) z;0`0^1Q^VQ;lervv*|LZdED(u?=t;nDHutI6F$C?dt8yP+H_LjzL_>W3Cv$63#z9?zoB=hh{aPqaM>>U=QVt2;7#zm(#DI-}P5U|^TRf7tcq-f)S3 z(7c?d@4M!UMaI}Z>*7Cy23ONc3p3i6r1wpHhr0b4S#{zV1J!@#XjQA$R5pKo@?a(K z)ETo3llnn}phu!?qkVdlyjMFVK6G891o@WK^UNQda7ozDIF3Y}4)>CWKKXZlVu{OmAjHp9) z32uGf{~zbo!K+wF?0pm4pvx(Zm%&?^39UhcFB5N`KVtvCZR6$ zFaWcO@Rm&*U-C0kyBupE`OJX(DeVC7W%jFkS=ND!+1BIbta(SB_cdiov3xbN9S~o6_@N1*;J`xNwb=hbmZ-^8?%3v-)4u-6zxz zcjlJn-E(phl573lc-7Pz_}kTgJ-EnqTkzG)mB}{gVvTpEeTQG)ZuN|LFLj)cMYA+cS1;G~+F@f@QJ}bV;Ft1K@Y|_kQ>=O|RrDP_S+lKO+CBaMldTljflf5PLOG1NL*}oS0t7%p5DeUe| zoeHOUeROSYf8dY9l}?YqT4@bMOK_fLKV{u)y46N~pToVRu6SVQLw|no`MJ~51E@qv zpU3BmUGf+GQ5tKNM(ua3#8k|y$PZcj?WT8MUNDYg7U#{nYG@!i5#cnLYbIHpe0hCl zfBaPR&!g!p%SZW4%YsFR1FORT^P{+htvpGkKf0bQ^bVsuB>|8O_K=c3sI$L8H!IK`C zc35rJ19J{`efyLb1|A1a%^Rai*ns2wF{}itI2hAK2`kuL#JIvOez?vwObsapj6WPADE<#d1UBsW4`!R-%j7qP z&@>bL8>2$7)`S6`5S|brw7`3Ue{&{4j4;duHb8{HYv2ZqsnJk3CU_tLD8Z4-Ndg-9 z!GISe0ZEusCke>IoCQh11|}4x0CQNBE(O@b#Ih6+029{IKp;%?N&~hq!7c;n!dmBL z027#KlL3tIM3F3D05gnb0b`gb{tvM#3t{nzRFETL66GKao--x~MS&*-y)GF&a?;TnW8Ks(>Rb%2oyJ zU^}a-L@ix4C}DW@ay7^)Uh7Z|$}XNbqYh#4M4LL%7o7$K#&i5Nh!OT{5bf}561`v6 z1gv2f?=>M`c(B50;+*8320UQScRUC0)J%&AuGWIUc+PJvqSJHQM9ZDp&?xXC4jrP4 z1RY}P=5&ab6?KUNyrxUk+SP>;g`Y1QJ)+Z2JtBrlpQsh0Pvnf~LzeNON*EBQ;IaW= z0XuzXKpeZ0A<;qJi%%V6&;@NHijw+Puw$x z3JFh;n-E9pZ30ytp7X#2u!IQ;QzFN~l&Dp03Yfz2?3qG=;lcW5M9bIAplskdduBwi zhB+~w5_4h!9GMdXv$Y@+cP)VPuoj~ww5ssxK9U~3Z6FbzbIXR9)t@#*b<;CY&ErMoXNU#);|y`>>DvOQ zVf9Q~VnMFj5@*N24v2z9&+LF0m{7NeW(V)PaJws0ZrL*NY;;x6&o1yF}4SIiZfIDDyJaV3`M!hZ;5H)1@+Zh$I0 zu4y;G7XA|czXn23)g3VBhVt>R3oryi5PCNK=T)6(mjOzj2k7xvV!SZ)m&cw5Db(^i ze++?8`40|yuTGRK#zTccizBEf5$g`XO{$=Y2f&8PEhmVAK=g4?*^Ve`#fwsJ{#Qf> z{_z0lU@wdU-J7?d@BTHAC+)wy%(UR~mN3eJCG?~V^bP+#4b*=87iz8zkCFrx@dlw3 zX)@$nCng~gh-S#>-y_WF1QWdgM$oYhO%FDCL9yXyM8y+|?Mydb#0si;0d!!BC%^!U zO7SA=o_~qtA3&fi>Yo<* z3;L}e4<$V9y1gKWpGNQuMsV8;nh3m`g51&7yU=J@p#=QxCUqQ?_6F2p)Z4l^L_LHW zguDp-gZTOib;6>;aA3~j| zl~5&MbVUnT#mjbG_BG8iyU1j7wp3?mNcFuTJo5}HLDXcqroUY#o7LI5DogSR*{ zU%u4>Sz?A3BJW=oBQ!AJM@7s@P$CF824kBdXKqYDxZ}`|22}sTp4Y^H6G|Ahe__wM zIj%y98i5j}_7^r+3&!$*94Z(NSOMNJ)q5Bm4_O1N(Y<^=?v%Pan=ONR2BT z&kzN@!T=t){xa}f)hIld7kn88(82M~;kk!N;Lk8XnG0V4y{X1=E|B>Ys2WB8ip&XY z3BFaJ{0U=nW z6wgkXhS}0^`NQl3Jp0l-%w_`fE)r0WN+DfBr>zNgzSuvbyKL6km_TP$SNc2mJrIGg=AC7CLy%^ zKlgL*_xJtw_u_SrbKYk>=bY#H+|TnoCD$4Ew~tYo7@#ra2*eQtf+4jlg-QTT4}Hid zqG_RzE-v`L6+ZlbHFU@(Buuhdz&HG7%?!yym{Ai-zDFPes6)u`x-~0I z3PKwz{H7jWdL53`qo;U8j3;v@d;Z`S!kqMN5N;hNLG+i z4PdNMwNX0)8@TFXP7Ujg`9CHEgbf@cSh5LiC4n&<(Y~ZGCNZvp5++pd84&_Wde}$; zbBwYd64V!SKf}?d4iv1xlBPl*f<2MaLKGa4M6&pkwcyRNqwLI{JS3j}kx@l=9K!zog@R0UR_2_v#y;vzVT+{hs0nB^NtC|=E8E`|!9 zQuD5l<{!`q#AvF^XSSN~U*BQi;~*pnEH)A7VKRfpcRjUroDG*rf(%2!e7@rKEx{|q|W=Z;q(}gfdp(5Ba+|}R}bZn zEIsHX`)i~Dc}xdRsfH)wJbHAM>I>jkcx zB8Ttq4ziH~re;B;002|u*+^}I)HD|< zNRURAA$8#?it8vx#$sTcVKwslQJ5NTMSdoDYj}gSL{URN)VWwUkL5tkHGlvQZy}F? z)Llq2P|Ok_1+_YnC9v8?C$f;>=s^#XoQ)Q*rlugX$O$z@00{yi3i5O!=|N5_fCD$T zfD|AEK(UORC4u$VH<3QvFlA4JdPfLFk{e}8kjC+&WGP{3lN5@V;OCPJ>H=Yq`iiJw z0>!P4I!>^xqlG#};6>}9*qCA6EN7G^K|1e>N+*MPQNAb?9ZX%rqQVK%!)vI^1RtSs zC~ZQ5ns1?e2vX5Rls?2h1B-LD>;fCGrC$ zM$mQmg^HzytCpCXZk-A>_aq6}(u-opQBa^?5HOuoXiGvI+;nJl3jDGLx^kdJVWX)W z=xIWG1|3HW6Ivnv1iFJz9WNd9)=|6y&d~zx4zHTHP6sqUIozsWJw^}9g+o4QIzqQE_@ZM7{yhWHwuCHoTt>^o#Rid)Xc2rQphP5k6mBF(_EX)5P!stx zAQ0jpasbT$`guX?8=DuvfK9Ztxx`?>pfZh7OqaoEcHMnceU|^Cwy6e9HA0F8ncj7G zqA!@AgMV0lTBFqg(;B4#v{IQ*fkK8?%_t0>Jgx2#7ybQB%izhBYWcUpZ!;V7{e{IZ zQ_DU#x^1W|&ir(Iwby*GxweS-GJpNZm*ZA3me%AxoRm^)?$5L5spGLKlo2c&7oOjq z_lu8U-f(-KG#?#L%KTkYxvMI79`Ra>l9Yv7Qn~Nzk=F&3NjhKUbDYDZt`&a`#thC$ z>_ITQTZ>Ds%#Dc$=aHYrhKzGcNHa~l0R z=y*a$wmX1QOmiRWTmDgw}MSmfHRBbGI@8bLZwV)LbV_0u{`{0I@~awE?sACR^#KLP@fDK zhU|J?xR)X!JaMmBwy(ZW$@|v5g?@pCGoQ^1_0x}Z-t#g~DX*z+vsO{784#3j*Wk+y zi4N4}lYjegPDt?c=X)bq6aS{1k;LinMQ8uY90TTvQs=sXovWU!oD)KeH#7{Gq|aUC z&-XajzQOLPmTpqhOE4G=jEr5ZFw21MH=FMyGa|Is4bLz=r7tMf-Nqs)|bLXO5t=b zRD5_u@(@Q-on7dAUxGB~OjKMe*ZNML|F+bCkq(=fRe+#a!S0rm?J1j{s$`dE2}Yb^ zuDAv3R`u5pl<&AcNEltR3_!mxvF@#+mMgPPicR3$n0`|gbAxR>jQ*&cw2#Y&o}fwQ zdg-Yytt=t&`+47F(P%Rw-{ph0KO5b^@OMo|^1# zqSRuf;H$lJ@cEtz)1|X-Nxul*m!Cgz_Hy*2qoi2=We}G zv2tqIQw68o>*3ooJ=?CPm!{#A3zmF1pW@V45ff2+)6nu$sPfktU+nnAa&*_45!act ztk{G*>8gX3y10;zY_*BQ=QqVZya=AZ$FM27;&3)Pl5`XT=7@2AS$cANw4{muNo5x*c$=&T1IT(r^Fil2}(z#Uo4i!?a-PPw}RV-n;V- z*8*!@k1Mjz*pBfI_Nv^)T7DA{=@YikwJNzIOXb?=|6x@kCnN%M>-Z0S4X0b)&q`vW z19GBOBqeUJdS@uzA#466cvf9}tB~UlOGVS1)%LHcmv_w`sOTFQ(0MK>9*|8N-CE1n z{!Vh@ozXG&biLxd+55$nNl}ys-c~vaI-*o|H}V*2%evXZ=*U&Blr3SA<~LsJgzsur zaysyZ2cu}K9p&n>g3F(DW|sY8kd~_G!q2MvGSmGnGwOn!lWl^kxce)^hg~ce4a)epEQ; z%vt~b^xBer%j@Jj#LTU0p&xJXUg2w(({ISVHqK90f5x$%)v3PD#mC}Wc~39nwp#(4 zbeeCqbLLuUUhNQ=STW;VFL=#2L9YHmvyY0)GYg7(FMprR$nhmfnntWu5qW*7WBnh~ z?>+HVS>71`M7c$!sDdfx`hsGzde0dFE-tleQ+P^ubQ}gT5?lHEHCI!8&6-}m*cAHCB06nRN|bWB;b&+wLNKn z9J(Q;kY`Li#XG-;s^np2m3mHMh=OgfXz)$%d^Ao|xPdWb2rDJil774;#WXwV0a|1m zBR|YGCq;e<0GNvrR_Cs=3AXgRQYSm^Y3!X)>2_bZoEb0C8x(}?_I$Ul^=IsPDwYs zvomXUVCdH)psB=alX5wmugUn#W{u<`NH*#%xKtOmyOhm4taQ34^e+3(0E@ue-uRVv z@^Hz@na#pI(&gVeeBoHqrF6dVm+TKG|B(LkDt82d{{r@_cRWjl3V|5p1^pAyqS$O} zvPgzemcyAo{+HvFWMt#)Ct?-`fRuz7@<%k(=jhd6^Icr6RwBEeIbBsVUtO0odS0cJ zloRkhrp!Zr>!QU|M!Qu*7271sh=`E_i&fL*!_0JtQ>oJ&Ynx!?_Lu&M!^6;~y=I(o z^lr;*Z5bQ(g~zADk0adh{ z0})5}E%Mv5&-PVrTiG;re7wx)U$u|EtyUeD+HNQE=gr4Kkw0x8D@FcveB2cI)B4eu zakDB6Y>yE6)BQ1uk*jJyx&5@rpM@f9gv&^$NZyB&JA$_ltM>a0a)+55f86`CT7<3K zztUx3c&$?Gkc!hvy(YU z2$~Z5{4hplgg0U8k#+LP!uZhvb^BxHBMtmjVnfWPpAy&K&ZT=rHsnQ$zMH1^PwE^| z2f1?QhYVS!_Q(Y~6-*<`o z-T2L$Ep|nI6{Dsq1FBp*t@faR_>v5C9UM8R5@eu(j%_!a@jL|OXn+jHL@wH zB!mw(Ae*Fh&!%1CY9vmn?o!C1p~-4M_p!Yb-e zm6?Qx7@vk71!Jd>mJdf& zwoHPfFv3Q|qQa>TfZ~oV-Ksh77FHo93_)h^DwdhNRkVcG{8DDq%Jo>lJ>l4wMFvu< zxyvc6t2a9uP$_v00!3~1$3z9P?1tZ+=Vr1Vzr%53JxQxHTZ=#FdY3R(R(F6X#6_%{mW%r z%n43eIl389FH(PTpV*!h1BbS?Ujx>8-lp6yiUsD8y^p-+$ZHoHmf{bkKeqNt4yRY0 zU+{TaR+Yf4&+&vi_$CjJ#n^eT5{ty(>YtLzE#jA~Y74X$%ggUy=NMM3)8kflZa*2~ zJ9*86t#SQrjhAZO>bpx0f!&8Rdt>F%D_Qoi7xwy{qir~ z{QRb0N4w$Mtp6kN4!?FUg~rKL7l>Izug6IU!7k(8!&yc;&Sg^(5<|nC3>)I|K$9Z9AD9}J(m9!1=272MxOOWin5}4Uwm%}l3Or)G-OKKL$4Wc9#7Z0O!$jYHLPzG^?ls*( z1Elo5!NHdauXq{Pzn!G+)6A4AVZGN~E1^@f^7%PmiZrja-^q{m#s`iMd3O7=m7n28 z12-186rA~Far6pK_cjDtnxCl_1t6CzY!oJ^+JwwLvXD|(h8P!S+vx=w%H6Un$i{wf z`=a~2ks{qLY=u-K+J`zMZ-jQZzeec=@_wOG%ro%|uO(KV4aA;gsBhVquHSO;v=q&H z6A;JYNzPkPCDC-1cf9=MuZ-)e1r=|PDh)p=Ub0TfFOfl9-p+e$S~4?v$?9Hd>>i@_ z#LTffCr^dq-z+hWnIropVR9Z_x`q6e*VrnC^M;ME*k&B>l_5E{M z;bxC|a&!`%x9V7brMZ2hnm^68u)!_Y*H>5LKvpkm9$PbW3KxNrO(A{7F$W?NM~m9E$u1rUsJN@TewmbXLVsavi4>-CFJm&XbJwxjKs5w{ zRKGd$UXkt`t;yRq3U0ox7GJfYwbp>eQtybDnwZ#P^GF5~Y+6{EKFBa$`OJ9GB69Zj zt$T{X?mVkD7l-NFg?lWW@9N#Y^6a|Djp`h&^>8DEyQsu)_GD>}&T{Utrkk>2)!tK> z9Z&V#`Q&4u{QmQ_%i{H`s!U7UG0|qW*tvvz7N1=1DD>TZ!JK9g^P;Vl3slsuipBmm zJ->IFW=UwMu9ns53ylVs_galNJKCK+jg4KVc?w#L?>Ks$R%2RPME^ccx+Ba!)XUt| zcQ+asszm*erCzd9%mbyvUvNaR4f&J&D2Esd`%Ty03a>5gA)@4l_T=;Y1BRmH3y$In z)G#}zul`9xD~f%v*{-_xR(O5M7>oSPlJ_e4)X~b2mZ#_Ygp|HKX^G@W^Dk;|>_FCJ zNIqFl^G9zxI7cTlZrhUf(cV#LyL-SQ@e1)Jzcy`5!TIimzLZmEyS4nf4dTo+Z2QWC zqaF$sS10|lUoiikI%^rE=hjl5cfK^Er!a-3EQ`&=lk#bxUtwnTc4GCu?)U+=<9a1Y zB-LEz{g};@wTUF}4=15+wu>xSkLyg6y z>X4_|SIE-9)`3ScLb>7B%Yjon^(rgOh7b`U#O41n!rbb<6 zbjr>?isL9{ii~I-%Z>5h@vxw3~o>&pa2ig~gv90XRe#w+X97>VXg8}}#e+v@}`t>x!XHM9F=4c`}* zd$GWuG`QZ|6vw~4Mv~hJu5QQvxH!w!s+4Zl%Nh;W?-d!;>}L@N8H8s}vPO0VBre8+i( zb3Ju&xZvBZo%>Vz;@w|fT+UdYxFFzIuPMp;A_V=LJtI+vU+qHH1v}}X?W(PaQTvgX zNqG;n9BSjg7d*HfRGZ4F(`%?0GVhePz(O5FNH|!ShfiH_nGNVSNO%jBEto620@{Md zAQ1>D{1zw^$mt7kf{z=~&*5!b=O%OwVNaE@4ZR2lP~V0AN{D2;ADu;rBsFPZu@c%8 zW+ef6+8`spKBCERO+)BG!p?BgFnXOpVc(;z30v+HAJM-Ed(h)w(QX8(#x~lG5Nzpp z^bZ2B=m0%Q4#yIU!L+f!)EQ2UI|d#ATEs2G2RaNm2JPb#_i%B604Fxl+|Zv5+P)p+ zj9?9&;5W>Ee`dN!y+loOD%m-sNT$|Ei^9)Lkgx12%JpY^`dnY^)^knG1fggYH^!|! z9_S$BjVv1ncCXg-EyeUYH8zmlXBa=WyMS66h>_o1a%X2Z;5x;?Kd77g~+zS!>Pxm%kOr`sEK0+xC%gcSJ{Ci48M-=|Y5mziSP<4v_*O-z)EOXOIo1cqmI%JDm%IlQf*dlP-p;6tt-ke{h z=Rjq{EPd-4mu99&gW3zWi0V7h8`CS%`a7g|4sDz+cSfXiX!)5rM0-T0>g_$c>y{9= znIch`QHmPlq{i|tHq-E)rP;ss&7kPum{z3Woc~WvxA1(avoE{UQ%9&a!~+cD^d7%L z{=Hn)@nd9(M{pt-TEd)0N?=xy@Tt&-Bt{rMykVEZl)$IaxK1Su4nBkgW7II~urNR! zBS1Lz$^^nGpefIB@HJ7-hmqu1FAul|Y>d#k{0|6-cjRoZ*WDIIm>PV^TQQ zIXEAkzvooC~j0b_L{EBHJ9QyemV7%d_9Gw1*5rPeq|G{h$ zeEk9dZutC-iv&<2SaYBRS}0*2Hw!QY-*>#C>@HI?IDNXa&F*CV~_I zOIW>60nmZ97!-lCFyX2Q=)**nBA^EoKNSH3m^hHC@sJl=FDjU zwlJZh4Oqc;Ky9Mdt~Qi0ytVSd;*K8V3vcI(922^Y{$W&Yv?xu(>`FT%k`iNNGSMybOq==r5hwG678BP;Z$K z$G&6&8N@f6zA2ypi{ecIU6>d&C1y;>j5x0AW>6>K!98YB*Wn4Kb5KX&iSy^6M#2*> z&OxEVB6Fzg@PxZLUcv|)uig58!Fp|>p&+++*I zgBMZR5o30-BXXYELCudB9sVOaXHT^A#Ga`B+aBt9JjTcYsym)2aUi^lOXFcIhkT!D!VC#X7jk)bo-0u#@ip>pFnOfG;sOk8y#=4b97Lj623 z^Eu~GQ;8UV_v|Qd7XG>wH3A{=S7ZeZ|5IXy{lOz~Jc*5d0^v_W*RzEF z!Y8)i@$zsDef%J=S3B?wMljcpSdo9UKp_UaG-d6oY5AJNkQfCV=7=03$I7{MO{PC2(2L`|6eExK0JyM^a=tv;lbSwf+Eruz;hYE#vnk@30gJl&_mqQ)lJ4rJSf=3)mz-e014fU#b2g9g22y~il;Y^`$5dkq^588_%;s!VL6(@I zIe7dpi*MvGV2T=s7o52aP{P>q%M;meAsh{K2~qhkY^^*7j8Vs^{0D32V!H?>svk;} z%3s)7MHtHi_G@A|Un}1d^Gl6J_dp7=eFfLwMN(O<2Z_ z|LRZ2jUN|P&~9G}|1?T?fLE^&zn%`@)%?Bj3}KKl z9N>W;S&HEh_l`fFdmOwH4z2t6`0wJm`Vruha6kc$>~)+$q!VO57HUV~zalHY2|7do zOki>{^g5*I36KMD7lP^$kO_-qyigRjnFuk^o6j&{;|t6Qa4-T&75$t26S07dIX!O|I5@R=q+4`-w@KDw?1 zvQh#qLeO&jzn{VwS6Tp+V1XXPP5)TwgRG!5nZV_%gm+4iG6u?W02=_R@&YG8i8DlR U&JY`w!wp8o0DL4XV)*g=AGfCiU;qFB diff --git a/src/net/java/sip/communicator/impl/neomedia/RTPConnectorTCPInputStream.java b/src/net/java/sip/communicator/impl/neomedia/RTPConnectorTCPInputStream.java index 31556a2b6..7b4750f3f 100644 --- a/src/net/java/sip/communicator/impl/neomedia/RTPConnectorTCPInputStream.java +++ b/src/net/java/sip/communicator/impl/neomedia/RTPConnectorTCPInputStream.java @@ -11,6 +11,7 @@ import net.java.sip.communicator.service.packetlogging.*; import net.java.sip.communicator.util.*; +import org.ice4j.socket.*; /** * RTPConnectorInputStream implementation for TCP protocol. @@ -86,6 +87,11 @@ protected void doLogPacket(DatagramPacket p) if(socket.getLocalAddress() == null) return; + // Do not log the packet if this one has been processed (and already + // logged) by the ice4j stack. + if(socket instanceof MultiplexingSocket) + return; + PacketLoggingService packetLogging = NeomediaActivator.getPacketLogging(); diff --git a/src/net/java/sip/communicator/impl/neomedia/RTPConnectorTCPOutputStream.java b/src/net/java/sip/communicator/impl/neomedia/RTPConnectorTCPOutputStream.java index 590da6ff4..c4e2819dc 100644 --- a/src/net/java/sip/communicator/impl/neomedia/RTPConnectorTCPOutputStream.java +++ b/src/net/java/sip/communicator/impl/neomedia/RTPConnectorTCPOutputStream.java @@ -10,6 +10,7 @@ import java.net.*; import net.java.sip.communicator.service.packetlogging.*; +import org.ice4j.socket.*; /** * RTPConnectorOutputStream implementation for TCP protocol. @@ -62,6 +63,11 @@ protected void sendToTarget(RawPacket packet, InetSocketAddress target) */ protected void doLogPacket(RawPacket packet, InetSocketAddress target) { + // Do not log the packet if this one has been processed (and already + // logged) by the ice4j stack. + if(socket instanceof MultiplexingSocket) + return; + PacketLoggingService packetLogging = NeomediaActivator.getPacketLogging(); diff --git a/src/net/java/sip/communicator/impl/neomedia/RTPConnectorUDPInputStream.java b/src/net/java/sip/communicator/impl/neomedia/RTPConnectorUDPInputStream.java index 3ca3888f2..4cef9e3b0 100644 --- a/src/net/java/sip/communicator/impl/neomedia/RTPConnectorUDPInputStream.java +++ b/src/net/java/sip/communicator/impl/neomedia/RTPConnectorUDPInputStream.java @@ -10,6 +10,7 @@ import java.net.*; import net.java.sip.communicator.service.packetlogging.*; +import org.ice4j.socket.*; /** * RTPConnectorInputStream implementation for UDP protocol. @@ -70,6 +71,11 @@ protected void doLogPacket(DatagramPacket p) if(socket.getLocalAddress() == null) return; + // Do not log the packet if this one has been processed (and already + // logged) by the ice4j stack. + if(socket instanceof MultiplexingDatagramSocket) + return; + PacketLoggingService packetLogging = NeomediaActivator.getPacketLogging(); diff --git a/src/net/java/sip/communicator/impl/neomedia/RTPConnectorUDPOutputStream.java b/src/net/java/sip/communicator/impl/neomedia/RTPConnectorUDPOutputStream.java index 6192f3f96..de2b00e2e 100644 --- a/src/net/java/sip/communicator/impl/neomedia/RTPConnectorUDPOutputStream.java +++ b/src/net/java/sip/communicator/impl/neomedia/RTPConnectorUDPOutputStream.java @@ -10,6 +10,7 @@ import java.net.*; import net.java.sip.communicator.service.packetlogging.*; +import org.ice4j.socket.*; /** * RTPConnectorOutputStream implementation for UDP protocol. @@ -65,6 +66,11 @@ protected void sendToTarget(RawPacket packet, InetSocketAddress target) */ protected void doLogPacket(RawPacket packet, InetSocketAddress target) { + // Do not log the packet if this one has been processed (and already + // logged) by the ice4j stack. + if(socket instanceof MultiplexingDatagramSocket) + return; + PacketLoggingService packetLogging = NeomediaActivator.getPacketLogging(); diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/JingleNodesCandidateDatagramSocket.java b/src/net/java/sip/communicator/impl/protocol/jabber/JingleNodesCandidateDatagramSocket.java index 54b6ba699..4d88ecaa3 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/JingleNodesCandidateDatagramSocket.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/JingleNodesCandidateDatagramSocket.java @@ -11,6 +11,7 @@ import org.ice4j.*; import org.ice4j.stack.*; +import org.ice4j.socket.*; /** * Represents an application-purposed (as opposed to an ICE-specific) @@ -31,6 +32,31 @@ public class JingleNodesCandidateDatagramSocket extends DatagramSocket */ private JingleNodesCandidate jingleNodesCandidate; + /** + * The number of RTP packets received for this socket. + */ + private long nbReceivedRtpPackets = 0; + + /** + * The number of RTP packets sent for this socket. + */ + private long nbSentRtpPackets = 0; + + /** + * The number of RTP packets lost (not received) for this socket. + */ + private long nbLostRtpPackets = 0; + + /** + * The last RTP sequence number received for this socket. + */ + private long lastRtpSequenceNumber = -1; + + /** + * The last time an information about packet lost has been logged. + */ + private long lastLostPacketLogTime = 0; + /** * Initializes a new JingleNodesdCandidateDatagramSocket instance * which is to be the socket of a specific @@ -82,19 +108,15 @@ public void send(DatagramPacket p) //XXX reuse an existing DatagramPacket ? super.send(packet); - // no exception packet is successfully sent, log it - if(StunStack.isPacketLoggerEnabled()) - { - StunStack.getPacketLogger().logPacket( - super.getLocalAddress().getAddress(), - super.getLocalPort(), - packet.getAddress().getAddress(), - packet.getPort(), - packet.getData(), - true); - } + // no exception packet is successfully sent, log it. + ++nbSentRtpPackets; + DelegatingDatagramSocket.logPacketToPcap( + packet, + this.nbSentRtpPackets, + true, + super.getLocalAddress(), + super.getLocalPort()); } - /** * Receives a DatagramPacket from this socket. The DatagramSocket @@ -110,17 +132,16 @@ public void receive(DatagramPacket p) { super.receive(p); - // no exception packet is successfully received, log it - if(StunStack.isPacketLoggerEnabled()) - { - StunStack.getPacketLogger().logPacket( - p.getAddress().getAddress(), - p.getPort(), - super.getLocalAddress().getAddress(), - super.getLocalPort(), - p.getData(), - false); - } + // no exception packet is successfully received, log it. + ++nbReceivedRtpPackets; + DelegatingDatagramSocket.logPacketToPcap( + p, + this.nbReceivedRtpPackets, + false, + super.getLocalAddress(), + super.getLocalPort()); + // Log RTP losses if > 5%. + updateRtpLosses(p); } /** @@ -178,4 +199,30 @@ public InetSocketAddress getLocalSocketAddress() { return jingleNodesCandidate.getTransportAddress(); } + + /** + * Updates and Logs information about RTP losses if there is more then 5% of + * RTP packet lost (at most every 5 seconds). + * + * @param p The last packet received. + */ + public void updateRtpLosses(DatagramPacket p) + { + // If this is not a STUN/TURN packet, then this is a RTP packet. + if(!StunDatagramPacketFilter.isStunPacket(p)) + { + long newSeq = DelegatingDatagramSocket.getRtpSequenceNumber(p); + if(this.lastRtpSequenceNumber != -1) + { + nbLostRtpPackets += DelegatingDatagramSocket + .getNbLost(this.lastRtpSequenceNumber, newSeq); + } + this.lastRtpSequenceNumber = newSeq; + + this.lastLostPacketLogTime = DelegatingDatagramSocket.logRtpLosses( + this.nbLostRtpPackets, + this.nbReceivedRtpPackets, + this.lastLostPacketLogTime); + } + } }