Skip to content

Fix transport socket implementation for HTTP/SSE #100

@gophergogo

Description

@gophergogo

transport socket is not working for HTTP/SSE

TransportIoResult ConnectionImpl::doReadFromSocket() {
  // Read from transport socket or directly from socket

  // Use transport socket for reading if available
  // TODO: Fix transport socket implementation for HTTP/SSE
  // For now, check if this is a real transport socket (not RawTransportSocket)
  if (transport_socket_ &&
      dynamic_cast<RawTransportSocket*>(transport_socket_.get()) == nullptr) {
    auto result = transport_socket_->doRead(read_buffer_);
    return result;
  }
void ConnectionImpl::doWrite() {
  /**
   * CORE WRITE FUNCTION - Writes data from write_buffer_ to socket
   *
   * Flow:
   * 1. Check transport socket for any pending data (e.g., TLS handshake)
   * 2. Write from write_buffer_ to socket
   * 3. Continue writing until buffer empty or socket buffer full (EAGAIN)
   *
   * Called from:
   * - onWriteReady() when socket becomes writable
   * - write() when new data is added and socket is ready
   *
   * Thread safety: All operations in dispatcher thread
   */
  if (state_ != ConnectionState::Open) {
    return;
  }

  // Use transport socket for initial processing if available
  // This is essential for stdio transport which manages pipe bridging
  // TODO: Fix transport socket implementation for HTTP/SSE
  if (transport_socket_ &&
      dynamic_cast<RawTransportSocket*>(transport_socket_.get()) == nullptr) {
    // Let transport process any pending operations
    // For stdio, this ensures the bridge threads are active

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions