Bug 20348 - System.IO.Ports.SerialPortStream throws TimeoutException for all failed writes
Summary: System.IO.Ports.SerialPortStream throws TimeoutException for all failed writes
Status: NEW
Alias: None
Product: Class Libraries
Classification: Mono
Component: System (show other bugs)
Version: 3.2.x
Hardware: PC Mac OS
: --- normal
Target Milestone: Untriaged
Assignee: Bugzilla
URL:
Depends on:
Blocks:
 
Reported: 2014-06-04 14:26 UTC by Dan Smith
Modified: 2015-03-30 10:04 UTC (History)
3 users (show)

See Also:
Tags:
Is this bug a regression?: ---
Last known good build:


Attachments

Description Dan Smith 2014-06-04 14:26:19 UTC
When a write to a Serial Port fails, Mono throws a TimeoutException, regardless of the cause of the reason the write failure.  

The source code identifies the error, however, it does not appear to be tracked in Bugzilla:

public override void Write (byte[] buffer, int offset, int count)
{
  CheckDisposed ();
  if (buffer == null)
    throw new ArgumentNullException ("buffer");

  if (offset < 0 || count < 0)
    throw new ArgumentOutOfRangeException ();

  if (buffer.Length - offset < count)
    throw new ArgumentException ("offset+count",
     "The size of the buffer is less than offset + count.");

  // FIXME: this reports every write error as timeout
  if (write_serial (fd, buffer, offset, count, write_timeout) < 0)
    throw new TimeoutException("The operation has timed-out");
}

Note You need to log in before you can comment on or make changes to this bug.