diff --git a/YSFGateway/FCSNetwork.cpp b/YSFGateway/FCSNetwork.cpp index a01cd6c..2412229 100644 --- a/YSFGateway/FCSNetwork.cpp +++ b/YSFGateway/FCSNetwork.cpp @@ -199,14 +199,14 @@ void CFCSNetwork::clock(unsigned int ms) LogMessage("Linked to %s", m_print.c_str()); m_state = FCS_LINKED; writeInfo(); - writeOptions(); + writeOptions(m_print); } if (length == 10 && m_state == FCS_LINKING) { LogMessage("Linked to %s", m_print.c_str()); m_state = FCS_LINKED; writeInfo(); - writeOptions(); + writeOptions(m_print); } if (length == 7 || length == 10 || length == 130) { @@ -284,7 +284,7 @@ void CFCSNetwork::writePing() m_socket.write(m_ping, 25U, m_addr, m_addrLen); } -void CFCSNetwork::writeOptions() +void CFCSNetwork::writeOptions(const std::string& reflector) { if (m_state != FCS_LINKED) return; @@ -293,7 +293,8 @@ void CFCSNetwork::writeOptions() return; ::memset(m_options + 14U, 0x20U, 36U); - ::memcpy(m_options + 14U, m_opt.c_str(), m_opt.size()); + ::memcpy(m_options + 4U, (reflector.substr(0,6)+reflector.substr(7,2)).c_str(), 8U); + ::memcpy(m_options + 12U, m_opt.c_str(), m_opt.size()); if (m_debug) CUtils::dump(1U, "FCS Network Options Sent", m_options, 50U); diff --git a/YSFGateway/FCSNetwork.h b/YSFGateway/FCSNetwork.h index 7dc0c03..103323c 100644 --- a/YSFGateway/FCSNetwork.h +++ b/YSFGateway/FCSNetwork.h @@ -75,7 +75,7 @@ private: CTimer m_resetTimer; FCS_STATE m_state; - void writeOptions(); + void writeOptions(const std::string& reflector); void writeInfo(); void writePing(); };