Ticket #4648: myth_handle_invalid_bytes_range_upnp.patch

File myth_handle_invalid_bytes_range_upnp.patch, 2.0 KB (added by anonymous, 13 years ago)

Patch to fix upnp invalid bytes range request.

  • libs/libmythupnp/httprequest.cpp

     
    332332
    333333        if (sRange.length() > 0)
    334334        {
    335             if ( bRange = ParseRange( sRange, llSize, &llStart, &llEnd ) )
     335            bRange = ParseRange( sRange, llSize, &llStart, &llEnd );
     336            if ((llSize >= llStart) && (llSize >= llEnd) && (llEnd >= llStart) )
    336337            {
    337                 m_nResponseStatus = 206;
    338                 m_mapRespHeaders[ "Content-Range" ] = QString("bytes %1-%2/%3")
    339                                                               .arg( llStart )
    340                                                               .arg( llEnd   )
    341                                                               .arg( llSize  );
    342                 llSize = (llEnd - llStart) + 1;
     338                if (bRange == true)
     339                {
     340                    m_nResponseStatus = 206;
     341                    m_mapRespHeaders[ "Content-Range" ] = QString("bytes %1-%2/%3")
     342                                                                  .arg( llStart )
     343                                                                  .arg( llEnd   )
     344                                                                  .arg( llSize  );
     345                    llSize = (llEnd - llStart) + 1;
     346                }
    343347            }
     348            else
     349            {
     350                m_nResponseStatus = 416;
     351                llSize = 0;
     352                VERBOSE(VB_UPNP,
     353                    QString("HTTPRequest::SendResponseFile(%1) - invalid bytes range %2-%3/%4")
     354                                                                .arg(sFileName)
     355                                                                .arg(llStart)
     356                                                                .arg(llEnd)
     357                                                                .arg(llSize));
     358            }
    344359        }
    345360       
    346361        // DSM-?20 specific response headers