datacommsserver/esockserver/Documentation/release.txt
branchRCL_3
changeset 76 576874e13a2c
parent 73 5ebd530e523b
child 81 c34f57d8afa7
child 84 486e9e9c45a7
equal deleted inserted replaced
73:5ebd530e523b 76:576874e13a2c
     1 ESOCK E32 Sockets server
       
     2 
       
     3 8. Nov 2003.
       
     4 ============
       
     5 
       
     6 ¨ ESock implements the functionality required by a CPM, e.g. meeting rendezvous at 
       
     7   start-up and supporting the messages required by the framework (see R0). Also
       
     8   it doesnt shut down automatically but rather on request from the RootServer.
       
     9 ¨ ESock now supports MBufs for data transfer to protocol SAP implementations 
       
    10   over the PRT interface (CServProviderBase). The descriptor based Write() and 
       
    11   GetData() functions are deprecated.
       
    12 ¨ ESock now understands the BindFrom parameter in .ESK files. Allows a protocol 
       
    13   configuration to specify its binding below another protocol. This avoids the need 
       
    14   for it appearing in the upper protocol's configuration file, making such protocols 
       
    15   more modular. 
       
    16 ¨ New feature: Datagram Continuation, the ability to read a datagram in parts. With 
       
    17   PRT v1 when an application reads a datagram using RSocket::recv() ESock calls GetData() 
       
    18   upon the SAP for the exact amount of data requested by the client. If the datagram is 
       
    19   bigger than the requested amount the PRT will truncate it and return the  requested amount 
       
    20   of octets. It is up to the client to know whether the data was truncated. This leads to some 
       
    21   clients having to maintain absurdly large transfer buffers to cope with out-lier cases. 
       
    22   With PRTs implementing PRT1.5, ESock calls GetData() with a carefully oversized length 
       
    23   parameter, with the intent that the SAP delivers the entire datagram RMBufChain. A client 
       
    24   request to read the datagram which includes a TSockXfrLength parameter, eg  
       
    25   RSocket::Recv(TDes8& aDesc,TUint flags,TRequestStatus& aStatus,TSockXfrLength& aLen), 
       
    26   then completes with the remaining unread octets of the datagram in the TSockXfrLength. 
       
    27   The client can then read the remaining octets by further reads with the  'KSockReadContinuation' 
       
    28   flag OR'd into the flags field. Remaining octets are discarded upon the next read without the 
       
    29   KSockReadContinuation flag set.
       
    30   Notes:
       
    31     (1) This only works with PRT1.5 protocols.
       
    32     (2) Clients who do not set the KSockReadContinuation flag experience the original behaviour that overflows are discarded
       
    33     (3) Clients who need to treat datagrams as a "stream" can always set KSockReadContinuation as in the absence of remaining data a new GetData is performed.
       
    34 ¨ The MBuf Manager has been moved from ESock/MBufMgr to MBufMgr. All classes previously living 
       
    35   in the NIFMAN component, implementing extra functionality for MBufs have been moved to the 
       
    36   new MBufMgr component. Components needing this should link to the mbufmgr.dll library.
       
    37 ¨ ESock has been split into a client DLL (esock.dll) and a server DLL (esocksvr.dll).
       
    38 ¨ ESock is now using the Secure IPC framework. E.g. CServer2, RMessage2 and TIpcArgs.
       
    39 
       
    40 29. Nov 2001 (alfredh)
       
    41 ======================
       
    42 
       
    43 Defect fixes:
       
    44 
       
    45 KUN-54UMKA "CSocket::Ioctl() panics when calling second Ioctl if first one leaves"
       
    46 
       
    47 Problem fixed in ssock/ss_sock.cpp - now setting flag 'ioctl block' *after* a
       
    48 successful memory allocation. This defect was found using SmsStack reg tests.
       
    49 Verified on WINS and ARM4 (assabet board)
       
    50 Also increased the stacksize for tcesock.exe to 0x10000 so I could run on assabet.
       
    51 
       
    52 
       
    53 Version 2.1 (651)
       
    54 ==============
       
    55 Merged in the changes to the test codes the projects now output logs 
       
    56 
       
    57 	- TCESOCK  logs to \epoc32\wins\c\esoctest.txt under wins and on c:\esoctest.txt under thumb
       
    58 	- TIPC logs to \epoc32\wins\c\ipctest.txt under wins and on c:\ipctest.txt under thumb
       
    59 	- TSHUT logs to \epoc32\wins\c\tshutest.txt under wins and on c:\tshutest.txt under thumb
       
    60 
       
    61 	
       
    62 
       
    63 Version 2.0 (650)
       
    64 =================
       
    65 
       
    66 First release onto mainline share. Identical to version 555 on ER5u share.
       
    67 
       
    68 Version 1.0 (555)
       
    69 =================
       
    70 - Previous fix for (EDNPGAL-4B4GEJ in ER5u) was broken and removed in ESOCK 554. The
       
    71 correct fix has now been added to this release (ESOCK 555)
       
    72 
       
    73 Version 1.0 (554)
       
    74 =================
       
    75 
       
    76 - defect fix for EDNDHAR-4BXLU6 (Web hits a SocketServer USER 47 Panic on receiving data)
       
    77 in ER5u Defects. Involved removing the so-called defect fix that was put in ESOCK 552, for
       
    78 "Large TCPIP packets seem to be lost".
       
    79 
       
    80 Version 1.0 (553)
       
    81 =================
       
    82 
       
    83 -EPOC Connect was broken by 552 by the omission of the construction of a hard-coded 
       
    84 ESOCK.INI for the WINC build. This has been rectified.
       
    85 
       
    86 
       
    87 Version 1.0 (552)
       
    88 =================
       
    89 
       
    90 - Minor code changes to eliminate MSVC6 warnings. 
       
    91 - defect fix for "Large TCPIP packets Seem to be Lost" (EDNPGAL-4B4GEJ in ER5u).
       
    92 	This fix works for WINS but does not fix the defect on ARM. This is still under
       
    93 	investigation.
       
    94 - defect fix for "Need to remove all references to EPOC registry" - (EDNDMAY-49CE4E in ER5u
       
    95 defects). Removed sections of code which used it (all in WINC build).
       
    96 - defect fix for "Need to remove calls to deprecated functions" (EDNDMAY-49CDVT in ER5u defects).
       
    97   Removed two lines which call RThread::SetNotifyIfDie() and RThread::SetMark().
       
    98 
       
    99 
       
   100 
       
   101 Version 1.0 (550)
       
   102 =================
       
   103 
       
   104 - Split Nifman from Esock.
       
   105 - Removed all narrow-specific stuff from MNT.CMD and EBLD.BAT.
       
   106 - Removed narrow def files.
       
   107 - Did some general tidying up of header files.
       
   108 
       
   109 Version 1.0(510)
       
   110 ================
       
   111 - Fixed (another) defect in Nifman code for restarting the thread
       
   112   (ER5 Defect Database EDNKPIA-465MLC)
       
   113 
       
   114 Version 1.0(509)
       
   115 ================
       
   116 - Changed the Nifman code for restarting the thread
       
   117 
       
   118 Version 1.0(508)
       
   119 ================
       
   120 - Re systemised the ESock thread
       
   121 
       
   122 Version 1.0(507)
       
   123 ================
       
   124 - Added EBLD.BAT
       
   125 - Change in CS_CLI.CPP RSocket::GetOpt
       
   126 
       
   127 Version 1.0(506)
       
   128 ================
       
   129 - Boilerplated source files
       
   130 - Changed esock to run as non-system thread
       
   131 - edit mnt to use evalid.bat for validation
       
   132 
       
   133 Version 1.0(505)
       
   134 ================
       
   135 -defect fix
       
   136 Transfer socket failed with an socket openned in passive mode
       
   137 defect reference: SW1-322
       
   138 
       
   139 Version 1.0(504)
       
   140 ================
       
   141 - Fixed a defect which meant that debug protocols would not run
       
   142 with a release ESOCK.
       
   143 
       
   144 Version 1.0(503)
       
   145 ================
       
   146 - debug/Rel stuff
       
   147 - Unicode UID, added a ROM directory
       
   148 
       
   149 Version 1.0(502)
       
   150 ================
       
   151 - VC5
       
   152 
       
   153 Version 1.0(501)
       
   154 ================
       
   155 - Fixed the handling of UNICODE ini files. 
       
   156 - This was tested on a RACK.
       
   157 
       
   158 Version 1.0(500)
       
   159 ================
       
   160 - Finished MAKMAKE stuff including testcode
       
   161 - Mad proofed the Nif interface
       
   162 - First release for ER5
       
   163 
       
   164 Version 1.0(093)
       
   165 ================
       
   166 - Changed ESOCK tom use MAKMAKE
       
   167 
       
   168 Version 1.0(92)
       
   169 ================
       
   170 - Changed Nifman to depend on the CommDB header file rather than using the
       
   171   definitions for datbase fields in nifvar.h
       
   172 - Changed MS CallBack codes to be >1000 rather than -ve as -ve values cannot
       
   173   be stored in the database
       
   174 
       
   175 
       
   176 Version 1.0(91)
       
   177 ================
       
   178 - Fixed a defect in the MBuf code, didn't ulink when removing a buffer
       
   179   from a chain.
       
   180 - Changed the Nif Interface for reading descriptors
       
   181 
       
   182 
       
   183 Version 1.0(90)
       
   184 ================
       
   185 - Modifications for callback. BC across the ESOCK i/f but not the NifMan
       
   186   interface, so a new agent is required. I.e. a kipper (Netdial2) which
       
   187   supports callback.
       
   188 
       
   189 
       
   190 Version 1.0(072)
       
   191 ================
       
   192 
       
   193 - Fixed WINC build because make files did not have the __WINS__ macro in them
       
   194 
       
   195 - Added test code for WINC to tcesock.exe
       
   196 
       
   197 
       
   198 Version 1.0(071)
       
   199 ================
       
   200 
       
   201 - MARM debug build is now BC with MARM release as per E32 125.
       
   202 
       
   203 - Updated obey files.
       
   204 
       
   205 - Incrementeted build number to 071.
       
   206 
       
   207 - Made changes to support PLP over TCPIP, i.e. allowing INI file to be 
       
   208   loaded from the MS Windows in WINC builds.
       
   209 
       
   210 - Work around in place of E32 WINC/WINS/WIndows 95 TLS defect by using Windows 
       
   211   TLS instead of EPOC32 TLS
       
   212 
       
   213 Version 1.0 (400)
       
   214 =================
       
   215 
       
   216 - R4 release. Standard set of R4 dependencies.
       
   217 
       
   218 - Standardised MNT verbs. Can now build project on a clean drive using 
       
   219   BLDFROMNOTHING.
       
   220 
       
   221 Version 1.0(070)
       
   222 ================
       
   223 
       
   224 ESOCK.DLL is BC with Protea v.100 and beyond (nonunicode)
       
   225 NIFMAN.DLL is BC with build 066 (nonunicode)
       
   226 UNICODE ESOCK.DLL and UNICODE NIFMAN.DLL not BC with previous releases
       
   227 Not SC with previous releases due to changes in TDes8 v.s TDes declarations
       
   228 
       
   229 
       
   230 General changes
       
   231 - Updated all build scripts to build and get UNICODE components
       
   232 - Ran all test code in UNICODE on WINS and MARM rom on a rack D
       
   233 
       
   234 Changes to NIFMAN.DLL
       
   235 - Introduced freeze files for UNICODE WINS and MARM
       
   236 - MNifIfNotify::Authenticate() now takes TDes arguments as oppose to TDes8
       
   237 - Changed NIFMAN::SetSocketState() to return KErrUnsupported if it is given an 
       
   238   unrecognised
       
   239 - CNifAgentBase::Authenticate() now takes TDes arguments as oppose to TDes8
       
   240 - Changed INI file reading code to interpret ini files with leading FFFE bytes as UNICODE.
       
   241 
       
   242 
       
   243 ESOCK.DLL
       
   244 - Frozen def file changed for UNICODE WINS and MARM
       
   245 - RServiceResolver::GetByName() & GetByNumber now take a TDesC argument as oppose to TDes8
       
   246 - THostName definition changed to TBuf<0x40> rather than TBuf8<0x40>
       
   247 - TServiceName definition changed to TBuf<0x20> rather than TBuf8<0x20>
       
   248 - Added wide IPC Read/Write functions to server side
       
   249 - Changed server side buffer to THostName rather than TBuf8<30> for SetHostName call
       
   250   There is a potential defect here which limits host name size of only 30 characters
       
   251 - Changed INI file reading code to interpret ini files with leading FFFE bytes as UNICODE.
       
   252 - Changed Changed CHostResolvProvdBase and CServiceResolvProvdBase functions to 
       
   253   use TDes instead of TDes8 declarations
       
   254 - Had to increase the stack size to pass the nifman tests, so it is now KDefaultStackSize*sizeof(TText)
       
   255 - Fixed SW1-836 RSocket::Write does not pass flags through on stream sends because of type 'o'
       
   256 - Fixed SW1-851 Double clean up stack push for protocol family reference
       
   257 - Added KSocketInternalWriteBit & KSocketInternalReadBit for protected Send/Recv flags
       
   258 
       
   259 
       
   260 Version 1.0(069)
       
   261 ================
       
   262 
       
   263 No source code changes but released with documentation under version control
       
   264 
       
   265 
       
   266 Version 1.0(068)
       
   267 ================
       
   268 
       
   269 ESOCK.DLL is BC with Protea v.100 and beyond
       
   270 NIFMAN.DLL is BC with build 066
       
   271 
       
   272 -Changed version numbers returned by RNif class to be teh same as ESOCK
       
   273 
       
   274 -Added functionality to Nif::SetSocketState() to set the ESOCK socket internal
       
   275 buffer size.  ENifBuffers512 sets the buffers to 512 bytes, ENifBuffers1024 to 1024
       
   276 and ENifBuffers2048 to 2048.
       
   277 
       
   278 -Incremented build number
       
   279 
       
   280 Version 1.0(067)
       
   281 ================
       
   282 
       
   283 ESOCK.DLL is BC with Protea v.100 and beyond
       
   284 NIFMAN.DLL is BC with build 066
       
   285 
       
   286 -Fixed SW1-203 'Possible panic if immediate restart after disconnect'
       
   287 
       
   288 -Fixed SW1-204 'Stage transition from Uninitialised to Unconnected not picked up by RNifMonitor'
       
   289 
       
   290 -Added iState==EDisconnecting __ASSERT_debug to NIFMAN DisconnectComplete() upcall
       
   291 
       
   292 
       
   293 Version 1.0(066)
       
   294 ================
       
   295 
       
   296 ESOCK.DLL is BC with Protea v.100 and beyond
       
   297 NIFMAN.DLL is BC with build 063 with exception of added functions
       
   298 
       
   299 Changes to NIFMAN
       
   300 
       
   301 -Added derived class RNifMonitor.  RNifMonitor::Open() opens a session to the NIFMAN
       
   302 server. It is similar to a RNif session however the corresponding agent is not
       
   303 loaded nor is it referenced.  The only supported commands for RNifMonitor are:
       
   304 Progress(), LastProgressError(), ProgressNotification(), CancelProgressNotification().
       
   305 Other RNif functions will return KErrNotSupported.  These changes are a response
       
   306 to SW1-195.
       
   307 
       
   308 -Changed TPtrC(0,0) default arguments to TPtr() as per SW1-194
       
   309 
       
   310 -Changed KNifOptLevel constant declaration from 401 to 0x191 to be consistent with other
       
   311 hex declarations
       
   312 
       
   313 -Added constants KAgentUninitialised=0 and KAgentUnconnected=1 and removed 
       
   314 KMinAgentProgress=0.  This is all about allowing NIFMAN to give consistant updates
       
   315 through the RNifMonitor class.  KAgentUninitalised is the default stage whenever
       
   316 a monitor session connects and there is no agent.  As soon as an agent appears
       
   317 the stage will change to KAgentUnconnected.  When the agent eventually unloads
       
   318 the stage will change back to KAgentUinitialised.  These stages are consistient with
       
   319 NTRAS and NETDIAL agents, plus it means the stage will be updated correctly in the 
       
   320 final instance.
       
   321 
       
   322 -Moved the last progress error variable storage from the agent reference into the
       
   323 sessions.  This means a session must be active to get a last error.  Calling
       
   324 LastProgressError() will now clear the last error from the particular session.
       
   325 
       
   326 -Made various changes on the NIFMAN server side to support RNifMonitor class.  The
       
   327 main changes involved ensuring the monitor sessions are updated when agents are born
       
   328 /killed.
       
   329 
       
   330 -Changed RNif client side code to make better code reuse when opening sessions.
       
   331 
       
   332 -Added test code for RNifMonitor class and progress update changes.
       
   333   
       
   334 
       
   335 Changes to ESOCK
       
   336 -Incremented build numbers
       
   337 
       
   338 
       
   339 Version 1.0(065)
       
   340 ================
       
   341 
       
   342 ESOCK.DLL is BC with Protea v.100 and beyond
       
   343 NIFMAN.DLL is BC with build 063
       
   344 
       
   345 Changes to NIFMAN
       
   346 -A new variable has been added "Timeout\StopIfNoClient".  If this variable is true or
       
   347 the variable is not found then the interface will be stopped immediately if is is not
       
   348 yet established and there are no network users, (i.e. internet protocol using socket
       
   349 server sessions)
       
   350 
       
   351 -A new variable has been added "Timeout\\ReconnectIfNoClient".  If this variable is not
       
   352 found or is false then the reconnect dialog will not be requested if there
       
   353 are no network users
       
   354 
       
   355 Changes to ESOCK
       
   356 -Incremented build numbers
       
   357 
       
   358 
       
   359 Version 1.0(064)
       
   360 ================
       
   361 
       
   362 ESOCK.DLL is BC with Protea v.100 and beyond
       
   363 NIFMAN.DLL is BC with build 060 with exception of added functions
       
   364 
       
   365 Changes to NIFMAN
       
   366 -EsWatch thread now creates a reference to the nifman library in its
       
   367   entry point.  This avoids exceptions because esock dynamically loads nifman
       
   368 
       
   369 -EsWatch now looks at the thread exit type in addition to the logon
       
   370   completion code
       
   371 
       
   372 Changes to ESOCK
       
   373 -Incremented build numbers
       
   374 
       
   375 Version 1.0(063)
       
   376 ================
       
   377 
       
   378 ESOCK.DLL is BC with Protea v.100 and beyond
       
   379 NIFMAN.DLL is BC with build 060 with exception of added functions
       
   380 
       
   381 Changes to NIFMAN
       
   382 -Added following functions to get progress information and to stop network interfaces
       
   383   Nif::ProgressL(TNifProgress& aProgress, const TDesC& aName)
       
   384   Nif::Stop(TAny* aId, CNifIfBase* aIf)
       
   385   Nif::ProgressL(TNifProgress& aProgress, TAny* aId, CNifIfBase* aIf)
       
   386 -Added constant KNifOptInterfaceProgress=3, for protocols to implement as a GetOpt
       
   387 -Added test code as appropriate
       
   388 
       
   389 
       
   390 Changes to ESOCK
       
   391 -Incremented build number
       
   392 
       
   393 Version 1.0(062)
       
   394 ================
       
   395 
       
   396 ESOCK.DLL is BC with Protea v.100 and beyond
       
   397 NIFMAN.DLL is BC with build 060
       
   398 
       
   399 Changes to NIFMAN
       
   400 -Fixed SW1-137 'Network timeouts don't allow zero seconds'
       
   401  If 0 is returned from the database the timeout is set to the minumum 1
       
   402  If any negative number is returned by the database the timeout is infinite
       
   403  If the database does not support the timeout values the timeout is infinite
       
   404 
       
   405 -Fixed SW1-81 'PC.PRT can panic the Socket Server'
       
   406  If the port number is out of range KErrTooBig is returned
       
   407 
       
   408 Changes to ESOCK
       
   409 -Incremented build number
       
   410 
       
   411 
       
   412 Version 1.0(061)
       
   413 ================
       
   414 
       
   415 ESOCK.DLL is BC with Protea v.100 and beyond
       
   416 NIFMAN.DLL is BC with build 060
       
   417 
       
   418 Changes to NIFMAN
       
   419 -Changed function name CNifFactory::ConstructL to CNifFactory::InitL, which means its
       
   420  still BC.  In any case the only project using this function is ETHER802
       
   421 -Added enumeration ENifSocketCreated for Nif::SetSocketState.  This is BC because
       
   422  the enumeration maps directly onto appropriate ESOCK internal socket state.
       
   423 -Added StartC32() function into RNif client side if socket server does not exist
       
   424 -A thread 'EsWatch' is now started by NIFMAN to monitor ths socket server thread
       
   425  if the thread suffers an abnormal exit then the C32Exe process is restarted.
       
   426 -Speeded up the operation of Nif::CheckIniConfig() by only searching for ESOCK.INI
       
   427  once on the server side
       
   428 -The mbuf reaper started by NIFMAN will no longer remove the first mbuf pool.
       
   429 
       
   430 Changes to ESOCK
       
   431 -Incremented build number
       
   432 
       
   433 Version 1.0(060)
       
   434 ================
       
   435 
       
   436 ESOCK.DLL is BC with Protea v.100 and beyond
       
   437 NIFMAN.DLL is BC with build 059 with exception of added functions
       
   438 
       
   439 Changes to NIFMAN
       
   440 
       
   441 -Added EXPORT CNifFactory::ConstructL
       
   442 -Added EXPORT Nif::SetSocketState()
       
   443 -Incremented build number
       
   444 -Fixed SW1-97 'Cannot start NetDial twice in quick succession on Series 5'
       
   445 -Fixed alloc heaven in Nifman::CheckIniConfig function
       
   446 
       
   447 Changes to ESOCK
       
   448 -Moved __UHEAP_MARK & __UHEAP_MARKEND statements in thread creation for debug build
       
   449 -Now explicitly deleting active scheduler & cleanup trap
       
   450 -Changed void CResolverProvdBase::SetNotify() to an inline
       
   451 
       
   452 Version 1.0(059)
       
   453 ================
       
   454 
       
   455 ESOCK.DLL is BC with Protea v.100 and beyond
       
   456 NIFMAN.DLL is BC with build 058, but strings requested from agents have changed 
       
   457 making it incompatible with TCPIP 026.
       
   458 
       
   459 
       
   460 Changes to NIFMAN
       
   461 
       
   462 -Added following Functions to NIFMAN
       
   463     Nifman::CheckIniConfig() - External function will ensure the ESOCK.INI file has been parsed
       
   464 	Nif::IsProtocolLoaded() - NIFMAN internal function to determine if named protocol is loaded
       
   465 	Nif::CheckInstalledL() - NIFMAN internal function to check nifman is installed
       
   466 	Nif::CheckInstallMBufManager() - internal function which also checks in ini file for MBuf max heap size
       
   467 
       
   468 -Added CMBufPoolReaper class which goes off every 5 seconds to recover mbuf manager heap
       
   469 -Standardised all NIFVAR.H variables to have correct prefixes
       
   470 -Changed 'ShortTimeout' to 'Timeout\\Client'
       
   471 -Changed 'LongTimeout' to 'Timeout\\Route'
       
   472  
       
   473 
       
   474 
       
   475 Changes to ESOCK
       
   476 -Incremented build number
       
   477 -Added friend class CMBufPoolReaper to RMBufQ
       
   478 -Added friend class CMBufPoolReaper & Nif to CMBufManager
       
   479 -Removed inline C'tor from CMBufManager
       
   480 -Changed CMBufManager data variables from protected back to private
       
   481 -Added friend class Nif to CProtocolRef
       
   482 -Changed CESockIniData data members from private to protected
       
   483 -Fixed SW1-68 'OOM Access violation' as suggested
       
   484 -Fixed SW1-69 'Unchecked return value' as suggested
       
   485 -Fixed SW1-42 'Inconsistent asserts' as suggested
       
   486 -Fixed SW1-43 'ESock Fault after calling connect' as suggested
       
   487 -Removed bogus assert from CProtocolBase d'tor
       
   488 
       
   489 
       
   490 
       
   491 Version 1.0(058)
       
   492 ================
       
   493 
       
   494 ESOCK.DLL is BC with Protea V.100 and beyond
       
   495 
       
   496 New Component
       
   497 -Moved NIFMAN.DLL from TCPIP into ESOCK & redesigned NIFMAN.DLL to cope with
       
   498 multiple agents/nifs
       
   499 -Added 3 test modules IDUMMY.NIF, ADUMMY.AGT & TNIFMAN.EXE.
       
   500 -Changed PDUMMY.PRT to include nifman tests
       
   501 
       
   502 Note new nifman will only work with TCPIP 026 and beyond
       
   503 
       
   504 Changes to ESOCK (i.e. changes affecting Protea ROM)
       
   505 -Added inline accessor for CProtocolBase::iRefCount - 'CProtocolBase::RefCount() const'
       
   506 -Added KUidEsockExtension = 0x10000387 to ES_PROT.H
       
   507 -Incremented build number
       
   508 -Added inline C'tor for CMBufManager
       
   509 -Changed data variables access for CMBufManager from private to protected
       
   510 -Fixed SW3-1616 'RMBufChain::TrimEnd() does not deal with an offset of zero correctly'
       
   511 -Fixed SW1-183 'Possible orphaning of library handle under OOM when loading extension module'
       
   512 -Fixed SW1-384 'Possible exception under OOM caused by prematurely unloaded library/partially constructed object'
       
   513 -Commented out various __ASSERT_debug's SS_SOCK.CPP lines 1332 & 1579 to enable TCPIPs
       
   514     half close mechanism to work properly
       
   515 -Added inline accessor to CSocketScheduler::iGlobals - 'CSocketScheduler::Globals()'
       
   516 -Fixed SW1-383 'Possible OOM exception because 'new' should be 'new (ELeave)'
       
   517 
       
   518 Other
       
   519 -IPC.PRT is now included in the ESOCK releasables.
       
   520 -Given CIpcProtocolHolder::GetNextFreePort TInt return type to eliminate warning
       
   521 
       
   522 
       
   523 Version 1.0(057)
       
   524 ================
       
   525 BC
       
   526 
       
   527 -Fixed SW3-1332 'Potential OOM problem with Socket Server exclusive mode'
       
   528 -Incremented build number to 057
       
   529 
       
   530 
       
   531 Version 1.0(056)
       
   532 ================
       
   533 
       
   534 -Fixed SW3-1281 Infrared printing can easily kill machine and corrupt files
       
   535     By increasing the socket server active object priority when it is in exclusive mode.
       
   536 -Incremented build number to 056
       
   537 
       
   538 Version 1.0(055)
       
   539 ================
       
   540 
       
   541 -Fixed SW3-819 MARM ESOCK.DLL released without .map file
       
   542 -Fixed SW3-783 Two functions declared IMPORT_C but not defined EXPORT_C 
       
   543     MARM build now has two extra exports
       
   544 -Fixed SW3-432 ESOCK version numbers incorrect.  They are now 1.0.55
       
   545 -Fixed SW3-355 ESOCK does not check module Uid2s
       
   546 -Fixed SW-3775 Socket Server panics itself rather than panicking clients
       
   547 -Added mnt valid verb
       
   548 -Added lots more test code
       
   549 -Removed all .mdp files from archive
       
   550 -Added mnt bldarmrel verb
       
   551 
       
   552 Version 1.0(054)
       
   553 ================
       
   554 
       
   555 -Fixed more problems with TSockXfrLength not being filled in for Send()/Recv()
       
   556 -Changed call to CArrayFixBase::SetReserveL for E32 release 105
       
   557 -Fixed some problems with RHostResolver::Next()
       
   558 
       
   559 Version 1.0(053)
       
   560 ================
       
   561 
       
   562 -Fixed problem with delta timer resolution by compensating for for lack of rounding
       
   563    up in CDeltaTimer class when granularity in reduced.  This has enabled a 100% performance 
       
   564    improvement for IrCOMM.
       
   565 -Fixed a defect in data length parameter for TCPIP half close.
       
   566 -Completed implementation for RHostResolver::Next()
       
   567 
       
   568 Version 1.0(052)
       
   569 ================
       
   570 
       
   571 -Removed pdummy.prt from release
       
   572 -Stopped releasing ESOCK.INI files because they are incorrect
       
   573 -Removed starting of ESOCK in DLL entry point for WINS.
       
   574 -Changed INIFILE.H to ES_INI.H
       
   575 -Removed ESOCK_INI_FILE_DIR define from ES_INI.H
       
   576 -Changed name of class CIniFile to CESockIniData ordinals still in same place
       
   577 -Providing default argument for CESockIniData::NewL()
       
   578 -Stripped loads of private data out of CSockIniData class
       
   579 -Changed exported CESockIniData c'tor from private to protected
       
   580 	No effect on existing use because no component could have been using it
       
   581 -Now Building WINC esock.dll with WINS def files.
       
   582 -Moved #define _MBUF_CHECKS into debug builds only
       
   583 -RMBufQ::Transfer(...) now private
       
   584 -Fixed defect in CSocket::ConnectL where check for error state was not taking place
       
   585 -WINC build will now look in MS Windows registry for INI files - a default is provided
       
   586 	for ESOCK.INI
       
   587 -Socket server shut down timer started after family close.  This fixes defect with library 
       
   588     unloading and latency timer for TCPIP.
       
   589 -Latency timer set to 15 seconds.
       
   590 -Added RSocket::Name() which allows obtains system global name for a socket
       
   591 -Added RSocket::Transfer() which allows a socket to be transfered from one session to 
       
   592     another by using the socket global name as a reference.  The transfer is like a
       
   593 	socket creation.  If it fails the socket which is being transfer will remain with
       
   594 	the original socket.  Success/failure at the originating socket can be checked
       
   595 	by calling RSocket::Info which will return KErrNone if the transfer failed and 
       
   596 	KErrBadHandle if it succeeded.
       
   597 -Fixed problem with Shutdown(EStopOutput) by allowing data to be received if the socket
       
   598 	is in a shutting down state.  Additionally any call to a send function will now 
       
   599 	complete with KErrEof if output has been stopped.
       
   600 -If a socket has been shut down with EStopInput any further calls to a receive function
       
   601 	will complete with KErrEof.
       
   602 -Moved creation of CSocket::iAcceptQ into CSocket::ListenL() which avoids possible 
       
   603     exception because return of 'new' was not checked.
       
   604 -Removed iIoctlBuf from CSocket because it has no requirement to be persistent
       
   605 -Changed CSocket::iAcceptQ to a CCirBuf which avoids some OOM problems and truely
       
   606 	implements a fixed size queue.  A panic is generated if a protocol attempts to
       
   607 	overfill the accept queue.
       
   608 -Ready to go with uid check but commented out until all protocols implement it.
       
   609 -Fixed potential OOM defect where library handle could have been orphaned in
       
   610 	CProtocolFamilyRef::LoadL().
       
   611 -Implmented a way of passing Connect/Disconnect data OOM errors to the client instead of
       
   612 	just ignoring them
       
   613 
       
   614 Version 1.0(051)
       
   615 ================
       
   616 
       
   617 Not binary compatible with last release by virtue of the following:
       
   618 
       
   619 Removed all redundant package buffers from RSocket class and replaced two
       
   620     which are used with PckgBufC's.  This cuts the size of a RSocket on the
       
   621     stack by about 52 bytes.
       
   622 
       
   623 Other changes:
       
   624 
       
   625 Removed names which are not required by clients from ES_SOCK.H
       
   626 Removed the constant KSockOptionMaxSize because it is now redundant
       
   627 Removed the double under score from the start of RSocketServ::SetExclusive mode and 
       
   628     RSocketServ::ClearExclusive mode.
       
   629 Added following uids to marm builds:
       
   630     ESOCK.DLL uid2 0x1000008D uid3 0x10000047
       
   631     *.PRT uid2 0x1000004A
       
   632 Added a protocol accessible function, SocketServExt::InstallSchedulerHook(), which 
       
   633     allows a callback to be put in place of the active scheduler WaitForAnyRequest.
       
   634     This is primarily intended for use with the WINC version of PLP.
       
   635 Removed WINC specific scheduler overloading for PLP.  It has now moved to PLP.
       
   636 
       
   637 Version 1.0(050)
       
   638 ================
       
   639 
       
   640 Binary Compatible with last release
       
   641 C32 Upgrade release
       
   642 
       
   643 Version 1.0(049)
       
   644 ================
       
   645 
       
   646 Binary Compatible with last release
       
   647 Fixed defect in CHostResolver::SetHostName() where GetHostName was being called instead.
       
   648 Removed iBusy assertions in query completion becaus the assertion is invalid if the
       
   649 	request was cancelled
       
   650 
       
   651 Version 1.0(048)
       
   652 ================
       
   653 
       
   654 Binary Compatible with last release
       
   655 Added following options for GetOpt:
       
   656 	KSOReadBytesPending - Is passed to the protocol to be filled in with number of bytes
       
   657 						  which will be read in the next read operation
       
   658 	KSOUrgentDataOffset - For a stream protocol which supports urgent data this get option
       
   659 						  is passed on to the protocol to retreive the urgent data offset
       
   660 	KSOSelectLastError -  For use with the select Ioctl KSockSelectExcept this get option 
       
   661 						  retreives the last error, on a per socket basis.
       
   662 Moved TESOCKActivePriority from ES_SOCK.H to ES_PROT.H
       
   663 Added KNewDataEndofData which when passed to MSocketNotify::NewData indicates that socket
       
   664 	is in a half closed state and will receive no more data	any subsequent reads will
       
   665 	complete with KErrEof and length 0.
       
   666 Removed KIOctlNRead and KIOctlCatMark because they have no function in the sockets API.
       
   667 
       
   668 
       
   669 Version 1.0(047)
       
   670 ================
       
   671 
       
   672 Binary Compatible with last release
       
   673 Fixed defect in RSocket::Recv() where an invalid address is passed.
       
   674 Fixed defect in RSocket::GetOpt() where SetOpt was being called instead
       
   675 Added a socket level select ioctl with similar semantics to BSD, i.e.:
       
   676 
       
   677    TPckgBuf<TUint> flags;
       
   678    flags()=KSockSelectRead | KSockSelectWrite | KSockSelectExcept;
       
   679    socket.Ioctl(KIOctlSelect, status, &flags, KSOLSocket);
       
   680    
       
   681    The Ioctl will complete when any of the flaged conditions are
       
   682    satisfied.
       
   683    KSockSelectRead means data is pending, for listening sockets a
       
   684    connect is pending or a disconnect is pending
       
   685    KSockSelectWrite means a socket is connected and data can be written
       
   686    KSockSelectExcept means the socket is in an error state.
       
   687    
       
   688    
       
   689 Version 1.0(046)
       
   690 ================
       
   691 
       
   692 Binary Compatible with last release
       
   693 Fixed memory leak in CSocket::SetSockOptL
       
   694 Integrated extension loading code for TCPIP.
       
   695 
       
   696 
       
   697 Version 1.0(045)
       
   698 ================
       
   699 Changed RSocket::EStopInOut to RSocket::EImmediate and reordered enums
       
   700 Fixed defect in stream protocol sends
       
   701 Fixed defect in Shutdown(RSocket::EStopInOut, ) by clearing subsession handle through a null message
       
   702 Fixed potential defect in accept if socket has been put in an error state by the protocol
       
   703 Added asynchronous stop protocol call
       
   704 Added SetExclusiveMode and ClearExclusiveMode calls to RSocketServ session
       
   705 Added freeze files
       
   706 Added WINC build
       
   707 
       
   708 Version 1.0(044)
       
   709 ===============
       
   710 Fixed memory defect when protocols fail to start
       
   711 Reduced socket server thread minimum heap to 4K
       
   712 
       
   713 
       
   714 Version 1.0(043)
       
   715 ===============
       
   716 Fixed B4 SW-93 Set buffer length defect.
       
   717 
       
   718 
       
   719 Version 1.0(040)
       
   720 ================
       
   721 
       
   722 Updated ESOCK Entry point
       
   723 Set minor version number to 4.
       
   724 Fixed "ETwoClose fault from RSocket::Close() if a RSocket::ShutDown() is pending"
       
   725 B4 Release.
       
   726 
       
   727 
       
   728 Version 1.0(040)
       
   729 ================
       
   730 
       
   731 Version 1.0(039)
       
   732 ================
       
   733 
       
   734 Added class TMBufPktQIter for iterating MBuf packet queues.
       
   735 
       
   736 Checked and corrected const handling throughout MBuf classes, where required, additional const
       
   737 versions of inlines have been added.
       
   738 
       
   739 Added RMBufChain::AppendL(TInt aLen). This adds space to the end of a chain.
       
   740 
       
   741 Version 1.0(038)
       
   742 ================
       
   743 
       
   744 Removed RSocket::RecvOneOrMoreFrom. Recv from operations are only meaningful on non connection oriented
       
   745 protocols, OneOrMore behaviour is only meaningful on stream protocols which must, by definition be 
       
   746 connection oriented.
       
   747 
       
   748 All read operations on RSocket now use the buffer's descriptor's max length rather than length.
       
   749 This makes Revcs specifying an explicit length more meaningful and the API generally  more usable.
       
   750 
       
   751 Added RHostResolver::GetHostName(TDes &aName,TRequestStatus &aStatus) so that TCP/IP can take it's
       
   752 own good time about sorting out exactly who it might be.
       
   753 
       
   754 Version 1.0(037)
       
   755 ================
       
   756 
       
   757 Added virtual void CServProviderBase::CancelIoctl(TUint aLevel,TUint aName)=0;
       
   758 This is called when a client cancels a pending Ioctl. Protocols should not call IoctlComplete
       
   759 in response to (or indeed after) a CancelIoctl.
       
   760 
       
   761 Version 0.1(036)
       
   762 ================
       
   763 
       
   764 CProtocolBase now provides default implementations for most of it's virtual
       
   765 functions (all except Identify() actually)
       
   766 This is to cut down code size of protocols as they no longer need to provide stub
       
   767 functionality for services they do not support.
       
   768 Default behaviour is as follows:
       
   769 
       
   770 InitL(TDesC &aTag) - Do Nothing
       
   771 StartL(void) - Do Nothing
       
   772 
       
   773 BindL(CProtocolBase* protocol, TUint id) - Panic EDoesNotBindBelow
       
   774 BindToL(CProtocolBase* protocol) - Panic EDoesNotBindAbove
       
   775 Send(...) - Panic ECantSend
       
   776 Process(...) - Panic ECantProcess
       
   777 GetOption(...) - return KErrNotSupported
       
   778 SetOption(...) - return KErrNotSupported
       
   779 Error() - Panic EDontMessWithMyHeadManImHavingABadDay
       
   780 
       
   781 Implemented IPC stream protocol.
       
   782 This is a client server connection model, stream
       
   783 based service. I've implemented it mainly for testing purposes but if anyone needs
       
   784 reliable stream based IPC it is fully tested release quality code.
       
   785 IPC.PRT, RSocket::Open(_L("IPC Stream"));
       
   786 
       
   787 Added RSocket::SetLocalPort(TUint aPort) and RSocket::GetLocalPort() these provide a 
       
   788 simpler interface than Bind for protocols which do not fully use a TSockAddr for local
       
   789 addressing.
       
   790 
       
   791 TServerProtocolDesc and TProtocolDesc now follow standard EPOC/32
       
   792 naming conventions. (i.e. all instance variables are iXxxxXxxx)
       
   793 
       
   794 KBufSizeUndefined becomes KSocketBufSizeUndefined
       
   795 KDefaultBufferSize becomes KSocketDefaultBufferSize
       
   796 KInternalOptionBit becomes KSocketInternalOptionBit
       
   797 KStream becomes KSocketMessageSizeIsStream
       
   798 KUndefined becomes KSocketMessageSizeUndefined
       
   799 KNoLimit becomes KSocketMessageSizeNoLimit
       
   800 KNoSecurity becomes KSocketNoSecurity
       
   801 
       
   802 TServerProtocolDesc::iLayer has been removed.
       
   803 
       
   804 ESOCK now (as much as possible) checks TProtocolDescs which protocols supply.
       
   805 
       
   806 Version 0.1(035)
       
   807 ================
       
   808 
       
   809 Added RSocket open by name RSocket::Open(RSocketServ &aServer,const TDesC& aName)
       
   810 aName should be the protocol name as supplied to RSocketServ::FindProtocol unlike
       
   811 FindProtocol opening a socket by name does not support wildcard matching.
       
   812 
       
   813 RSocket::Close now calls CloseSubSession so you don't get paniced for closing a
       
   814 socket twice. I don't like this but everyone else seems to think it's the bees knees.
       
   815 
       
   816 Version 0.1(034)
       
   817 ================
       
   818 
       
   819 Version 0.1(033)
       
   820 ================
       
   821 
       
   822 Fixed destructor defect on creating NetDatabases under OOM conditions.
       
   823 
       
   824 Version 0.1(032)
       
   825 ================
       
   826 
       
   827 Released for E32 069
       
   828 
       
   829 Version 0.1(031)
       
   830 ================
       
   831 
       
   832 B-2 Candidate.
       
   833 
       
   834 The ini file is now opened using a TFindFile. The socket server searches in 
       
   835 \System\Data on all drives opening the first esock.ini it finds. Search order is 
       
   836 defined by the file server.
       
   837 
       
   838 Version 0.1(030)
       
   839 ================
       
   840 
       
   841 Changed default path for ini file to \System\Data\esock.ini for all builds.
       
   842 
       
   843 Reimplemented RSocket::Shutdown(RSocket::ENormal...);
       
   844 
       
   845 Added an optional parameter to MSocketNotify::CanClose.
       
   846 TDelete aDelete can be set to EDetach which will stop ESOCK auto deleting the socket
       
   847 service provider when it is closed. This should be used by protocols such as TCP which
       
   848 need the SSP to linger after the client has exited. Deleteing the SSP then becomes the
       
   849 protocol's responsibility.
       
   850 
       
   851 Made CProtocolBase::Tag and CProtocolBase::StartSending public again. Sorry.
       
   852  
       
   853 Version 0.1(029)
       
   854 ================
       
   855 
       
   856 Delayed protocol closure.
       
   857 Protocols may now replace virtual void CProtocolBase::CloseNow(); which is called when
       
   858 all clients referencing a protocol have disconnected. In response a protocol must (at some
       
   859 time later call void CProtocolBase::CanClose() to indicate that the protocol can be deleted.
       
   860 This is to allow reliable protocols (TCP in particular) to ensure that all data has drained
       
   861 from the stack before it is deleted. Protocols must not sit in CloseNow synchronously waiting
       
   862 for data to drain.
       
   863 Note that after all clients have exited the socket server spends a short time mourning it's
       
   864 losses (currently 5 mins) and then exits. At this time all protocols will be forcibly unloaded
       
   865 anyway.
       
   866 
       
   867 Version 0.1(028)
       
   868 ================
       
   869 
       
   870 New startup code.
       
   871 ESOCK now starts a new thread in the comms server process (C32EXE).
       
   872 All test clients should now start the comm server (StartC32()) before connecting 
       
   873 to the socket server. There is no longer any need to explicitly start esock. 
       
   874 This code relies on defect HA-205 being fixed. If you take this release for 066 you must
       
   875 apply the fix described on notes yourself. Due to defect HA-212 you should also set the 
       
   876 nocallentrypoint flag for esock.dll in your oby file
       
   877 
       
   878 Tidied code.
       
   879 ProtocolManager class split into 2. If you're missing an API try
       
   880 looking in SocketServer.
       
   881 
       
   882 Version 0.1(027)
       
   883 ================
       
   884 
       
   885 Added RNetDatabase::Cancel RHostresolver::Cancel and RServiceResolver::Cancel().
       
   886 On the protocol, these call a new pure virtual fn CResolverProvdBase::CancelCurrentoperation().
       
   887 
       
   888 Added RMbufQ::Assign(RMbufChain &), RMbufQ::Append(RMbufChain &) and RMbufQ::Prepend(RMbufChain &)
       
   889 To add etc mbuf chains to RMbufQs.
       
   890 
       
   891 Removed RMbufQ::CopyIn(TUint8*, TInt len, Tint offset) and RMbufQ::CopyOut(TUint8*, TInt len, TInt offset)
       
   892 
       
   893 Version 0.1(026)
       
   894 ================
       
   895 
       
   896 ESOCK E32 Sockets server 
       
   897 Version 0.1(025)
       
   898 ================
       
   899 
       
   900 Added code to shut the socket server down cleanly under WINS and fixed a couple of memory
       
   901 leaks this revealed.
       
   902 
       
   903 Changed creation interface to resolver classes:
       
   904 RHostResolver::Open(RSocketServ &aSocketServer,TUint anAddrFamily,TUint aProtocol);
       
   905 RServiceResolver::Open(RSocketServ& aSocketServer,TUint anAddrFamily,TUint sockType,TUint aProtocol);
       
   906 RNetDatabase::Open(RSocketServ& aSocketServer,TUint anAddrFamily,TUint aProtocol);
       
   907 These slight changes better reflect the domain of the resolver in question.
       
   908 
       
   909 Fixed busy defect in CNetDatabase.
       
   910 
       
   911 Moved the following functions from class ByteOrder to class BigEndian Get32(const TUint8* aPtr),
       
   912 Get16(const TUint8* aPtr), Put32(TUint8* aPtr, TUint32 aVal) and Put16(TUint8* aPtr, TUint16 aVal).
       
   913 These functions read and write byteswapped data at (possibly) misaligned addresses
       
   914 
       
   915 Added class LittleEndian which also implements Get32(const TUint8* aPtr), Get16(const TUint8* aPtr) and
       
   916 Put32(TUint8* aPtr, TUint32 aVal), Put16(TUint8* aPtr, TUint16 aVal); These funtions write data in host order 
       
   917 at (possibly) misaligned addresses.
       
   918 
       
   919 CancelAll now calls Shutdown with CServProviderBase::EImmediate rather than CServProviderBase::ENormal
       
   920 
       
   921 Added KSockWriteUrgent, KSIPeekData and KSockReadPeek. Protocols which support urgent data (AKA Out of band or unit data) should set 
       
   922 KSIUrgentData in their protocol info. Protocols which support peeking should set KSIPeekData. If a read request
       
   923 is issued with the peek bit set and a protocol supports peek it should process the read as normal but retain a 
       
   924 copy of the data for subsequent reads.
       
   925 
       
   926 Version 0.1(024)
       
   927 ================
       
   928 
       
   929 RSocket::GetOpt and RSocket::SetOpt become
       
   930 TInt RSocket::SetOpt(TUint anOptionName,TUint anOptionLevel,const TDesC8& anOption=TPtrC(NULL,0));
       
   931 TInt RSocket::GetOpt(TUint anOptionName,TUint anOptionLevel,TDes8& anOption);
       
   932 
       
   933 RSocket::Ioctl becomes 
       
   934 EXPORT_C void RSocket::Ioctl(TUint aCommand,TRequestStatus& aStatus,TDes8& aDesc=TPtr8(NULL,0),TUint aLevel=KLevelUnspecified)
       
   935 
       
   936 Added CProtocolBase::Tag() to retrun a TPtrC to the protocol's tag name
       
   937 
       
   938 Version 0.1(023)
       
   939 ================
       
   940 
       
   941 added RSocketServ::StartProtocol(TUint anAddrFamily,TUint aSockType,TUint aProtocol,TRequestStatus &aS)
       
   942 This can be used to asynchronously start a protocol so that a later call to RSocket::Open will
       
   943 complete immediately
       
   944 
       
   945 Asynchronous RSocket::Close has been removed - use asynchronous ShutDown then synchronous close to
       
   946 allow a protocol to drain.
       
   947 
       
   948 RSocket::Listen(), RSocket::Bind(), RSocket::LocalName() and RSocket::RemoteName() all 
       
   949 become synchronous.
       
   950 
       
   951 CProtocolBase::StartSending() becomes CProtocolBase::StartSending(CProtocolBase* aProtocol)
       
   952 aProtocol should point to the protocol which is raising the flow control on event.
       
   953 
       
   954 added client side MBufManager debugging functions:
       
   955 TInt RSocketServ::__DbgFailNextMbuf(TInt n); // Fail after n allocs on the core Mbuf allocator, 0 to cancel
       
   956 TInt RSocketServ::__DbgSetMbufPoolLimit(TInt n); // Set the maximum size of the mbuf pool to n bytes
       
   957 TInt RSocketServ::__DbgCheckMbuf(TInt n); // Check that there are only n bytes allocated from the entire pool
       
   958 TInt RSocketServ::__DbgMbufFreeSpace();	// return the amount of free space in the mbuf manager pool (bytes)
       
   959 TInt RSocketServ::__DbgMbufTotalSpace(); // return the total size of the mbuf manager pool (bytes)
       
   960 
       
   961 Added net database lookup classes. Unfortunately I have been unable to extract as much generality
       
   962 as I would have liked and so the net database Base classes provide little more than IPC and 
       
   963 request routing.
       
   964 
       
   965 RNetDatabase client side and CNetDBProvdBase server side - API are similar to other lookup classes and 
       
   966 should be obvious.
       
   967 
       
   968 Version 0.1(022)
       
   969 ================
       
   970 
       
   971 NetServ has been droped from the ESOCK releasables - EIKON ESOCK clients must once again 
       
   972 call StartESOCK(NULL) just like the rest of us.
       
   973 
       
   974 Switched the API to Accept() so that Accept is called on the listening socket and takes
       
   975 a blank socket as an argument - this is so that CancelAccept() is called on the same socket
       
   976 as Accept() was called on.
       
   977 i.e newConnection.Accept(listener,aStatus); becomes listener.Accept(newConnection,aStatus);
       
   978 
       
   979 Fixed defect in outgoing connection data copy.
       
   980 
       
   981 Version 0.1(021)
       
   982 ================
       
   983 
       
   984 Ini files moved to \e32data (WINS) or \data (EPOC)
       
   985 
       
   986 void CServProviderBase::PassiveOpen(...) becomes TInt CServProviderBase::PassiveOpen(...)
       
   987 this allows protocols to return errors (OOM etc.) on passive opens
       
   988 
       
   989 Added an extra parameter (CProtocolBase* aSourceProtocol=NULL) to all inter protocol calls
       
   990 so that the source of such a call may be identified. Protocols shouls call these functions
       
   991 with aSourceProtocol=this
       
   992 
       
   993 All ESOCK specific error numbers now negative
       
   994 
       
   995 Replaced ALIGN macros with templates AlignDown4 and IsAligned4
       
   996 
       
   997 Known defects - PDummy's service provider (WINS test code) can leak memory in OOM conditions
       
   998 
       
   999 Version 0.1(020)
       
  1000 ================
       
  1001 Reduced the memory footprint of ESOCK to about 77k from 0.5 Mb :-(
       
  1002 Fixed protocol re-start defect in NETSRV
       
  1003 
       
  1004 Version 0.1(019)
       
  1005 ================
       
  1006 J Day release.
       
  1007 NETSERV now starts (and links to) IRDA, TCP/IP and NCP32.
       
  1008 
       
  1009 WARNING
       
  1010 MNT command has a defect in GETBLD. After getting E32 v61 INCC WINS WINSDB it then gets 60 of EMARM.
       
  1011 Reason unknown as yet.)
       
  1012 
       
  1013 Version 0.1(018)
       
  1014 ================
       
  1015 
       
  1016 added reliance on C32 for netsrv
       
  1017 removed dependancies on econs
       
  1018 
       
  1019 NOTE COMMS PDD MUST BE CALLED ECDRV1
       
  1020 
       
  1021 Version 0.1(017)
       
  1022 ================
       
  1023 
       
  1024 17 was abandoned due to excess grief - it is haunted enter release 17 at your own peril
       
  1025 
       
  1026 Version 0.1(016)
       
  1027 ================
       
  1028 
       
  1029 Added the netserv releasable. This is used by the shell to configure
       
  1030 the network.
       
  1031 
       
  1032 Fixed PDUMMY and IPWINS with refeneces to EEmergency.
       
  1033 
       
  1034 Version 0.1(015)
       
  1035 ================
       
  1036 
       
  1037 CServProviderBase::EEmergency becomes CServProviderBase::EImmediate this is to make code for the the following defect fix
       
  1038 read more sensibly
       
  1039 
       
  1040 Canceling a pending connect will now shut a socket down EImmediate (was EEmergency) rather than 
       
  1041 ENormal - this is to stop ESOCK panicing on the call to CanClose()
       
  1042 
       
  1043 TActivePriority becomes TESOCKActivePriority to prevent a name clash with EIKON.
       
  1044 
       
  1045 fixed typeo KKDletaTimerInterval becomes DeltaTimerIneterval
       
  1046 
       
  1047 Version 0.1(014)
       
  1048 ================
       
  1049 
       
  1050 Brought releasble zip filenames into line with other projects
       
  1051 
       
  1052 WINS release in 	r:\ESOCK\ZIP\EWINS.nnn
       
  1053 WINS debug sdbs in 	r:\ESOCK\ZIP\EWINSDB.nnn
       
  1054 MARM release in 	r:\ESOCK\ZIP\EMARM.nnn
       
  1055 
       
  1056 Added RSocket::CancelAll
       
  1057 
       
  1058 RSocket::CancelXXXXX() no longer panics the client under any circumstances
       
  1059 
       
  1060 RSocket::Accept(RSocket& aListeningSocket,TSockAddr &aRemote TDes8 &aConnectData,TRequestStatus& aStatus)
       
  1061 becomes RSocket::Accept(RSocket& aListeningSocket,TDes8 &aConnectData,TRequestStatus& aStatus); 
       
  1062 clients can use RSocket::RemoteName after accepting if they need to know the address of the 
       
  1063 remote host initiating a conection.
       
  1064 
       
  1065 ESOCK's delta timer queue function becomes
       
  1066 IMPORT_C TTimerHandle CDeltaTimer::Queue(TTimeIntervalShortMicroSeconds aTimeInMicroSeconds,TCallBack& aCallBack);
       
  1067 to fall in line with E32 timer implementations i.e the "Micro" isn't a misprint anymore. KDletaTimerInterval 
       
  1068 specifies the granularity of the delta timer.
       
  1069 
       
  1070 CServProvider::Write(const TDesC8& aDesc, TUint options)=0; becomes 
       
  1071 CServProvider::Write(const TDesC8& aDesc, TUint options, TSockAddr* anAddr=NULL)=0;
       
  1072 SetRemote name is now only called as a result of RSocket::Connect()s - SendTo addresses will be sent through 
       
  1073 on the new TSockAddr argument. Connection oriented sockets should never have the TSockAddr set on a Write call.
       
  1074 
       
  1075 Version 0.1(013)
       
  1076 ================
       
  1077 
       
  1078 Includes ARM Build
       
  1079 
       
  1080 WINS release in 	r:\ESOCK\ZIP\ESKWINS.nnn
       
  1081 WINS debug sdbs in 	r:\ESOCK\ZIP\ESKSDB.nnn
       
  1082 MAMR release in 	r:\ESOCK\ZIP\ESKMARM.nnn
       
  1083 
       
  1084 WINS release includes
       
  1085 ESOCKxx.DLL	ESOCK dll and exe
       
  1086 ESOCKxx.LIB	ESOCK link library
       
  1087 PDUMMYxx.PRT Dummy protocol module
       
  1088 IPWINSxx.PRT TCP/IP over WinSock protocol module
       
  1089 
       
  1090 MARM relase includes
       
  1091 ESOCKxx.DLL ESOCK dll and exe
       
  1092 ESOCKxx.lib ESOCK link library
       
  1093 PDUMMY.PRT dummy protocol modules
       
  1094 
       
  1095 Release notes
       
  1096 =============
       
  1097 
       
  1098 AutoBind now called for SendTo on connectionless sockets not previously bound.
       
  1099 
       
  1100 Fixed looping defect in Error(MSocketNotify::EErrorConnect)
       
  1101 
       
  1102 removed external dependencies on ss_pman.h
       
  1103 
       
  1104 fixed SendTo failure on non connections oriented sockets.
       
  1105 
       
  1106 Version 0.1(012)
       
  1107 ================
       
  1108 
       
  1109 Added support for writable ini files.
       
  1110 	TInt CIniFile::WriteVar(const TDesC& aSection,const TDesC& aVarName,TInt aValue);
       
  1111 	TInt CIniFile::WriteVar(const TDesC& aSection,const TDesC& aVarName,const TDesC& aValue);
       
  1112 	void CIniFile::CommitL();
       
  1113 
       
  1114 
       
  1115 Version 0.1(011)
       
  1116 ================
       
  1117 
       
  1118 symbolic constant ESOCK_INI_FILE added to specify the path of the ini file.
       
  1119 
       
  1120 Added new class RMBufAsyncRequest which provides asyncronous buffer allocation for 
       
  1121 protocols to help them avoid dealocks.
       
  1122 
       
  1123 Added inlines RMBuf::Get() and RMBuf::Put() which safely get and put bytes to/from an
       
  1124 MBuf. These are not inlines in debug builds.
       
  1125 
       
  1126 Added inlines RMBuf::AllocL() and RMBuf::Free() so that there is now no need at all
       
  1127 for protocols to call CMBufManager functions.
       
  1128 
       
  1129 Removed operator->() from all classes and replaced with RMBufXXX::First() which
       
  1130 returns a pointer to the first MBuf in a buffer queue or chain.
       
  1131 
       
  1132 Changed void RMBufChain::Align(Tint aSize) to TInt RMBufChain::Align(Tint aSize).
       
  1133 The functionality of this has changed slightly also and now allow aSize to be greater
       
  1134 than the chain length without raising a panic. aSize must is still limited to an
       
  1135 MBuf buffer size (ie aSize<=128). The number of bytes that were aligned is returned.
       
  1136 
       
  1137 Removed  TMBufIter::operator->()
       
  1138 
       
  1139 Removed RMBuf* operator from all classes except TMBufIter.
       
  1140 
       
  1141 Amended test code to check RMBufChain::CreateL() and Async allocator support.
       
  1142 
       
  1143 Re-organised MBuf source code, splitting it into several files.
       
  1144 
       
  1145 Added Protocol debugging aids to CMBufManager:
       
  1146 __DbgSetPoolLimit()	- Sets a hard limit on the maximum size to which the pool may grow.
       
  1147 __DbgSetFailAfter() - Causes a future allocation request to fail
       
  1148 __DbgGetBufSpace()	- Returns free buffer space
       
  1149 __DbgGetBufTotal()	- Returns total buffer space
       
  1150 
       
  1151 (Re-)Exported the TAsyncCallback class.
       
  1152 Removed excess EXPORTs from CAsync class.
       
  1153 Added ProtocolManager::__DbgForceKillMBufManager()
       
  1154 
       
  1155 CSocket::Error() no longer has a hard coded call to __debugGER()
       
  1156 
       
  1157 KIoctlNonBlockingIO becomes KSONonBlockingIO and KIoctlBlockingIO becomes KSOBlockingIO
       
  1158 Blocking behaviour should now be set using SetOption.
       
  1159 
       
  1160 RSocket::SetOpt(TUint optionName,const TDesC8 &aDesc,TUint optionLevel,TRequestStatus &aStatus) becomes
       
  1161 RSocket::SetOpt(TUint optionName,const TDesC8 *aDesc,TUint optionLevel) and 
       
  1162 RSocket::GetOpt(TUint optionName,const TDesC8 &aDesc,TUint &anOptionLen,TUint optionLevel,TRequestStatus &aStatus) becomes
       
  1163 RSocket::GetOpt(TUint optionName,const TDesC8 *aDesc,TUint &anOptionLen,TUint optionLevel);
       
  1164 
       
  1165 To support Ioctls without any data void Ioctl(TUint level,TUint name,TDes8 &anOption,TUint aLen) 
       
  1166 becomes void Ioctl(TUint level,TUint name,TDes8 &anOption) and, because of this 
       
  1167 CServProvdBase::Ioctl(TUint level,TUint name,TDes8& anOption) becomes 
       
  1168 CServProvdBase::Ioctl(TUint level,TUint name,TDes8* anOption) and MSocket::IoctlComplete(TDesC8 &aBuf) 
       
  1169 becomes MSocket::IoctlComplete(TDesC8 &aBuf) 
       
  1170 
       
  1171 RSocket::Close no longer panics if the socket was never opened
       
  1172 
       
  1173 void CServProviderBase::SetRemName(TSockAddr& anAddr) becomes TInt CServProviderBase::SetRemName(TSockAddr& anAddr)
       
  1174 protocols can pre check addresses (for valid port numbers etc) and return an error synchronously - otherwise they 
       
  1175 should return KErrNone.
       
  1176 
       
  1177 Version 0.1(010)
       
  1178 ================
       
  1179 
       
  1180 ESOCK now builds under ARM but will not link against the released base due to a gcc defect.
       
  1181 Talk to Rog if you want to run ESOCK on a rack.
       
  1182 
       
  1183 Added static EXPORT_C ProtocolManager::__DbgForceLoadMBufManagerL(); This allows debug builds to 
       
  1184 force premature loading of the MBuf manager.
       
  1185 
       
  1186 RMBufPktQ::Replace() becomes RMBufPktQ::Prepend().
       
  1187 
       
  1188 Added void RMBufChain::CreateL(const TDesC8& aDes, TInt aHdrLen=0); This creates an MBuf chain
       
  1189 from a descriptor and optionally prepends space for a protocol header.
       
  1190 
       
  1191 Added TInt TSockAddr::GetUserLen(); Derived classes should now call SetUserLen() in their 
       
  1192 contructor to set the descriptor length tom the actuall length of the desciptor. TSockAddr 
       
  1193 now initialises the length to maximum possible length of the descriptor. Note: If you dynamically
       
  1194 change the length of your address, then either ignore this or set to max possible length.
       
  1195 The primary use for this is to enable address type independant routing to be implemented by 
       
  1196 regarding the derive portion of TSockAddr as a bit stream. If this will never apply to you,
       
  1197 then there is no real need to do a SetUserLen() in you constructor.
       
  1198 
       
  1199 TSocketAddress removed. Where needed, this functionality can be implemented
       
  1200 in derived classes. Use of the names "Input()" and "Output()" may be
       
  1201 appropriate for consistancy.
       
  1202 
       
  1203 CProtocolFamilyBase::NewProtocol becomes CProtocolFamilyBase::NewProtocolL
       
  1204 
       
  1205 Re-designed protocol manager. CProtocolBase and CProtocolFamily are no longer CObjects.
       
  1206 The fact that they were was adding to the complexity of the protocol manager. This should make
       
  1207 no difference to protocol modules.
       
  1208 
       
  1209 Added low memory tests to test code and fixed all memory leaks (etc.) detected.
       
  1210 
       
  1211 Added class CAsyncCallBack : public CAsync. CAsyncCallBack implements the bare minimum non virtual
       
  1212 subclass of CAsync.
       
  1213 
       
  1214 Added full binding code. (Based on a hacked up inifile system)
       
  1215 
       
  1216 	Binding is controled by the file \e32sys\esock.ini. The format of this is very similar to 
       
  1217 	Windows' protman.ini
       
  1218 	i.e
       
  1219 	[SectionName]
       
  1220 	itemName= itemValue
       
  1221 	[AnotherSectionName]
       
  1222 	itemName= itemValue
       
  1223 	
       
  1224 	Note that there must not be a space between "itemname" and "=" and there must be a spece between 
       
  1225 	"=" and  itemValue. Also note  that itemValue is terminated by white space.
       
  1226 
       
  1227 	Protocols may read the ini file (or other similar files) using the CIniFile class. Note that whne the
       
  1228 	Registry is implemented CIniFile will be removed.
       
  1229 
       
  1230 	There is a general section called [sockman] which should contain an item "protocols" with a comma
       
  1231 	seperated list of top level protocols - i.e those protocols which can create sockets.
       
  1232 
       
  1233 	Each protocol is described by it's own section. The section name is the protocol's "tag" the protocol
       
  1234 	section must contain two items: "filename" and "index" these are respectively the .prt (dll) file to load
       
  1235 	the protocol from and (if required) the (1 based) index of the specific protocol within the protocol family.
       
  1236 
       
  1237 	A protocol section may also have an optional "bindto" item which specifies a comma seperated list of 
       
  1238 	(tags of) the lower bindings of the protocol.
       
  1239 
       
  1240 	CProtocolBase::InitL() becomes CProtocolBase::InitL(TDesC& aTag) the descriptor carries the protocol's
       
  1241 	tag from the ini file. Protocols should add options to their specific section and use the supplied tag
       
  1242 	as  a section name to retrieve them - this allows us to multiple instantiations of a single protocol.
       
  1243 
       
  1244 	e.g
       
  1245 		[sockman]
       
  1246 		protocols= ip
       
  1247 
       
  1248 		[transport]
       
  1249 		filename= \e32sys\pdummy.prt
       
  1250 		index= 1
       
  1251 		bindto= interface1,interface2
       
  1252 
       
  1253 		[interface1]
       
  1254 		filename= \e32sys\pdummy.prt
       
  1255 		index= 2
       
  1256 
       
  1257 		[interface2]
       
  1258 		filename= \e32sys\pdummy.prt
       
  1259 		index= 2
       
  1260 
       
  1261 	This ini file loads protocol 1 from \e32sys\pdummy.prt and binds it to two seperate instances of
       
  1262 	protocol 2 from \e32sys\pdummy.prt
       
  1263 
       
  1264 	Protocols are late bound when sockets are created. An unfortunate side effect of this is that BindL 
       
  1265 	and BindToL May be called after StartL due to a second round of binding.
       
  1266 
       
  1267 	Protocols should call Open on any protocols they bind to and Close on any protocols they are bound to 
       
  1268 	when they close. This will ensure that protocols are destroyed in the correct order (up the stack)
       
  1269 
       
  1270 	Thanks to SteveT for the original CIniFile.
       
  1271 
       
  1272 
       
  1273 Socket buffers are now fixed in size - once they have been explicitly set. Otherwise they will
       
  1274 continue to grow as before.
       
  1275 
       
  1276 Version 0.1(009)
       
  1277 ================
       
  1278 
       
  1279 Fixed defect in Disconnect up call.
       
  1280 
       
  1281 Removed CServProvdBase::Create() this was an artifact of the previous incarnation of the protocol manager.
       
  1282 
       
  1283 Added proper copy constructors to Service providers in ipwins. Added esock debug asserts to ipwins.
       
  1284 
       
  1285 SocketTimer::Queue(TInt aTimeInMicroSeconds,TCallBack &aCallBack); becomes SocketTimer::Queue(TTimeIntervalMicroSeconds aTimeInMicroSeconds,TCallBack &aCallBack); 
       
  1286 I'm not sure if this is a good thing though.
       
  1287 
       
  1288 Internals of SocketTimer altered to use a heartbeat rather than an interval timer - this makes better use of E32 delta queues.
       
  1289 
       
  1290 CServProviderBase::Protocol() has been removed. SSPs which wish need reference their protocol should implement this themselves.
       
  1291 
       
  1292 TNotify has become the mixin MSocketNotify there should be no change to protocols.
       
  1293 Similarly TResolverNotify has become MResolverNotify.
       
  1294 
       
  1295 CServProviderBase::SetLocalName now returns a TInt - this allows protocols to signal an error for (amongst other things) bad protocol 
       
  1296 family in the address and reserved port numbers. The error is passed directly to the client. SetRemoteName should still signal any errors 
       
  1297 using an Error call during or after the ActiveOpen() call.
       
  1298 
       
  1299 Similarly, GetOption and SetOption now return a TInt. Also CProtocolBase::GetOption and CProtocolBase::SetOption
       
  1300 
       
  1301 The socket server no longer steals all Ioctl calls it recognises regardless of the level.
       
  1302 
       
  1303 Added restartable connections to sockets. A protocol which can restart after a failed connect or a disconnect should set KSICanReconnect
       
  1304 in it's protocol info field. This allows clients to reissue a connect request after a failure.
       
  1305 
       
  1306 Added a new error indication bit: MSocketNotify::EErrorFatal this will cause all pending requests to complete. If the socket does not 
       
  1307 support re-connection setting EErrorFatal will put into an error state which will stop all further client requests. 
       
  1308 MSocketNotify::EErrorFatal is not set by default. MSocketNotify::EErrorFatal should be used to indicate an error on a listening socket.
       
  1309 
       
  1310 New improved EchServ. The test server now provides chargen, NULL and connect back services as follows:
       
  1311 	Service		TCP/Port 	UDP/Port
       
  1312 	=======		========	========
       
  1313 	Echo		 20000		   -
       
  1314 	Char Gen	 20001		   -
       
  1315 	Null		 20002		   -
       
  1316 	Reconnect	 20003		  n/a
       
  1317 
       
  1318 The reconnect srvice will create a new socket and attempt to connect back to the originating host on port 20004. 
       
  1319 When both connections are in place it will echo data received on each socket to the other.
       
  1320 
       
  1321 MSocketNotify::IoctlComplete() becomes MSocketNotify::IoctlComplete(TDesC8 &aBuf) anyreturn data for the Ioctl should be
       
  1322 sent in the IoctlComplete call. SSPs now need to copy any data required fro mthe Ioctl call.
       
  1323 
       
  1324 Version 0.1(008)
       
  1325 ================
       
  1326 
       
  1327 Fixed Deadlock defect on startup with no valid protocols.
       
  1328 
       
  1329 OSILayer enum becomes TOSILayer. All memnbers get an E Prefix. Ooops.
       
  1330 
       
  1331 Fixed a descriptor type defect in the CSocket class.
       
  1332 
       
  1333 CServiceProviderBase::SetNotify is no longer virtual. SSPs should now use the new pure virtual 
       
  1334 Start() as indication that they can send messages to their iSocket 
       
  1335 
       
  1336 Tidied up the protocol init code. fixed defects when loading second+ protocols from a single family.
       
  1337 
       
  1338 Finished name resolution and service database functionality (Except Next). NetDatabase will 
       
  1339 be left until there is more input available from IrIAS
       
  1340 
       
  1341 Fixed datagram Close/Shutdown order defect.
       
  1342 
       
  1343 Fixed code rot in the e32 finger server and IPWINS.
       
  1344 
       
  1345 CAsync had unneccessary code. CAsync::CallBackL and CAsync::RunL have been removed (RunL becomes pure virtual). You 
       
  1346 should place all code from CAsync::CallBackL into the derived RunL
       
  1347 
       
  1348 Added a global timer class:
       
  1349 class SocketTimer 
       
  1350 	{
       
  1351 public:
       
  1352 	IMPORT_C static TTimerHandle Queue(TInt aTimeInMicroSeconds,TCallBack &aCallBack);
       
  1353 	IMPORT_C static void Remove(TTimerHandle aTimer);
       
  1354 	};
       
  1355 Although times are specified in milliseconds the timer currently only gives 1/10th second granularity so it isn't much better that a CTimer.
       
  1356 This will be rectified when E32 supports fine grained timers - this in unlikely to be on WINS, you'll have to live with the 1/10ths.
       
  1357 Queue returns a TTimerHandle which should be passed to Remove to Cancel a timer. TTimerHandle becomes when the timer goes off. Timer test 
       
  1358 code is in TSOCK\T_TIMER.MAK
       
  1359 
       
  1360 Version 0.1(007)
       
  1361 ================
       
  1362 
       
  1363 
       
  1364 TSockAddr re-implemented more effeciently and added CmpPort() member to compare for equality two TSockAddr structures.
       
  1365 
       
  1366 ES_INET.H dependancy removed from ESock.
       
  1367 
       
  1368 Class TSockAddrIN has been renamed to TInetAddr. Implementation of TInetAddr moved to TCPIP and also IPWINS.
       
  1369 
       
  1370 Class Inet removed from Esock and replaced with class ByteOrder that implements byte order swapping.
       
  1371 
       
  1372 Included test code for MBuf manager as TESTMBUF but see below.
       
  1373 
       
  1374 Changed MNT.CMD to ensure that test protocols have the InstallXXX symbols as the first in generated def files.
       
  1375 All Esock code (especially protocol modules) should now be built using real (i.e. non name) builds.
       
  1376 DEF files were added to the release in 005.
       
  1377 
       
  1378 Added Peek() to RMBufPktQ to allow the first packet to be examined without removing it.
       
  1379 
       
  1380 Removed cleanup stack support from RMBufChain.
       
  1381 
       
  1382 CProtocolBase::Bind() becomes CProtocolBase::BindL() and CProtocolBase::BindTo() becomes 
       
  1383 CProtocolBase::BindToL() protocols should leave from any binding operation to indicate an error.
       
  1384 
       
  1385 Inter-Protocol flow control:
       
  1386 CProtocolBase::Send() now returns TInt, added virtual void CProtocolBase::StartSending(); These now form a 
       
  1387 flow control pair. A zero return from a send should floww control off the sending protocol. StartSending 
       
  1388 acts as a flow control on.
       
  1389 
       
  1390 Added virtual void CProtocolBase::Error(Tint anError); Protocols should propagate error conditions up 
       
  1391 the stack (eventually to socket service providers) using this call.
       
  1392 
       
  1393 Added TServerProtocolDesc::OSIlayer and corresponding OSILayer enum. Protocols will be Start()ed in
       
  1394 increasing layer  order (ie up the stack).
       
  1395 
       
  1396 RSocketServer::FindProtocol(const TProtocolName&,TProtocolDesc &) implemented.
       
  1397 
       
  1398 Introduced alloc heaven tool code into socket server.
       
  1399 Fixed Alloc heaven.
       
  1400 
       
  1401 Fixed RecvFrom functionality. (Was not writing address back to client space.)
       
  1402 
       
  1403 Fixed datagram message completeion defect.
       
  1404 
       
  1405 Removed last globals from the socket server. Yeah!
       
  1406 
       
  1407 Send(RMBufChain & ,TSockAddr *from,TSockAddr *to=NULL) becomes Send(RMBufChain &) MBuf chains now carry 
       
  1408 source and destination addresses. (this should have been in 006.)
       
  1409 
       
  1410 Added MBuf Manager to socket server. MBuf manager is installed whenever a protocol which requires MBuf 
       
  1411 services is loaded. Use of MBuf manager as a stand alone dll is no depreciated. Protocols should indicate that
       
  1412 they rewuire the MBufManager by setting ENeedMBufs in their serviceTypeInfo.
       
  1413 
       
  1414 Version 0.1(006)
       
  1415 ================
       
  1416 
       
  1417 CProtocolBase::NewSAPL() becomes CProtocolBase::NewSAPL(TUint aSocketType) The single parameter indicates the socket type.
       
  1418 Protocols which only produce a single socket type may ignore it.
       
  1419 
       
  1420 TNotify::Error(TInt anError); becomes TNotify::Error(TInt anError,TUint anOperationMask=KAllOperationss);
       
  1421 Errors can now be specified on one of more operations. Operation bitmasks are specified in TNotify.
       
  1422 
       
  1423 Added TNotify::IoctlComplete ioctl operations are now asynchronous and follow the general pattern. Socket Service providers ioctl
       
  1424 call carries a descriptor. The desc's contents are protocol specific. The socket server will write the entire contents of the descriptor
       
  1425 back to client space after an Ioctl completes.
       
  1426 
       
  1427 Process(RMBufChain & ,TSockAddr *from,TSockAddr *to=NULL) becomes Process(RMBufChain &) MBuf chains now carry source and destination addresses.
       
  1428 
       
  1429 
       
  1430 Version 0.1(005)
       
  1431 ================
       
  1432 
       
  1433 Made release notes more comprehensive. Esock now has 3 users.
       
  1434 
       
  1435 Added RecvOneOrMore functionality. This causes a socket (stream only) to block until any data arrives.
       
  1436 It will then read any data that is available (upto the size of the supplied descriptor) and complete immediately.
       
  1437 
       
  1438 added serviceTypeInfo to TServerProtocolDesc structure - it is important that protocols fill this in correctly using
       
  1439 values from the TProtocolServiceInfo enum. Note that previous releases of IPWINS and PDUMMY were incorrect.
       
  1440 
       
  1441 added *.def to li.prj
       
  1442 
       
  1443 Cleaned up startup and shutdown code in IPWINS - we were leaving threads hanging around.
       
  1444 
       
  1445 Esock now uses UserSvr::InitRegisterCallback() this is important as protocols will start to use the
       
  1446 comms server which must be started before they load.
       
  1447 
       
  1448 Added CProtocolBase::ProtcolFamily() and CServProviderBase::Protocol()
       
  1449 
       
  1450 Renamed TIPWINS.* to T_IPWINS.*
       
  1451 
       
  1452 Added basic host name resolution to IPWINS - this is used by the test code. You no longer need to edit IP addresses in T_IPWINS
       
  1453 Addresses are currently returned in host order - this may change.
       
  1454 
       
  1455 Unicode name resolution does not work.
       
  1456 
       
  1457 Non debug MBuf manager does not build.