﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
47	EVFS GUI unable to detect status of connection	jojo	Silvan Scherrer	"The GUI for EVFS as included in eCS 2.0 RC4 is unable to determine if the resource was actually connected properly or not. Below is a cut & paste from a discussion with Alex Taylor (author of the GUI) me (Joachim) and Vitali.

===

>> the return code of EvfsRxMount indicates whether the resource
>> >> was initialized and parameters were accepted by the plugin.
>> >> It does not indicate the resource availability. That is, it is possible
>> >> to mount a resource that is not accessible at the time of the mount.
>> >> That is the design.
>> >> 
>> >> If you have to verify, whether the resource is actually accessible, you 
>> >> have to do a file system operation on the resource and verify the result of 
>> >> it.
>> >> 
>> >> Return codes for all REXX functions are generic OS/2 return codes
>> >> converted to a decimal string (like ERROR_INVALID_PARAMETER is '87', etc).
> >
> >Okay, thanks for the info. So this would require some additional coding 
> >but seems not impossible...

I'm not sure... how could I tell the difference between an attached directory 
that simply contains no files, and an empty mountpoint (whose attach failed)?

It would seem there's also no way to return ""login failed"" to the user.  

===

Hi Joachim, Alex,

it is possible to implement an IOCTL in the samba plugin.
The IOCTL would return information about the samba resource.
I believe it is the most suitable method, as it will allow
to return any information: login failed, etc.

So after a mount, an additional IOCTL call to the plugin
will be made by the script.

I think doing an IOCTL from rexx is not implemented in evfscall,
so a separate executable (or REXX callable DLL, or
additing the function to evfscalls) will be required.

I will send a C example of implementing an IOCTL
later today.

Best regards,
Vitali.

===

here is what to do.

In the plugin (ndpsmb.c) implement:

int APIENTRY NdpIOCTL (int type, HRESOURCE resource, char *path, int function,
                       void *in, ULONG insize, PULONG poutlen)
{
    Resource *pRes = (Resource *)resource;
    
    if (function == 100 ) /* Arbitrary value */
    {
        SAMBAINFO *pInfo = (SAMBAINFO *)in;
        fillResourceInfo (pRes, pInfo);
        poutlen = sizeof (SAMBAINFO);
        return NO_ERROR;
    }
    
    return ERROR_NOT_SUPPORTED;
}

In the application call:

SAMBAINFO info;

fullpath = path to just created resource.

ULONG cbOut = sizeof (info);
rc = EvfsPluginIoctl (100, ""ndpsmb"", ""smbfs"", fullpath, &info, sizeof
(info), &cbOut);

That should eventually call the custom fillResourceInfo
which can return whatever is required in the SAMBAINFO structure.

Let me know if there are any problems.

Best regards,
Vitali.

===

We'd like to have the capability to perform a status check in REXX, but am unsure if the above is sufficient to implement this. It is also unclear to me who is supposed to implement what :)

Thanks in advance, 

Joachim
"	defect	closed	major	Netdrive plugin 1.5 beta 1	Samba Client Plugin	NDP 1.5 alpha	fixed	EVFS	
