Skip to content

Remove Source Exchange v1 branches — deprecated protocol superseded by v2

Summary

Source Exchange v2 superseded v1 years ago. The old SX1 advertise, request, response, and version-tracking branches have now been removed from the live network path. main is SX2-only for source exchange, while local eD2K-link source import is preserved via a dedicated non-network helper.

Key Locations

File Pattern
srchybrid/BaseClient.cpp remove m_bySourceExchange1Ver tracking and stop advertising SX1 in hello/mule-info
srchybrid/DownloadClient.cpp gate requests on SX2 only and always send OP_REQUESTSOURCES2
srchybrid/ListenSocket.cpp accept only OP_REQUESTSOURCES2 / OP_ANSWERSOURCES2 on the live network path
srchybrid/KnownFile.cpp generate SX2-only source-response packets for shared files
srchybrid/PartFile.cpp generate and parse SX2-only source-response packets for part files
srchybrid/DownloadQueue.cpp keep eD2K-link source import via a dedicated legacy-format helper
srchybrid/SourceExchangeSeams.h seam helpers for SX2 eligibility and response-packet planning
srchybrid/UpdownClient.h remove the obsolete SX1 version member/getter

Landed Behavior

  • Hello / mule-info parsing no longer stores or reports SX1 version state.
  • Source request eligibility depends on extended protocol plus SX2 support only.
  • The live network path only sends/parses OP_REQUESTSOURCES2 and OP_ANSWERSOURCES2.
  • eD2K-link source import still accepts the old serialized source list via a dedicated helper.

Acceptance Criteria

  • [x] No m_bySourceExchange1Ver member or getter remains in client state.
  • [x] Live source exchange uses only SX2 opcodes and version handling.
  • [x] IsSourceRequestAllowed() gates on SX2 support only.
  • [x] Local eD2K-link source import still works without reintroducing SX1 on the network path.
  • [x] Targeted source-exchange seam/flow coverage exists in emulebb-build-tests.

Files

  • srchybrid/BaseClient.cpp
  • srchybrid/DownloadClient.cpp
  • srchybrid/DownloadQueue.cpp
  • srchybrid/KnownFile.cpp
  • srchybrid/ListenSocket.cpp
  • srchybrid/PartFile.cpp
  • srchybrid/PartFile.h
  • srchybrid/SourceExchangeSeams.h
  • srchybrid/UpdownClient.h