Skip to content

Commit c4b0d68

Browse files
hypernoobmattqs
authored andcommitted
Fix ArgumentException thrown by Args2JArray when AckImpl is the last parameter in Emit(sring, params object[]) (#118)
1 parent 1655bb5 commit c4b0d68

1 file changed

Lines changed: 8 additions & 5 deletions

File tree

  • Src/SocketIoClientDotNet.net45/Client

Src/SocketIoClientDotNet.net45/Client/Socket.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,18 +107,21 @@ public override Emitter Emit(string eventString, params object[] args)
107107
var _args = new List<object> { eventString };
108108
_args.AddRange(args);
109109

110+
var ack = _args[_args.Count - 1] as IAck;
111+
if (ack != null)
112+
{
113+
_args.RemoveAt(_args.Count - 1);
114+
}
115+
110116
var jsonArgs = Parser.Packet.Args2JArray(_args);
111117

112118
var parserType = HasBinaryData.HasBinary(jsonArgs) ? Parser.Parser.BINARY_EVENT : Parser.Parser.EVENT;
113119
var packet = new Packet(parserType, jsonArgs);
114120

115-
var lastArg = _args[_args.Count - 1];
116-
if (lastArg is IAck)
121+
if (ack != null)
117122
{
118123
log.Info(string.Format("emitting packet with ack id {0}", Ids));
119-
Acks = Acks.Add(Ids, (IAck)lastArg);
120-
jsonArgs = Parser.Packet.Remove(jsonArgs, jsonArgs.Count - 1);
121-
packet.Data = jsonArgs;
124+
Acks = Acks.Add(Ids, ack);
122125
packet.Id = Ids++;
123126
}
124127

0 commit comments

Comments
 (0)