Retry Upload File on SSL error

Hi,

I had some problems with my SSL (GeoTrust).
On some browsers (mostly FF3.6 on WinXP), uploading a file using flash over SSL gives me an IOError.

Something I found out is that uploading without SSL works even the site is on SSL.

I thought about trying to upload with SSL (https://) and if it fails, retry without SSL ([URL=“http://%29”]http://).

The problem is that when I retry uploading without SSL the UPLOAD_COMPLETE_DATA won’t trigger.

Tried removing and adding all the events, adding a cancel before retrying but it didn’t work…

Here’s the code:


btUpload.addEventListener(MouseEvent.CLICK, btUpload_CLICK);
function btUpload_CLICK(event:MouseEvent):void{
    uploadFile = new FileReference();
    uploadFile.addEventListener(Event.SELECT, fileSelected);
    uploadFile.addEventListener(Event.CANCEL, selectionCanceled);
    uploadFile.browse(new Array(new FileFilter("Document (*.doc,*.xls,*.ppt,*.txt)","*.doc;*.xls;*.ppt;*.txt")));
}
function fileSelected(event:Event):void{
    uploadFile.removeEventListener(Event.SELECT, fileSelected);
    uploadFile.removeEventListener(Event.CANCEL, selectionCanceled);
    
    var URLVar:URLVariables = new URLVariables();
    URLVar.id = id;
    URLVar.MAX_FILE_SIZE = "52428800";

    var URLReq:URLRequest = new URLRequest("https://www.server.com/uploadfile.php");
    URLReq.method = URLRequestMethod.POST;
    URLReq.data = URLVar;
    URLReq.requestHeaders;
    uploadFile.addEventListener(ProgressEvent.PROGRESS , fileProgress);
    uploadFile.addEventListener(Event.COMPLETE, fileUploaded);
    uploadFile.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, fileUploadComplete);
    uploadFile.addEventListener(IOErrorEvent.IO_ERROR, fileUploadIOError);
    uploadFile.addEventListener(SecurityErrorEvent.SECURITY_ERROR, fileUploadSecurityError);
    uploadFile.upload(URLReq);
    function fileProgress(event:ProgressEvent):void{
        trace(event.bytesLoaded + " of " + event.bytesTotal + " bytes uploaded");
    }
    function fileUploaded(event:Event):void{
        uploadFile.removeEventListener(Event.COMPLETE, fileUploaded);
        trace("Uploaded");
    }
    function fileUploadComplete(event:DataEvent):void{
        uploadFile.removeEventListener(ProgressEvent.PROGRESS , fileProgress);
        uploadFile.removeEventListener(DataEvent.UPLOAD_COMPLETE_DATA, fileUploadComplete);
        uploadFile.removeEventListener(IOErrorEvent.IO_ERROR, fileUploadIOError);
        uploadFile.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, fileUploadSecurityError);
        if(event.data == "1"){
            trace("Upload is ok");
        }else{
            trace("Upload error");
        }
    }
    function fileUploadIOError(event:IOErrorEvent):void{
        if(URLReq.url.search("https://")==0){//Error Using SSL
            trace("retry upload with no ssl");
            URLReq.url = "http://www.server.com/uploadfile.php";
            uploadFile.upload(URLReq);
        }else{
            uploadFile.removeEventListener(ProgressEvent.PROGRESS , fileProgress);
            uploadFile.removeEventListener(DataEvent.UPLOAD_COMPLETE_DATA, fileUploadComplete);
            uploadFile.removeEventListener(IOErrorEvent.IO_ERROR, fileUploadIOError);
            uploadFile.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, fileUploadSecurityError);
            trace("IOError on upload");
        }
    }
    function fileUploadSecurityError(event:SecurityErrorEvent):void{
        uploadFile.removeEventListener(ProgressEvent.PROGRESS , fileProgress);
        uploadFile.removeEventListener(DataEvent.UPLOAD_COMPLETE_DATA, fileUploadComplete);
        uploadFile.removeEventListener(IOErrorEvent.IO_ERROR, fileUploadIOError);
        uploadFile.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, fileUploadSecurityError);
        trace("Upload Security Error (0015)");
    }
}
function selectionCanceled(event:Event):void{
    uploadFile.removeEventListener(Event.SELECT, fileSelected);
    uploadFile.removeEventListener(Event.CANCEL, selectionCanceled);
}


Any idea for a work around?
Thanks.