rpms/mediatomb/F-8 mediatomb_update.patch, NONE, 1.1 mediatomb.spec, 1.1, 1.2

Marc Wiriadisastra (mwiriadi) fedora-extras-commits at redhat.com
Fri Jan 4 23:57:50 UTC 2008


Author: mwiriadi

Update of /cvs/pkgs/rpms/mediatomb/F-8
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv32157/F-8

Modified Files:
	mediatomb.spec 
Added Files:
	mediatomb_update.patch 
Log Message:


mediatomb_update.patch:

--- NEW FILE mediatomb_update.patch ---
diff -Naur mediatomb-0.10.0/src/config_manager.cc mediatomb-0.10.0_patched/src/config_manager.cc
--- mediatomb-0.10.0/src/config_manager.cc	2007-07-12 21:13:23.000000000 +0200
+++ mediatomb-0.10.0_patched/src/config_manager.cc	2008-01-04 18:42:37.000000000 +0100
@@ -349,11 +349,6 @@
     String dbDriver = getOption(_("/server/storage/attribute::driver"));
 
     // checking database driver options
-#ifdef HAVE_SQLITE3
-    prepare_path(_("/server/storage/database-file"), false, true);
-    NEW_OPTION(getOption(_("/server/storage/database-file")));
-    SET_OPTION(CFG_SERVER_STORAGE_SQLITE_DATABASE_FILE);
-#endif
 
 #ifdef HAVE_MYSQL
     NEW_OPTION(getOption(_("/server/storage/host"), 
@@ -399,6 +394,15 @@
     NEW_OPTION(dbDriver);
     SET_OPTION(CFG_SERVER_STORAGE_DRIVER);
 
+#ifdef HAVE_SQLITE3
+    if (dbDriver == "sqlite3")
+    {
+        prepare_path(_("/server/storage/database-file"), false, true);
+        NEW_OPTION(getOption(_("/server/storage/database-file")));
+        SET_OPTION(CFG_SERVER_STORAGE_SQLITE_DATABASE_FILE);
+    }
+#endif
+
 //    temp = checkOption_("/server/storage/database-file");
 //    check_path_ex(construct_path(temp));
 
diff -Naur mediatomb-0.10.0/src/metadata/extractor_handler.cc mediatomb-0.10.0_patched/src/metadata/extractor_handler.cc
--- mediatomb-0.10.0/src/metadata/extractor_handler.cc	2007-07-12 21:13:20.000000000 +0200
+++ mediatomb-0.10.0_patched/src/metadata/extractor_handler.cc	2008-01-04 18:35:31.000000000 +0100
@@ -325,7 +325,7 @@
     if (load_libraries_failed)
         return;
     Ref<Array<StringBase> > aux;
-    Ref<StringConverter> sc = StringConverter::m2i();
+    Ref<StringConverter> sc = StringConverter::i2i();
         
     if (! extractors)
     {
diff -Naur mediatomb-0.10.0/src/metadata/id3_handler.cc mediatomb-0.10.0_patched/src/metadata/id3_handler.cc
--- mediatomb-0.10.0/src/metadata/id3_handler.cc	2007-07-12 21:13:20.000000000 +0200
+++ mediatomb-0.10.0_patched/src/metadata/id3_handler.cc	2008-01-04 18:33:37.000000000 +0100
@@ -94,7 +94,14 @@
             break;
         case M_GENRE:
             genre = ID3_GetGenreNum(tag);
-            value = String((char *)(ID3_V1GENRE2DESCRIPTION(genre)));
+            if (ID3_V1GENRE2DESCRIPTION(genre))
+                value = String((char *)(ID3_V1GENRE2DESCRIPTION(genre)));
+
+            if (!string_ok(value))
+            {
+                ID3_retval = ID3_GetGenre(tag); 
+                value = String(ID3_retval);
+            }
             break;
         case M_DESCRIPTION:
             ID3_retval = ID3_GetComment(tag);
@@ -134,8 +141,7 @@
     const Mp3_Headerinfo* header;
     
     // the location has already been checked by the setMetadata function
-    if (tag.Link(item->getLocation().c_str()) == 0)
-        return;
+    tag.Link(item->getLocation().c_str()); 
 
     for (int i = 0; i < M_MAX; i++)
         addID3Field((metadata_fields_t) i, &tag, item);
diff -Naur mediatomb-0.10.0/src/metadata/taglib_handler.cc mediatomb-0.10.0_patched/src/metadata/taglib_handler.cc
--- mediatomb-0.10.0/src/metadata/taglib_handler.cc	2007-07-12 21:13:20.000000000 +0200
+++ mediatomb-0.10.0_patched/src/metadata/taglib_handler.cc	2008-01-04 18:34:35.000000000 +0100
@@ -72,7 +72,7 @@
     if (tag->isEmpty())
         return;
 
-    Ref<StringConverter> sc = StringConverter::m2i();
+    Ref<StringConverter> sc = StringConverter::i2i(); // sure is sure
     
     switch (field)
     {
@@ -118,7 +118,7 @@
     }
 
     if ((field != M_DATE) && (field != M_TRACKNUMBER))
-        value = String((char *)val.toCString());
+        value = String((char *)val.toCString(true));
 
     value = trim_string(value);
     
@@ -204,7 +204,8 @@
         if (art->picture().size() < 1)
             return;
 
-        String art_mimetype = String(art->mimeType().toCString());
+        Ref<StringConverter> sc = StringConverter::i2i();
+        String art_mimetype = sc->convert(String(art->mimeType().toCString(true)));
         // saw that simply "PNG" was used with some mp3's, so mimetype setting
         // was probably invalid
         if (!string_ok(art_mimetype) || (art_mimetype.index('/') == -1))
diff -Naur mediatomb-0.10.0/src/string_converter.cc mediatomb-0.10.0_patched/src/string_converter.cc
--- mediatomb-0.10.0/src/string_converter.cc	2007-07-12 21:13:23.000000000 +0200
+++ mediatomb-0.10.0_patched/src/string_converter.cc	2008-01-04 18:39:36.000000000 +0100
@@ -228,6 +228,9 @@
         _(DEFAULT_INTERNAL_CHARSET)));
     return conv;
 }
