&& takes precedence over ||

There was
```if (m_options.ReceiveBuffer > 0 && m_pgmSocketType == PgmSocketType.Receiver || m_pgmSocketType == PgmSocketType.Listener)```

which is equal to

```if ((m_options.ReceiveBuffer > 0 && m_pgmSocketType == PgmSocketType.Receiver) || m_pgmSocketType == PgmSocketType.Listener)```

but I think you want

```if (m_options.ReceiveBuffer > 0 && (m_pgmSocketType == PgmSocketType.Receiver || m_pgmSocketType == PgmSocketType.Listener))```