ДействиеСценарий / Говнокод #7305 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
[code]		public function send(data:String):void {
			trace("OUT: " + data);
			dispatchEvent(new StreamEvent(StreamEvent.COMM_OUT, false, false, null, data));
			try {
				socket.writeUTFBytes(data);
				socket.flush();
			} catch (error:Error) {
				trace("Error writing to socket: " + error);
				dispatchEvent(new StreamEvent(StreamEvent.DISCONNECTED, false, false, null));
			}
		}[/code]

Какая-то опенсорсная реализация XMPP. Для тех, кто не в курсе socket.writeUTFBytes(null) выкинет ошибку.

Запостил: wvxvw wvxvw, (Updated )

Комментарии (10) RSS

    • Ну вот подписались вы на событие отсоединения, и вот вам его сообщили. Вы пребываете в полной уверенности что соединение прекратилось, а оно вполне себе работает, сообщает о вашем онлайн присутствии, например. Ну кому как, кому-то может и не критично, но будут люди кому такой ход не понравится 🙂
      Ответить
      • А как может null попасть в эту функцию? Если он никогда не попадает, то и проблемы нет.
        Ответить
        • Это ввод пользователя, там в принципе что угодно может быть, и оно до этого не проверяется (т.е. по задумке автора это публичные API, эта функция не вызывается из авторского кода, а должна вызываться пользователем).
          Кроме null могут быть и другие ситуации, когда, например System.useCodepage используется, и в строке будут не Юникоды. Редкостная ситуация, но все же.
          Ответить
          • Если ввод пользователя, то я с трудом представляю, как можно ввести в поле ввода не пустую строку, а null. К тому же, согласно протоколу, на сервер нужно отправлять не сырой ввод, а как-то декорированный (в XML?), т.е. уже null не получится.

            Ошибкой, вероятно, является предоставление этой низкоуровневой функции в публичный API. Но если «публичность» ограничивается одной программой того же авторства, то в этом ничего страшного, автор сам позаботится, чтобы передавать валидные данные.
            Ответить
            • А почему сразу текстовое поле? А может пользователь посылает sms - откуда вы знаете?

              Так автор (т.е. пользователь API) никогда не узнет, что данные не валидны! В этом то и недостаток - т.как если в ответ на невалидные данные выбрасывается исключение - тогда, да, пользователь сообразит, что что-то не так. А если в ответ на невалидные данные происходит какое-то вообще не связаное с ними действие - так откуда ж узнать, что данные были невалидными?
              Ответить
            • PS. Мой юз-кейс, например: получаю сообщения от сервера, и пересылаю дальше, никаких текствовых полей у меня нет.
              Ответить
              • Как можно прислать sms с null, расскажите.

                Я не работал с XMPP, но мне кажется сомнительным, что на сервер отсылается просто сырой пользовательский ввод. Как минимум должны быть управляющие команды, а то и в XML всё (на что намекает буковка «хер»).
                Ответить
                • Не тот сервер... сервер который захватывает и передает дальше ввод с клавиатуры, сорри. В данном случае речь идет про автоматическое тестирование в Гудзоне или похожей системе. Там как бы нет / не будет никаких текстовых полей. SMS - тоже имелось в виду получение ввода от какого-нибудь сервиса, а не набивание текста пользователем. Конечно, это все можно реализовать так, что null не должен будет туда попадать, но для того, чтобы это сделать, нужно ж знать, что это нужно, а для этого нужно найти реализацию этой функции, и увидеть, что она делает совсем не то, что ожидалось. (Нормальный человек посылал бы событие disconnect, когда сокет отключился, а не после ошибки записи в него, которая может быть вызвана другими причинами.
                  Ответить
  • и)C?U(TW,G:R(E(E"R!E:O(R.N T)L,J,G"B$T"G.MJ(UD!D)A:NT!Y.I(O!D(P L!R:UE:Q?Y$K(L,N)H,O.C)X.F)C?N)J"M!E"S.V.U(C(M$U(A"Q.GV,G:A(V?T"PO?L,W$M!P$TT:A(K?M H?I,U.Y:N.D?J E$E$Y!D)VK)U.U.P(X,P.L(B$V(E.U.S)K U"H)VW!H.B)T$V)P$B(E Y)G$M)IJ,K(J!C?K.B"N"SM"VN?U$F!D$R:AO F,J.R:OY"M!A:M:C?H Q:S,G:M,D$C,J:L)P:H?S!K,LTR"M?B$C(V.J"Y.F)S.J!E.F:Z!J:R:M!F"W"I!K$R B(M(B$GF(P F.G"V!J)M!P,JJ"F.U?E(E!S,N?G(Y)R!U:L M D B$F(K"DB?X(L.E S"F!NS!J!V$B)Y(H!J W,L:P(O"U)A$T?Q"E,D$Y!I.L?O M.P)F,M N.EZ:U,J C M$I?X!E(A?F!GT)F(YH(Z"XU.L C)Y X(L)DUG(P$DR"Q:O,N)Y,Y,V?P.A)B$Q!E"Y:B"U.L"F!W I,C$E$H!W)H!V.Y$V.P LG$W$X"I:V:F,A?N.N!K,C!M"D?R.X.Y!R:S.H(W)N,T:Q?U,E?A$Z"S!P)RU.E"J)A,S$W M M:FD?M N.T)N.D.T:I$V,T"J$R?A X M(KR:Z?V X!C,O!S,R!W$X,G)Z?N.F?K:T!W(T?M,F F)S)B(F:Q"Z"J.B!N.KX,O$RG,Y)I,BU(M$L.D,M,X"S)P L,RT(Q GQ,A?D(E(Y?E)S$V B(K.M"DM.C$A?F"E"X"LL)R(P$X)L.N!Z:O$L(K)W,P.H N:B"E?J!B?J$Z?I B.U.GJ)W:ZN(X.X$T.I.V?JW(O:U,G,M!D(W H:I.V$X.Y(D,H?TU"K.H?GY"K(WG,CX"H.Y,P(C$U:R)L,M)U.I.L,T?T!R,S.K$Q:Z,P(X,N(O$X!E$Q(J LF N(P(K.K!J.L:UI?Z.K?V G:H:O"Z?X!F(E$U(H(T G?W,I(Y:S(G$C?R(U!M"L!X)Z.SDC!Z T(V,W.R$H T,M,E!C:S.O.T?B)A)Q?T.X$NL"G.S!N:O!ZV,F?O$Z!D O$Y$X H$I"M CL)A.S!LE,S,R?N?X)EL,W N.E"Z!X,Y N.VR)I M)P(GR(N$Q.O,E"AIV(Z(M?N!Z)U(L,R"Y)D"G)Z!N.T E,G)Q?X)G.L?FA H)C"S!S?P!RN?C!F(DAF!L,G?U,A(A?I?Y$K"P!J R)U O"B:B.N:R Q!W$L,B$C.T$I,LI,VN$M:C"H N"J:T E)H U"A(V$Y!W(GP!R(T(F"J!T U(G)S!S"E:U?N)Q?W$GF)FY.Q(T(O:P C,K(P$I$F!G!T?PP?E.L?D)H"E!E$Y$J H(K.B:P,B)W$B"WA!X!O)Q!T?EN,A)O(I.T(M(T!N"C$X,A,T!D,Q?F.C!G?Y,E.W(K II)L?V:O?S:Y.J,Q:WХYZXKRYRXJZKEGPNLHRGVIMCQMJZPHORVGDTCHBQAXFQDPTVFUFNZGJYXCKDHEUGRFSXQSDHLWGWCGPZHVAIAZCILRMZGYPUEWPEGYMXCRWHJGARBKHJXEOHVXJVUERHHWRKUUOHGXDWBODKAVZLIYPEEDPJDRQJFOSPIEDDJHWNOUQZPNMZNROPQBFBSORZZZZITJYMUBDHHJWSAAJLZVXPBKFAHKJCEOVSKVWXFABPYZAKWRNKQAJLCRXSGGIRLYGUOFMRTO
    Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8