--- a/libupnpp/control/linnsongcast.cxx
+++ b/libupnpp/control/linnsongcast.cxx
@@ -130,8 +130,8 @@
st.reason = nm + ": device has no OHProduct service";
return;
}
- int index;
- if (prod->sourceIndex(&index)) {
+ int currentindex;
+ if (prod->sourceIndex(¤tindex)) {
st.reason = nm + " : sourceIndex failed";
return;
}
@@ -143,7 +143,7 @@
}
unsigned int rcvi = 0;
for (; rcvi < sources.size(); rcvi++) {
- if (!sources[rcvi].name.compare("Receiver"))
+ if (!sources[rcvi].type.compare("Receiver"))
break;
}
if (rcvi == sources.size()) {
@@ -153,8 +153,8 @@
}
st.receiverSourceIndex = int(rcvi);
- if (index < 0 || index >= int(sources.size())) {
- st.reason = nm + ": bad index " + SoapHelp::i2s(index) +
+ if (currentindex < 0 || currentindex >= int(sources.size())) {
+ st.reason = nm + ": bad index " + SoapHelp::i2s(currentindex) +
" not inside sources of size " + SoapHelp::i2s(sources.size());
return;
}
@@ -163,8 +163,9 @@
// handle for it.
OHRCH rcv = rdr->ohrc();
- string sname = sources[index].name;
- if (sname.compare("Receiver")) {
+ if (sources[currentindex].type.compare("Receiver") &&
+ // Special case for upmpdcli in unix Sender + Receiver mode, yes ugly...
+ sources[currentindex].name.compare("SenderReceiver")) {
st.state = ReceiverState::SCRS_NOTRECEIVER;
st.reason = nm + " not in receiver mode ";
goto out;