This is about the third or fourh time to try to explain UFT.

...

...

...

The size parameter can be an inexact value. In fact, it can be left as 0, because its sole purpose is to answer the "can this file fit" question, which doesn't strictly have to be answered yet.

Why the ambiguity? Ideally, before the transaction gets underway, it would be nice if the client and server both know how much data they'll be carrying. The server should know how much data it will get "dumped on it" and the client should know if the job will be able to complete. Better to send an estimate than to start the transfer only to have to abort or restart later with adjustments.

Enter Fudge Factor Engineering. Not all systems which will use UFT keep track of the the exact number of bytes in a file. Not all ways of using UFT make the number available beforehand. Even on a wholly stream-oriented system like UNIX, one cannot readily tell how many bytes a text file will contain when converted to network plain text. But in most cases an estimate can be derived.