+#endif
+
+#if defined (HAVE_JS) || defined(HAVE_TAGLIB) || defined(HAVE_EXTRACTOR)
 
 Ref<StringConverter> StringConverter::i2i()
 {
diff -Naur mediatomb-0.10.0/src/string_converter.h mediatomb-0.10.0_patched/src/string_converter.h
--- mediatomb-0.10.0/src/string_converter.h	2007-07-12 21:13:23.000000000 +0200
+++ mediatomb-0.10.0_patched/src/string_converter.h	2008-01-04 18:40:09.000000000 +0100
@@ -65,6 +65,8 @@
     /// \brief playlist to internal
     static zmm::Ref<StringConverter> p2i();
 
+#endif
+#if defined(HAVE_JS) || defined(HAVE_TAGLIB) || defined(HAVE_EXTRACTOR)
     /// \brief safeguard - internal to internal - needed to catch some
     /// scenarious where the user may have forgotten to add proper conversion
     /// in the script.
diff -Naur mediatomb-0.10.0/tombupnp/upnp/src/gena/gena_device.c mediatomb-0.10.0_patched/tombupnp/upnp/src/gena/gena_device.c
--- mediatomb-0.10.0/tombupnp/upnp/src/gena/gena_device.c	2007-07-12 21:13:37.000000000 +0200
+++ mediatomb-0.10.0_patched/tombupnp/upnp/src/gena/gena_device.c	2008-01-03 23:23:29.000000000 +0100
@@ -251,7 +251,7 @@
     // send msg (note +1 for propertyset; null-terminator is also sent)
     if( ( ret_code = http_SendMessage( &info, &timeout,
                                        "bb",
-                                       start_msg.buf, start_msg.length,
+                                       start_msg.buf, (size_t)start_msg.length,
                                        propertySet,
                                        strlen( propertySet ) + 1 ) ) !=
         0 ) {
@@ -590,7 +590,7 @@
     }
 
     sprintf( headers, "CONTENT-TYPE: text/xml; charset=UTF-8\r\nCONTENT-LENGTH: "
-             "%d\r\nNT: upnp:event\r\nNTS: upnp:propchange\r\n",
+             "%zu\r\nNT: upnp:event\r\nNTS: upnp:propchange\r\n",
              strlen( propertySet ) + 1 );
 
     //schedule thread for initial notification
@@ -775,8 +775,8 @@
     }
 
     sprintf( headers, "CONTENT-TYPE: text/xml; charset=UTF-8\r\nCONTENT-LENGTH: "
-             OFF_T_SPRINTF"d" "\r\nNT: upnp:event\r\nNTS: upnp:propchange\r\n",
-             (off_t) strlen( propertySet ) + 1 );
+             "%ld" "\r\nNT: upnp:event\r\nNTS: upnp:propchange\r\n",
+             (long) strlen( propertySet ) + 1 );
 
     //schedule thread for initial notification
 
