Skip to content

Commit

Permalink
v.1.3.7.6, 2014-03-20, 00:47:41
Browse files Browse the repository at this point in the history
= Memory sniffing zerolength strings caused badly formatted tags
~ More debug logging
  • Loading branch information
9001 committed Oct 12, 2015
1 parent 19276fc commit 69b0856
Show file tree
Hide file tree
Showing 5 changed files with 126 additions and 108 deletions.
95 changes: 51 additions & 44 deletions Loopstream/LSSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,7 @@

namespace Loopstream
{
public class LSSettingsI
{
public string sjdflakjdsa;
public LSSettingsI() { }
}

public class LSSettings : LSSettingsI
public class LSSettings
{
[XmlIgnore]
public static LSSettings singleton;
Expand Down Expand Up @@ -374,7 +368,7 @@ public enum LSRelay { ice, shout, siren }
public bool warn_poor, warn_drop;
public double lim_poor, lim_drop;

public LSSettings() : base()
public LSSettings()
{
s_devRec = s_devMic = s_devOut = "";
micLeft = true;
Expand Down Expand Up @@ -454,30 +448,29 @@ in mde.EnumerateAudioEndPoints(
try
{
LSDevice add = new LSDevice();
Logger.app.a("Creating LSDevice");
add.mm = device;
add.isRec = device.DataFlow == NAudio.CoreAudioApi.DataFlow.Capture;
add.isPlay = device.DataFlow == NAudio.CoreAudioApi.DataFlow.Render;
if (device.DataFlow == NAudio.CoreAudioApi.DataFlow.All)
{
add.isRec = add.isPlay = true;
}
Logger.app.a("Dataflows OK");
Logger.app.a("Df " + add.isPlay + " " + add.isRec);

add.id = device.ID;
Logger.app.a("ID: " + add.id);
Logger.app.a("ID " + add.id);

add.name = device.ToString();
Logger.app.a("Name: " + add.name);
Logger.app.a("Na " + add.name);

ldev.Add(add);
}
catch { Logger.app.a("Failed"); }
catch { Logger.app.a("Failed !"); }
}
}
catch { Logger.app.a("Failed"); }
catch { Logger.app.a("Failed !!"); }
}
catch { Logger.app.a("Failed"); }
catch { Logger.app.a("Failed !!!"); }

devs = ldev.ToArray();
if (string.IsNullOrEmpty(s_devRec)) s_devRec = "";
Expand All @@ -500,7 +493,7 @@ public void resetMetas()
metas.AddRange(new LSMeta[] {
new LSMeta(
LSMeta.Reader.WindowCaption,
"Foobar 2000",
"Foobar 2000 (window title)",
"foobar2000",
500,
@" *(.*[^ ]) *( - foobar2000$|\[foobar2000 v([0-9\.]*)\]$)",
Expand All @@ -510,6 +503,18 @@ public void resetMetas()
1,
"H4sIAAAAAAAEAHWRMU8DMQyF9/sVbzmJSlBVjGyoLVKHAoIyVR3Mna+JmksqJ9fj/j1OQAgGtsj2e++zszM24iwcOWG0zkGYWkxhEDyE8E5yu1gstOPbMCLZ5PgaGI1tDIY4kHMTogljRDOIsE+4l2RjAvkWuzw+r6pNlw1Bwqqx/gjS6ZhCj2S4z4ZBYL+GGkP+yN8Ev2PRBekpJdWrwCb0NMEHpQ5y0pCd0R1KhpriZb182m7Xj6v16o9LzDZ4TYpH0r5tcIXOivLOUJCXwQ29j6URuQlams2rZ8ek5j2dGHHQiEwq3IcLgy8sUzJ5LetLdlfuBhV39qj27Fol1o7X2nkqOWeKSbUf1CQ33VXVvqZytxo3OOzrwlof/qnnd/fzOZ+am6aNwgEAAA=="
),
new LSMeta(
LSMeta.Reader.ProcessMemory,
"Foobar 2000 (foo_audioscrobbler)",
"foobar2000",
1000,
@"foo_audioscrobbler.dll+2b508*0, foo_audioscrobbler.dll+2b51c*0",
"{1}",
"utf-8",
false,
1,
"H4sIAAAAAAAEAHWST2sbMRDF7/oU71owwnUCBUMLPtRQSOLQ7q2Uol3N2qLaGUeazcb99NXKDtiH3vTn6c383qg5hIxjokyKKcSIRM5D3T6jTzJADwT0Ir/d6IPkLknbRkrWF2knw1GYWBE4B0/YirQurZbLpTU/AndULNnLBA0aCaUSi2LM5BcozmU/SfqTQa/ECD1OMmIIHIbw99oMKtDkTtZsMqLwHi5XbXHCg8tqt49XzUxBD1evF1XaOa7yWrUT7sMeWOODMe8GrutknFkynnZNyeFlDKl22o5aPZjIz70UWnWFf87mGMd9YDj2IHbtTKlrsw1lgc9fgOdEPSUqWeTzQSMSL8vNTaTns59vv/D1bHR7bYz59vi8+95snpo1sON4uqRXef83I7xSykEYH+29/bSYG7XWmst4+prSjHy3aoMiS6+TS7S44U0j40HkmLV8jqHgX9SDeLKmEOZcsyg5aanUUpxHLuiKXOnq6d3K0hvVsIo+vU/Eqf0HYDNJeIcCAAA="
),
new LSMeta(
LSMeta.Reader.ProcessMemory,
"iTunes 64bit 11.0.4.4 (BROKEN (PROBABLY))",
Expand Down Expand Up @@ -676,28 +681,38 @@ void metaEnc()
{
foreach (LSMeta meta in metas)
{
try
{
meta.desc = Z.gze(meta.desc.Replace("\r", ""));
}
catch
{
meta.desc = "(encoding failed)";
}
metaEnc(meta);
}
metaEnc(this.meta);
}
void metaEnc(LSMeta meta)
{
try
{
meta.desc = Z.gze(meta.desc.Replace("\r", ""));
}
catch
{
meta.desc = "(encoding failed)";
}
}
void metaDec()
{
foreach (LSMeta meta in metas)
{
try
{
meta.desc = Z.gzd(meta.desc).Replace("\r", "").Replace("\n", "\r\n");
}
catch
{
meta.desc = "(encoding failed)";
}
metaDec(meta);
}
metaDec(this.meta);
}
void metaDec(LSMeta meta)
{
try
{
meta.desc = Z.gzd(meta.desc).Replace("\r", "").Replace("\n", "\r\n");
}
catch
{
//meta.desc = "(encoding failed)";
}
}
public void resetPresets()
Expand Down Expand Up @@ -772,6 +787,10 @@ static int version()
}
public void save()
{
// could and should probably use GeneralInfo.ser, but:
// * Keeping this for now ince It Just Works
// * metaEnc/Dec() might complicate things

metaEnc();
var x = new XmlSerializer(this.GetType());
using (var s = new System.IO.FileStream("Loopstream.ini", System.IO.FileMode.Create))
Expand All @@ -782,18 +801,6 @@ public void save()
}
metaDec();
}
public string serialize()
{
var x = new XmlSerializer(this.GetType());
using (var stream = new System.IO.MemoryStream())
{
stream.SetLength(0);
x.Serialize(stream, this);
stream.Position = 0;
var doc = System.Xml.Linq.XDocument.Load(stream);
return doc.Root.ToString();
}
}
public static LSSettings load()
{
Logger.app.a("Loading LSSettings");
Expand Down
26 changes: 16 additions & 10 deletions Loopstream/LSTag.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ class LSTag
public LSTD tag;
public LSTD manual;
LSSettings settings;
bool socket_fallback;
bool haveFailed;
bool quitting;

Expand All @@ -24,6 +25,7 @@ public LSTag(LSSettings set)
settings = set;
quitting = false;
haveFailed = false;
socket_fallback = false;
latin1 = Encoding.GetEncoding("ISO_8859-1");
manual = new LSTD(false, "", "STILL_UNUSED");
tag = new LSTD(false, "", "STILL_UNUSED");
Expand Down Expand Up @@ -199,7 +201,7 @@ public static LSTD get(LSSettings.LSMeta m, bool getRaw)
arg = args[0];
}
ofs += Convert.ToInt32(arg, 16);
ret += a == 0 ? "" : " - ";
ret += a == 0 || ret.Length == 0 ? "" : " - ";
int len = mem.read(ofs, raw, steps);
if (len < 0)
{
Expand All @@ -210,7 +212,7 @@ public static LSTD get(LSSettings.LSMeta m, bool getRaw)
{
ret += m.enc.GetString(raw);
int i = ret.IndexOf('\0');
if (i > 0)
if (i >= 0)
{
ret = ret.Substring(0, i);
}
Expand Down Expand Up @@ -336,18 +338,22 @@ void sendTags(Est est)
try
{
Logger.tag.a("send " + est.enc.ext + " " + est.tag);
string url = string.Format(
"http://{0}:{1}/admin/metadata?mode=updinfo&mount=/{2}.{3}&charset=UTF-8&song={4}",
settings.host,
settings.port,
settings.mount,
est.enc.ext,
meta);

Logger.tag.a("url " + url);
using (System.Net.WebClient wc = new System.Net.WebClient())
{
Logger.tag.a("made webclient");
wc.Headers.Add("Authorization: Basic " + auth);
string msg = wc.DownloadString(string.Format(
"http://{0}:{1}/admin/metadata?mode=updinfo&mount=/{2}.{3}&charset=UTF-8&song={4}",
settings.host,
settings.port,
settings.mount,
est.enc.ext,
meta));
string msg = wc.DownloadString(url);

Logger.tag.a(est.enc.ext + " socket ok");
Logger.tag.a(est.enc.ext + " socket ok: " + msg);
if (!haveFailed && !msg.Contains("<return>1</return>"))
{
haveFailed = true;
Expand Down
4 changes: 2 additions & 2 deletions Loopstream/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.3.7.4")]
[assembly: AssemblyFileVersion("1.3.7.4")]
[assembly: AssemblyVersion("1.3.7.6")]
[assembly: AssemblyFileVersion("1.3.7.6")]
Loading

0 comments on commit 69b0856

Please sign in to comment.