Re: connection, login, socket, sessions and more!
"James K. Lowden" <[email protected]>
| Newsgroups | gmane.comp.db.tds.freetds |
|---|---|
| Message-ID | <[email protected]> |
On Fri, 20 May 2011 11:44:53 +0200 Frediano Ziglio <[email protected]> wrote: > 1) > - move additional fields from TDS_CONNECTION to TDS_LOGIN and use > TDS_LOGIN for all > - add a new TDS_CONNECTION structure > > 2) > - rename TDS_SOCKET to TDS_SESSION > - add a new TDS_SOCKET structure > > 3) > - move additional fields from TDS_CONNECTION to TDS_LOGIN and use > TDS_LOGIN for all > - rename TDS_SOCKET to TDS_SESSION > - add a new TDS_SOCKET structure Thanks for taking the time to think this through and discuss it. Some of this stuff is very old and has evolved away from the original ideas. The minimal change would be a new TDS_MARS struct: typedef struct tds_mars { /* MARS fields */ } TDS_MARS; struct tds_socket { /* unchanged, except */ TDS_MARS** mars; }; Isn't that enough? Following Microsoft's terminology, we might call it TDS_SMUX or TDS_MCSMP instead. What "additional fields" do we need for TDS_MARS? >From a quick scan of [MC-SMP].pdf (http://download.microsoft.com/download/B/0/B/B0B199DB-41E6-400F-90CD-C350D0C14A53/%5BMC-SMP%5D.pdf) it looks like a TCP tunnel: SID, state, window size, last received, last acknowledged, etc. > Also TDS_SOCKET reminds too much a physical connection. MARS doesn't change the number of "physical" connections. There's still exactly *one* TCP socket, with N MARS "SID" session IDs, where N >= 1 for a connected socket. > > - move additional fields from TDS_CONNECTION to TDS_LOGIN > > and use TDS_LOGIN for all > > - add a new TDS_CONNECTION structure I would like to *remove* TDSCONNECTION, and use only TDSLOGIN. I suggest: 1. Add TDS_MARS (or other name) per above. 2. Remove TDSCONNECTION; move fields to TDSLOGIN. 3. (option) rename TDSSOCKET to TDSCONNECTION. "Session" is not a technical networking term. In English, we "open a connection"; in Unix the result of connect(2) or accept(2) is a connection. I would reserve "session" for server-side settings, "session properties", things like ANSI_DEFAULTS. Regards, --jkl