@@ -912,8 +912,8 @@
     //changed to add null terminator at end of content
     //content length = (length in bytes of property set) + null char
     sprintf( headers, "CONTENT-TYPE: text/xml; charset=UTF-8\r\nCONTENT-LENGTH: "
-             OFF_T_SPRINTF"d" "\r\nNT: upnp:event\r\nNTS: upnp:propchange\r\n",
-             (off_t) strlen( propertySet ) + 1 );
+             "%ld" "\r\nNT: upnp:event\r\nNTS: upnp:propchange\r\n",
+             (long) strlen( propertySet ) + 1 );
 
     HandleLock(  );
 
@@ -1073,9 +1073,9 @@
     }
     //changed to add null terminator at end of content
     //content length = (length in bytes of property set) + null char
-    sprintf( headers, "CONTENT-TYPE: text/xml; charset=UTF-8\r\nCONTENT-LENGTH: " OFF_T_SPRINTF"d" "\r\nNT:"
+    sprintf( headers, "CONTENT-TYPE: text/xml; charset=UTF-8\r\nCONTENT-LENGTH: " "%ld" "\r\nNT:"
              " upnp:event\r\nNTS: upnp:propchange\r\n",
-             (off_t) strlen( propertySet ) + 1 );
+             (long) strlen( propertySet ) + 1 );
 
     HandleLock(  );
 
@@ -1194,7 +1194,7 @@
     }
 
     return_code = http_SendMessage( info, &upnp_timeout, "b",
-                                    response.buf, response.length );
+                                    response.buf, (size_t)response.length );
 
     membuffer_destroy( &response );
 
diff -Naur mediatomb-0.10.0/tombupnp/upnp/src/genlib/net/http/httpreadwrite.c mediatomb-0.10.0_patched/tombupnp/upnp/src/genlib/net/http/httpreadwrite.c
--- mediatomb-0.10.0/tombupnp/upnp/src/genlib/net/http/httpreadwrite.c	2007-07-12 21:13:35.000000000 +0200
+++ mediatomb-0.10.0_patched/tombupnp/upnp/src/genlib/net/http/httpreadwrite.c	2008-01-03 23:25:38.000000000 +0100
@@ -70,6 +70,7 @@
  #include <unistd.h>
  #include <sys/utsname.h>
  #include <fcntl.h>
+ #include <inttypes.h>
 #else
  #include <winsock2.h>
  #include <malloc.h>
@@ -297,7 +298,7 @@
 *	IN const char* fmt parameter										
 *	fmt types:															
 *		'f':	arg = const char * file name							
-*		'm':	arg1 = const char * mem_buffer; arg2= size_t buf_length	
+*		'b':	arg1 = const char * mem_buffer; arg2= size_t buf_length	
 *	E.g.:																
 *		char *buf = "POST /xyz.cgi http/1.1\r\n\r\n";					
 *		char *filename = "foo.dat";										
@@ -443,7 +444,7 @@
                     memcpy( file_buf + num_read, "\r\n", 2 );
 
                     //Hex length for the chunk size.
-                    sprintf( Chunk_Header, OFF_T_SPRINTF"x", num_read );
+                    sprintf( Chunk_Header, "%"PRIx64, (int64_t)num_read );
 
                     //itoa(num_read,Chunk_Header,16); 
                     strcat( Chunk_Header, "\r\n" );
@@ -484,6 +485,20 @@
                     }
                 }
             }                   //While
+            // patch from the maemo forums
+            // https://garage.maemo.org/tracker/index.php?func=detail&aid=88&group_id=74&atid=341
+            if( num_read != 0 ) // not really necessary
+            {
+                if( Instr && Instr->IsChunkActive) {
+                    num_written = sock_write( info,
+                                              "0\r\n\r\n",
+                                              strlen("0\r\n\r\n"),
+                                              TimeOut );
+                } else {
+                    RetVal = UPNP_E_FILE_READ_ERROR;
+                }
+            }
+            // --            
           Cleanup_File:
             va_end( argp );
             if( Instr && Instr->IsVirtualFile )
