Path: utzoo!utgpu!news-server.csri.toronto.edu!mailrus!ames!haven!decuac!e2big.mko.dec.com!bacchus.pa.dec.com!decwrl!uunet!mcsun!ub4b!lln-cs!sunbim!old From: old@sunbim.UUCP (Olivier Dubois) Newsgroups: comp.protocols.iso.dev-environ Subject: FTAM presentation user data size Message-ID: <1533@sunbim.UUCP> Date: 10 Aug 90 13:35:34 GMT Reply-To: old@sunbim.be (Olivier Dubois) Organization: BIM Everberg Belgium Lines: 71 Some weeks ago I sent an article on incompatibility between the isode FTAM implementation and M1/T1/A/111 profile compliant implementation. The isode responder as well as the initiator can generate too big presentation data value for other implementation to decode. I added a test in the code to limit the size of PDV. The files ftam-put.c and ftamd-trans.c in the ftam2 directory are to be modified I used the isode-5.9 code. in ftam-put.c, in the put() function, after the lines: . . #ifdef BRIDGE bsize = BUFSIZ << 2; size = magic >= bsize ? magic : bsize; if (size > bsize) size -= size % bsize; #else #ifndef MAXBSIZE bsize = BUFSIZ; #else bsize = st.st_blksize > 0 ? st.st_blksize : BUFSIZ; #endif size = (1024 <= magic && magic < bsize) ? magic : bsize; #endif add : /* 90/08/10 added by Olivier Dubois, BIM, Everberg, Belgium to conform to ftam profile T1 or A/111 and derivatives where the FTAM user data is limited to 7K. Conformant implementation can crash receiving to big Presentation data value. This prevent from putting files bigger than 7K to their filestore. This is a simple hack to allow interoperability with conformant implementations. The limitation could be done fragmenting presentation element in the FDataRequest library function. It is the file sender which decide the P-Data bound in the transfer, it is safe only to modify the sender functions. the same modification has to be made to the responder function uxfget in ftamd-trans.c.. the bridge case has to be checked against this problem. */ #define FTAM_MAX_USER_DATA 4096 /* I choose 4K as 7k is the maximum decoded user data size, you have to keep a few headroom bytes for the receiver ( 100 from experience ). So why not stay with a power 2 for faster buffering) */ if ( size > FTAM_MAX_USER_DATA ) switch (vf - vfs) { case VFS_UTF: size = FTAM_MAX_USER_DATA + MAGIC_OCTET1; break; case VFS_UBF: default: size = FTAM_MAX_USER_DATA + MAGIC_SINGLE; break; } /* end addition */ and apply the some modification in the file ftamd-trans.c in the function ufxget(). I hope someone can find this patch usefull and I always interessted to hear your feelings about that damned file transfer protocol. Olivier Dubois, System engineer, BIM sa/nv, Belgium.