Changeset 13289


Ignore:
Timestamp:
Apr 19, 2012, 1:08:23 AM (9 years ago)
Author:
livings124
Message:

#4878 update miniupnpc to 1.6.20120410

Location:
trunk/third-party/miniupnp
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/third-party/miniupnp/Changelog.txt

    r13258 r13289  
    1 $Id: Changelog.txt,v 1.163 2012/03/15 01:02:02 nanard Exp $
     1$Id: Changelog.txt,v 1.166 2012/04/09 12:49:26 nanard Exp $
    22miniUPnP client Changelog.
    33
     42012/04/09:
     5  Only try to fetch XML description once in UPNP_GetValidIGD()
     6  Added -ansi flag to compilation, and fixed C++ comments to ANSI C comments.
     7
     82012/04/05:
     9  minor improvements to minihttptestserver.c
     10
    4112012/03/15:
    5   upnperrors.c returns valid error string for unrecognized error codes 
     12  upnperrors.c returns valid error string for unrecognized error codes
    613
    7142012/03/08:
     
    271278
    2722792008/07/17:
    273   #define SOAPPREFIX "s" in miniupnpc.c in order to remove SOAP-ENV... 
     280  #define SOAPPREFIX "s" in miniupnpc.c in order to remove SOAP-ENV...
    274281
    2752822008/07/14:
     
    293300
    2943012008/04/23:
    295   Completely rewrite igd_desc_parse.c in order to be compatible with 
     302  Completely rewrite igd_desc_parse.c in order to be compatible with
    296303  Linksys WAG200G
    297304  Added testigddescparse
     
    316323
    3173242007/12/22:
    318   Adding upnperrors.c/h to provide a strupnperror() function 
     325  Adding upnperrors.c/h to provide a strupnperror() function
    319326  used to translate UPnP error codes to string.
    320327
  • trunk/third-party/miniupnp/miniupnpc.c

    r13262 r13289  
    1 /* $Id: miniupnpc.c,v 1.103 2012/03/05 19:42:46 nanard Exp $ */
     1/* $Id: miniupnpc.c,v 1.104 2012/04/09 12:40:11 nanard Exp $ */
    22/* Project : miniupnp
    33 * Web : http://miniupnp.free.fr/
     
    1919
    2020#if !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(MACOSX) && !defined(_WIN32)
    21 /* miniupnpc's unmodified source says _BSD_SOURCE or _GNU_SOURCE is needed
    22    for struct ip_mreqn... since the above #if chain rules out the former,
    23    use the latter here */
    24 #define _GNU_SOURCE
    2521#define HAS_IP_MREQN
    2622#endif
     
    117113 *   pointer - OK
    118114 *   NULL - error */
    119 static char *
    120 simpleUPnPcommand2(int s, const char * url, const char * service,
    121                    const char * action, struct UPNParg * args,
    122                    int * bufsize, const char * httpversion)
     115char * simpleUPnPcommand2(int s, const char * url, const char * service,
     116                       const char * action, struct UPNParg * args,
     117                       int * bufsize, const char * httpversion)
    123118{
    124119        char hostname[MAXHOSTNAMELEN+1];
     
    592587#else /* #ifdef NO_GETADDRINFO */
    593588                memset(&hints, 0, sizeof(hints));
    594                 hints.ai_family = AF_UNSPEC; // AF_INET6 or AF_INET
     589                hints.ai_family = AF_UNSPEC; /* AF_INET6 or AF_INET */
    595590                hints.ai_socktype = SOCK_DGRAM;
    596591                /*hints.ai_flags = */
     
    611606                        n = sendto(sudp, bufr, n, 0, p->ai_addr, p->ai_addrlen);
    612607                        if (n < 0) {
     608#ifdef DEBUG
     609                                char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];
     610                                if (getnameinfo(p->ai_addr, p->ai_addrlen, hbuf, sizeof(hbuf), sbuf,
     611                                                sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV) == 0) {
     612                                        fprintf(stderr, "host:%s port:%s\n", hbuf, sbuf);
     613                                }
     614#endif
    613615                                PRINT_SOCKET_ERROR("sendto");
    614616                                continue;
     
    822824/* UPNP_GetValidIGD() :
    823825 * return values :
     826 *    -1 = Internal error
    824827 *     0 = NO IGD found
    825828 *     1 = A valid connected IGD has been found
     
    838841                                 char * lanaddr, int lanaddrlen)
    839842{
    840         char * descXML;
    841         int descXMLsize = 0;
     843        struct xml_desc {
     844                char * xml;
     845                int size;
     846        } * desc = NULL;
    842847        struct UPNPDev * dev;
    843848        int ndev = 0;
    844         int state; /* state 1 : IGD connected. State 2 : IGD. State 3 : anything */
     849        int i;
     850        int state = -1; /* state 1 : IGD connected. State 2 : IGD. State 3 : anything */
    845851        if(!devlist)
    846852        {
     
    850856                return 0;
    851857        }
     858        for(dev = devlist; dev; dev = dev->pNext)
     859                ndev++;
     860        if(ndev > 0)
     861        {
     862                desc = calloc(ndev, sizeof(struct xml_desc));
     863                if(!desc)
     864                        return -1; /* memory allocation error */
     865        }
    852866        for(state = 1; state <= 3; state++)
    853867        {
    854                 for(dev = devlist; dev; dev = dev->pNext)
     868                for(dev = devlist, i = 0; dev; dev = dev->pNext, i++)
    855869                {
    856870                        /* we should choose an internet gateway device.
    857871                        * with st == urn:schemas-upnp-org:device:InternetGatewayDevice:1 */
    858                         descXML = miniwget_getaddr(dev->descURL, &descXMLsize,
    859                                                         lanaddr, lanaddrlen);
    860                         if(descXML)
     872                        if(state == 1)
    861873                        {
    862                                 ndev++;
     874                                desc[i].xml = miniwget_getaddr(dev->descURL, &(desc[i].size),
     875                                                                   lanaddr, lanaddrlen);
     876#ifdef DEBUG
     877                                if(!desc[i].xml)
     878                                {
     879                                        printf("error getting XML description %s\n", dev->descURL);
     880                                }
     881#endif
     882                        }
     883                        if(desc[i].xml)
     884                        {
    863885                                memset(data, 0, sizeof(struct IGDdatas));
    864886                                memset(urls, 0, sizeof(struct UPNPUrls));
    865                                 parserootdesc(descXML, descXMLsize, data);
    866                                 free(descXML);
    867                                 descXML = NULL;
     887                                parserootdesc(desc[i].xml, desc[i].size, data);
    868888                                if(0==strcmp(data->CIF.servicetype,
    869889                                   "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1")
     
    878898#endif
    879899                                  if((state >= 2) || UPNPIGD_IsConnected(urls, data))
    880                                         return state;
     900                                        goto free_and_return;
    881901                                  FreeUPNPUrls(urls);
    882902                                  if(data->second.servicetype[0] != '\0') {
     
    896916#endif
    897917                                    if((state >= 2) || UPNPIGD_IsConnected(urls, data))
    898                                           return state;
     918                                          goto free_and_return;
    899919                                    FreeUPNPUrls(urls);
    900920                                  }
     
    902922                                memset(data, 0, sizeof(struct IGDdatas));
    903923                        }
    904 #ifdef DEBUG
    905                         else
    906                         {
    907                                 printf("error getting XML description %s\n", dev->descURL);
    908                         }
    909 #endif
    910                 }
    911         }
    912         return 0;
     924                }
     925        }
     926        state = 0;
     927free_and_return:
     928        free(desc);
     929        return state;
    913930}
    914931
  • trunk/third-party/miniupnp/miniupnpc.h

    r13258 r13289  
    1919
    2020/* versions : */
    21 #define MINIUPNPC_VERSION       "1.6.20120320"
     21#define MINIUPNPC_VERSION       "1.6.20120410"
    2222#define MINIUPNPC_API_VERSION   8
    2323
  • trunk/third-party/miniupnp/upnpcommands.c

    r13258 r13289  
    1 /* $Id: upnpcommands.c,v 1.38 2012/03/05 19:42:47 nanard Exp $ */
     1/* $Id: upnpcommands.c,v 1.39 2012/04/09 12:49:27 nanard Exp $ */
    22/* Project : miniupnp
    33 * Author : Thomas Bernard
     
    742742        ClearNameValueList(&pdata);
    743743
    744         //printf("%.*s", bufsize, buffer);
     744        /*printf("%.*s", bufsize, buffer);*/
    745745
    746746        return ret;
     
    869869
    870870        AddPinholeArgs = calloc(7, sizeof(struct UPNParg));
    871         // RemoteHost can be wilcarded
     871        /* RemoteHost can be wilcarded */
    872872        if(strncmp(remoteHost, "empty", 5)==0)
    873873        {
     
    913913        if(resVal)
    914914        {
    915                 //printf("AddPortMapping errorCode = '%s'\n", resVal);
     915                /*printf("AddPortMapping errorCode = '%s'\n", resVal);*/
    916916                ret = UPNPCOMMAND_UNKNOWN_ERROR;
    917917                sscanf(resVal, "%d", &ret);
Note: See TracChangeset for help on using the changeset viewer.