@@ -573,7 +588,7 @@
     }
     // send request
     ret_code = http_SendMessage( &info, &timeout_secs, "b",
-                                 request, request_length );
+                                 request, (size_t)request_length );
     if( ret_code != 0 ) {
         sock_destroy( &info, SD_BOTH );
         parser_response_init( response, req_method );
@@ -660,13 +675,13 @@
     *temp = '/';
     DBGONLY( UpnpPrintf
              ( UPNP_INFO, HTTP, __FILE__, __LINE__,
-               "HOSTNAME : %s Length : %d\n", hoststr, hostlen );
+               "HOSTNAME : %s Length : %zu\n", hoststr, hostlen );
          )
 
         ret_code = http_MakeMessage( &request, 1, 1, "QsbcDCUc",
                                      HTTPMETHOD_GET, url.pathquery.buff,
-                                     url.pathquery.size, "HOST: ", hoststr,
-                                     hostlen );
+                                     (size_t)url.pathquery.size, "HOST: ", 
+                                     hoststr, (size_t)hostlen );
     if( ret_code != 0 ) {
         DBGONLY( UpnpPrintf
                  ( UPNP_INFO, HTTP, __FILE__, __LINE__,
@@ -821,19 +836,19 @@
         if( contentLength >= 0 ) {
         ret_code = http_MakeMessage( request, 1, 1, "QsbcDCUTNc",
                                      HTTPMETHOD_POST, url->pathquery.buff,
-                                     url->pathquery.size, "HOST: ",
-                                     hoststr, hostlen, contentType,
+                                     (size_t)(url->pathquery.size), "HOST: ",
+                                     hoststr, (size_t)hostlen, contentType,
                                      contentLength );
     } else if( contentLength == UPNP_USING_CHUNKED ) {
         ret_code = http_MakeMessage( request, 1, 1, "QsbcDCUTKc",
                                      HTTPMETHOD_POST, url->pathquery.buff,
-                                     url->pathquery.size, "HOST: ",
-                                     hoststr, hostlen, contentType );
+                                     (size_t)(url->pathquery.size), "HOST: ",
+                                     hoststr, (size_t)hostlen, contentType );
     } else if( contentLength == UPNP_UNTIL_CLOSE ) {
         ret_code = http_MakeMessage( request, 1, 1, "QsbcDCUTc",
                                      HTTPMETHOD_POST, url->pathquery.buff,
-                                     url->pathquery.size, "HOST: ",
-                                     hoststr, hostlen, contentType );
+                                     (size_t)(url->pathquery.size), "HOST: ",
+                                     hoststr, (size_t)hostlen, contentType );
     } else {
         ret_code = UPNP_E_INVALID_PARAM;
     }
@@ -901,7 +916,7 @@
 
             if ( tempbuf == NULL) return UPNP_E_OUTOF_MEMORY;
 
-            sprintf( tempbuf, OFF_T_SPRINTF"x" "\r\n", ( *size ) );    //begin chunk
+            sprintf( tempbuf, "%"PRIx64 "\r\n", (int64_t)( *size ) );    //begin chunk
             tempSize = strlen( tempbuf );
             memcpy( tempbuf + tempSize, buf, ( *size ) );
             memcpy( tempbuf + tempSize + ( *size ), "\r\n", 2 );    //end of chunk
@@ -1065,7 +1080,7 @@
     }
     // send request
     ret_code = http_SendMessage( &handle->sock_info, &timeout, "b",
-                                 request.buf, request.length );
+                                 request.buf, (size_t)request.length );
     if( ret_code != 0 ) {
         sock_destroy( &handle->sock_info, SD_BOTH );
     }
