Index: nsplugins/viewer/nsplugin.cpp =================================================================== --- nsplugins/viewer/nsplugin.cpp (revision 565997) +++ nsplugins/viewer/nsplugin.cpp (revision 565998) @@ -1602,6 +1602,12 @@ return true; } +void NSPluginStreamBase::updateURL( const KURL& newURL ) +{ + _url = newURL; + free(const_cast(_stream->url)); + _stream->url = strdup(_url.url().ascii()); +} int NSPluginStreamBase::process( const QByteArray &data, int start ) { @@ -1824,6 +1830,8 @@ SLOT(totalSize(KIO::Job *, KIO::filesize_t))); connect(_job, SIGNAL(mimetype(KIO::Job *, const QString &)), SLOT(mimetype(KIO::Job *, const QString &))); + connect(_job, SIGNAL(redirection(KIO::Job *, const KURL&)), + SLOT(redirection(KIO::Job *, const KURL&))); } return false; @@ -1847,6 +1855,8 @@ SLOT(totalSize(KIO::Job *, KIO::filesize_t))); connect(_job, SIGNAL(mimetype(KIO::Job *, const QString &)), SLOT(mimetype(KIO::Job *, const QString &))); + connect(_job, SIGNAL(redirection(KIO::Job *, const KURL&)), + SLOT(redirection(KIO::Job *, const KURL&))); } return false; @@ -1863,6 +1873,11 @@ } } +void NSPluginStream::redirection(KIO::Job * /*job*/, const KURL& url) +{ + updateURL( url ); +} + void NSPluginStream::totalSize(KIO::Job * job, KIO::filesize_t size) { kdDebug(1431) << "NSPluginStream::totalSize - job=" << (void*)job << " size=" << KIO::number(size) << endl; Index: nsplugins/viewer/nsplugin.h =================================================================== --- nsplugins/viewer/nsplugin.h (revision 565997) +++ nsplugins/viewer/nsplugin.h (revision 565998) @@ -85,6 +85,7 @@ bool create( const QString& url, const QString& mimeType, void *notify, bool forceNotify = false ); int tries() { return _tries; } void inform( ); + void updateURL( const KURL& newURL ); class NSPluginInstance *_instance; uint16 _streamType; @@ -126,6 +127,7 @@ void totalSize(KIO::Job *job, KIO::filesize_t size); void mimetype(KIO::Job * job, const QString &mimeType); void result(KIO::Job *job); + void redirection(KIO::Job *job, const KURL& url); void resume(); protected: