[efi] Do not attempt to download autoexec.ipxe without a valid base URI

If we do not have a current working URI (after applying the EFI device
path settings and any cached DHCP settings), then an attempt to
download autoexec.ipxe will fail since there is no base URI from which
to resolve the full autoexec.ipxe URI.

Avoid this potentially confusing error message by attempting the
download only if we have successfully obtained a current working URI.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
diff --git a/src/interface/efi/efi_autoexec.c b/src/interface/efi/efi_autoexec.c
index d9ad3b9..44b8b64 100644
--- a/src/interface/efi/efi_autoexec.c
+++ b/src/interface/efi/efi_autoexec.c
@@ -28,6 +28,7 @@
 #include <ipxe/timer.h>
 #include <ipxe/image.h>
 #include <ipxe/netdevice.h>
+#include <ipxe/uri.h>
 #include <ipxe/efi/efi.h>
 #include <ipxe/efi/efi_utils.h>
 #include <ipxe/efi/efi_autoexec.h>
@@ -111,6 +112,14 @@
 		goto err_create;
 	}
 
+	/* Do nothing unless we have a usable current working URI */
+	if ( ! cwuri ) {
+		DBGC ( device, "EFI %s has no current working URI\n",
+		       efi_handle_name ( device ) );
+		rc = -ENOTTY;
+		goto err_cwuri;
+	}
+
 	/* Open network device */
 	if ( ( rc = netdev_open ( netdev ) ) != 0 ) {
 		DBGC ( device, "EFI %s could not open net device: %s\n",
@@ -130,6 +139,7 @@
 	sync ( EFI_AUTOEXEC_TIMEOUT );
 
  err_open:
+ err_cwuri:
 	mnptemp_destroy ( netdev );
  err_create:
 	return rc;