@@ -1155,8 +1170,8 @@
     }
 
     ret_code = http_MakeMessage( request, 1, 1, "QsbcDCUc",
-                                 HTTPMETHOD_GET, querystr, querylen,
-                                 "HOST: ", hoststr, hostlen );
+                                 HTTPMETHOD_GET, querystr, (size_t)querylen,
+                                 "HOST: ", hoststr, (size_t)hostlen );
 
     if( ret_code != 0 ) {
         DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
@@ -1659,7 +1674,7 @@
     }
     // send request
     ret_code = http_SendMessage( &handle->sock_info, &timeout, "b",
-                                 request.buf, request.length );
+                                 request.buf, (size_t)request.length );
     if( ret_code != 0 ) {
         sock_destroy( &handle->sock_info, SD_BOTH );
         goto errorHandler;
@@ -1758,7 +1773,7 @@
     if( ret == 0 ) {
         timeout = HTTP_DEFAULT_TIMEOUT;
         ret = http_SendMessage( info, &timeout, "b",
-                                membuf.buf, membuf.length );
+                                membuf.buf, (size_t)membuf.length );
     }
 
     membuffer_destroy( &membuf );
@@ -1936,7 +1951,7 @@
         {
             bignum = ( off_t )va_arg( argp, off_t );
 
-            sprintf( tempbuf, OFF_T_SPRINTF"d", bignum );
+            sprintf( tempbuf, "%"PRId64, (int64_t)bignum );
 
             if( membuffer_append( buf, tempbuf, strlen( tempbuf ) ) != 0 ) {
                 goto error_handler;
@@ -2105,8 +2120,8 @@
 
             if( http_MakeMessage
                 ( buf, http_major_version, http_minor_version, "Q" "sbc",
-                  method, url.pathquery.buff, url.pathquery.size, "HOST: ",
-                  url.hostport.text.buff, url.hostport.text.size ) != 0 ) {
+                  method, url.pathquery.buff, (size_t)url.pathquery.size, "HOST: ",
+                  url.hostport.text.buff, (size_t)(url.hostport.text.size) ) != 0 ) {
                 goto error_handler;
             }
         }
@@ -2246,10 +2261,10 @@
                                         "QsbcGDCUc",
                                         HTTPMETHOD_GET,
                                         url->pathquery.buff,
-                                        url->pathquery.size,
+                                        (size_t)(url->pathquery.size),
                                         "HOST: ",
                                         hoststr,
-                                        hostlen, pRangeSpecifier );
+                                        (size_t)hostlen, pRangeSpecifier );
 
         if( errCode != 0 ) {
             DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
@@ -2388,7 +2403,7 @@
         // send request
         errCode = http_SendMessage( &handle->sock_info,
                                     &timeout,
-                                    "b", request.buf, request.length );
+                                    "b", request.buf, (size_t)request.length );
 
         if( errCode != UPNP_E_SUCCESS ) {
             sock_destroy( &handle->sock_info, SD_BOTH );
diff -Naur mediatomb-0.10.0/tombupnp/upnp/src/genlib/net/http/webserver.c mediatomb-0.10.0_patched/tombupnp/upnp/src/genlib/net/http/webserver.c
--- mediatomb-0.10.0/tombupnp/upnp/src/genlib/net/http/webserver.c	2007-07-12 21:13:35.000000000 +0200
+++ mediatomb-0.10.0_patched/tombupnp/upnp/src/genlib/net/http/webserver.c	2008-01-04 02:03:29.000000000 +0100
@@ -68,6 +68,7 @@
 
 #ifndef WIN32
  #include <unistd.h>
+ #include <inttypes.h>
 #endif
 #include <sys/stat.h>
 #include "ithread.h"
@@ -655,8 +656,8 @@
     info->http_header = NULL;
 
     DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
-                         "file info: %s, length: " OFF_T_SPRINTF"d" ", last_mod=%s readable=%d\n",
-                         filename, info->file_length,
+                         "file info: %s, length: " "%"PRIx64 ", last_mod=%s readable=%d\n",
+                         filename, (int64_t)info->file_length,
                          asctime( gmtime( &info->last_modified ) ),
                          info->is_readable ); )
 
@@ -901,8 +902,8 @@
     char *Ptr,
      *Tok;
     int i;
-    off_t F = -1;
-    off_t L = -1;
+    int64_t F = -1;
+    int64_t L = -1;
     off_t Is_Suffix_byte_Range = 1;
 
     if( *SrcRangeStr == NULL )
@@ -913,7 +914,7 @@
     if( ( Ptr = strstr( Tok, "-" ) ) == NULL )
         return -1;
     *Ptr = ' ';
-    sscanf( Tok, OFF_T_SPRINTF"d" OFF_T_SPRINTF"d", &F, &L );
+    sscanf( Tok, "%"SCNd64"%"SCNd64, &F, &L );
 
     if( F == -1 || L == -1 ) {
         *Ptr = '-';
@@ -928,14 +929,14 @@
         }
 
         if( Is_Suffix_byte_Range ) {
-            *FirstByte = L;
-            *LastByte = F;
+            *FirstByte = (off_t)L;
+            *LastByte = (off_t)F;
             return 1;
         }
     }
 
-    *FirstByte = F;
-    *LastByte = L;
+    *FirstByte = (off_t)F;
+    *LastByte = (off_t)L;
     return 1;
 
 }
@@ -1008,40 +1009,42 @@
             Instr->RangeOffset = FirstByte;
             Instr->ReadSendSize = LastByte - FirstByte + 1;
             sprintf( Instr->RangeHeader, "CONTENT-RANGE: bytes " 
-                                          OFF_T_SPRINTF"d" "-" 
-                                          OFF_T_SPRINTF"d" "/" 
-                                          OFF_T_SPRINTF"d" "\r\n", 
-                                          FirstByte, LastByte, 
-                                          FileLength );   //Data between two range.
+                                          "%"PRId64 "-" 
+                                          "%"PRId64 "/" 
+                                          "%"PRId64 "\r\n", 
+                                          (int64_t)FirstByte, 
+                                          (int64_t)LastByte, 
+                                          (int64_t)FileLength );   //Data between two range.
         } else if( FirstByte >= 0 && LastByte == -1
                    && FirstByte < FileLength ) {
             Instr->RangeOffset = FirstByte;
             Instr->ReadSendSize = FileLength - FirstByte;
             sprintf( Instr->RangeHeader,
                      "CONTENT-RANGE: bytes " 
-                     OFF_T_SPRINTF"d" "-"
-                     OFF_T_SPRINTF"d" "/"
-                     OFF_T_SPRINTF"d" "\r\n", FirstByte,
-                     FileLength - 1, FileLength );
+                     "%"PRId64 "-"
+                     "%"PRId64 "/"
+                     "%"PRId64 "\r\n", (int64_t)FirstByte,
+                     (int64_t)(FileLength - 1), (int64_t)FileLength );
         } else if( FirstByte == -1 && LastByte > 0 ) {
             if( LastByte >= FileLength ) {
                 Instr->RangeOffset = 0;
                 Instr->ReadSendSize = FileLength;
                 sprintf( Instr->RangeHeader,
                          "CONTENT-RANGE: bytes 0-"
-                         OFF_T_SPRINTF"d" "/"
-                         OFF_T_SPRINTF"d" "\r\n",
-                         FileLength - 1, FileLength );
+                         "%"PRId64 "/"
+                         "%"PRId64 "\r\n",
+                         (int64_t)(FileLength - 1), (int64_t)FileLength );
             } else {
                 Instr->RangeOffset = FileLength - LastByte;
                 Instr->ReadSendSize = LastByte;
                 sprintf( Instr->RangeHeader,
                          "CONTENT-RANGE: bytes "
-                         OFF_T_SPRINTF"d" "-"
-                         OFF_T_SPRINTF"d" "/"
-                         OFF_T_SPRINTF"d" "\r\n",
-                         FileLength - LastByte + 1, FileLength,
-                         FileLength );
+                         "%"PRId64 "-"
+                         "%"PRId64 "/"
+                         "%"PRId64 "\r\n",
+                         (int64_t)(FileLength - LastByte + 1), 
+                         (int64_t)FileLength,
+                         (int64_t)FileLength );
             }
         } else {
             free( RangeInput );
@@ -1437,6 +1440,12 @@
     if( ( err_code =
           CheckOtherHTTPHeaders( req, RespInstr,
                                  finfo.file_length ) ) != HTTP_OK ) {
+        if (using_virtual_dir && (req->method != HTTPMETHOD_POST) &&
+           (*Fp != NULL))
+        {
+            pVirtualDirCallback->close(*Fp);
+            *Fp = NULL;
+        }
         goto error_handler;
     }
 
@@ -1785,13 +1794,13 @@
         switch ( rtype ) {
             case RESP_FILEDOC: // send file, I = further instruction to send data.
                 http_SendMessage( info, &timeout, "Ibf", &RespInstr,
-                                  headers.buf, headers.length,
+                                  headers.buf, (size_t)headers.length,
                                   filename.buf );
                 break;
 
             case RESP_XMLDOC:  // send xmldoc , I = further instruction to send data.
                 http_SendMessage( info, &timeout, "Ibb", &RespInstr,
-                                  headers.buf, headers.length,
+                                  headers.buf, (size_t)headers.length,
                                   xmldoc.doc.buf, xmldoc.doc.length );
                 alias_release( &xmldoc );
                 break;
@@ -1803,13 +1812,13 @@
                    filename.buf );  
                  */
                 http_SendMessage( info, &timeout, "Ibf", &RespInstr,
-                                  headers.buf, headers.length,
+                                  headers.buf, (size_t)headers.length,
                                   filename.buf, Fp );
                 break;
 
             case RESP_HEADERS: // headers only
                 http_SendMessage( info, &timeout, "b",
-                                  headers.buf, headers.length );
+                                  headers.buf, (size_t)headers.length );
 
                 break;
             case RESP_POST:    // headers only
@@ -1822,7 +1831,7 @@
                                   "text/html", gUserHTTPHeaders );
 
                 http_SendMessage( info, &timeout, "b", headers.buf,
-                                  headers.length );
+                                  (size_t)headers.length );
                 break;
 
             default:
diff -Naur mediatomb-0.10.0/tombupnp/upnp/src/soap/soap_ctrlpt.c mediatomb-0.10.0_patched/tombupnp/upnp/src/soap/soap_ctrlpt.c
--- mediatomb-0.10.0/tombupnp/upnp/src/soap/soap_ctrlpt.c	2007-07-12 21:13:36.000000000 +0200
+++ mediatomb-0.10.0_patched/tombupnp/upnp/src/soap/soap_ctrlpt.c	2008-01-04 02:04:46.000000000 +0100
@@ -677,9 +677,10 @@
                           &url, (off_t)(xml_start_len + action_str_len + xml_end_len),   // content-length
                           ContentTypeHeader,
                           "SOAPACTION: \"", service_type, "#", name.buf,
-                          name.length, "\"", xml_start, xml_start_len,
-                          action_str, action_str_len, xml_end,
-                          xml_end_len ) != 0 ) {
+                          (size_t)name.length, "\"", 
+                          xml_start, (size_t)xml_start_len,
+                          action_str, (size_t)action_str_len, xml_end,
+                          (size_t)xml_end_len ) != 0 ) {
         goto error_handler;
     }
 
@@ -840,14 +841,14 @@
                                         xml_end_len), // content-length
                           ContentTypeHeader,
                           "SOAPACTION: \"", service_type, "#", name.buf,
-                          name.length, "\"",
-                          xml_start, xml_start_len,
-                          xml_header_start, xml_header_start_len,
-                          xml_header_str, xml_header_str_len,
-                          xml_header_end, xml_header_end_len,
-                          xml_body_start, xml_body_start_len,
-                          action_str, action_str_len,
-                          xml_end, xml_end_len ) != 0 ) {
+                          (size_t)name.length, "\"",
+                          xml_start, (size_t)xml_start_len,
+                          xml_header_start, (size_t)xml_header_start_len,
+                          xml_header_str, (size_t)xml_header_str_len,
+                          xml_header_end, (size_t)xml_header_end_len,
+                          xml_body_start, (size_t)xml_body_start_len,
+                          action_str, (size_t)action_str_len,
+                          xml_end, (size_t)xml_end_len ) != 0 ) {
         goto error_handler;
     }
 
@@ -945,10 +946,10 @@
     if( http_MakeMessage( &request, 1, 1, "Q" "sbc" "N" "s" "s" "U" "c" "sss", 
                           SOAPMETHOD_POST, 
                           path.buf, 
-                          path.length, 
+                          (size_t)path.length, 
                           "HOST: ", 
                           host.buf, 
-                          host.length, 
+                          (size_t)host.length, 
                           (off_t)(strlen( xml_start ) + strlen( var_name ) + strlen( xml_end )),   // content-length
                           ContentTypeHeader,
                           "SOAPACTION: \"urn:schemas"
diff -Naur mediatomb-0.10.0/tombupnp/upnp/src/soap/soap_device.c mediatomb-0.10.0_patched/tombupnp/upnp/src/soap/soap_device.c
--- mediatomb-0.10.0/tombupnp/upnp/src/soap/soap_device.c	2007-07-12 21:13:36.000000000 +0200
+++ mediatomb-0.10.0_patched/tombupnp/upnp/src/soap/soap_device.c	2008-01-04 02:05:04.000000000 +0100
@@ -261,7 +261,7 @@
     }
     // send err msg
     http_SendMessage( info, &timeout_secs, "b",
-                      headers.buf, headers.length );
+                      headers.buf, (size_t)headers.length );
 
     membuffer_destroy( &headers );
 }
@@ -325,7 +325,7 @@
     }
     // send msg
     http_SendMessage( info, &timeout_secs, "b",
-                      response.buf, response.length );
+                      response.buf, (size_t)response.length );
 
     membuffer_destroy( &response );
 }
@@ -745,7 +745,7 @@
     }
     // send whole msg
     ret_code = http_SendMessage( info, &timeout_secs, "bbbb",
-                                 headers.buf, headers.length,
+                                 headers.buf, (size_t)headers.length,
                                  start_body, strlen( start_body ),
                                  xml_response, strlen( xml_response ),
                                  end_body, strlen( end_body ) );
diff -Naur mediatomb-0.10.0/tombupnp/upnp/src/ssdp/ssdp_device.c mediatomb-0.10.0_patched/tombupnp/upnp/src/ssdp/ssdp_device.c
--- mediatomb-0.10.0/tombupnp/upnp/src/ssdp/ssdp_device.c	2007-07-12 21:13:37.000000000 +0200
+++ mediatomb-0.10.0_patched/tombupnp/upnp/src/ssdp/ssdp_device.c	2008-01-04 02:05:32.000000000 +0100
@@ -350,7 +350,7 @@
         ret_code = http_MakeMessage( &buf, 1, 1,
                                      "Q" "sssdc" "sdc" "ssc" "ssc" "ssc"
                                      "S" "ssc" "A" "c", HTTPMETHOD_NOTIFY, "*",
-                                     1, "HOST: ", SSDP_IP, ":", SSDP_PORT,
+                                     (size_t)1, "HOST: ", SSDP_IP, ":", SSDP_PORT,
                                      "CACHE-CONTROL: max-age=", duration,
                                      "LOCATION: ", location, "NT: ", nt,
                                      "NTS: ", nts, 


Index: mediatomb.spec
===================================================================
RCS file: /cvs/pkgs/rpms/mediatomb/F-8/mediatomb.spec,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- mediatomb.spec	3 Jan 2008 08:37:12 -0000	1.1
+++ mediatomb.spec	4 Jan 2008 23:57:17 -0000	1.2
@@ -1,13 +1,14 @@
 Version: 0.10.0
 Summary: UPnP AV MediaServer 
 Name: mediatomb
-Release: 7%{?dist}
+Release: 8%{?dist}
 Summary: MediaTomb - UPnP AV Mediaserver for Linux
 License: GPLv2
 Group: Applications/Multimedia
 Source: http://downloads.sourceforge.net/mediatomb/%{name}-%{version}.tar.gz
 Patch0: mediatomb-service.patch
 Patch1: mediatomb-conf-fedora.patch
+Patch2: mediatomb_update.patch
 URL: http://mediatomb.cc
 Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) 
 BuildRequires: sqlite-devel, mysql-devel, libexif-devel, id3lib-devel, file-devel, js-devel, zlib-devel, taglib-devel, libextractor-devel
@@ -28,6 +29,7 @@
 %setup -q
 %patch0 -p1
 %patch1 -p1
+%patch2 -p1
 
 %build
 %configure --enable-libextractor
@@ -51,8 +53,8 @@
 /var/log/mediatomb {
 create 644 root root
 	monthly
-        compress
-        missingok
+	compress
+	missingok
 }
 EOF
 
@@ -89,6 +91,13 @@
 %{_initrddir}/mediatomb
 
 %changelog
+* Sat Jan 5 2008 Marc Wiriadisastra <marc at mwiriadi.id.au> 0.10.0-8
+- Added patch from upstream fixes the following issues (no bugs #)
+- fixes 64bit issues in libupnp
+- adds correct handling of chunked encoded data in libupnp
+- fixes regarding id3lib and taglib metadata extraction
+- fix where sqlite database file was checked in configuration even if mysql driver was selected
+
 * Thu Jan 3 2008 Marc Wiriadisastra <marc at mwiriadi.id.au> 0.10.0-7
 - Added mysql-devel to build requires
 




More information about the fedora-extras-commits mailing list