Changeset 150:5e24ab07af1f in verona


Ignore:
Timestamp:
Mar 22, 2011 2:17:50 PM (2 years ago)
Author:
Nikita Kozlov <nikita@…>
Branch:
default
Message:

fix some memleaks in phapi

Files:
5 edited

Legend:

Unmodified
Added
Removed
  • phapi/phapi.c

    r149 r150  
    710710                osip_list_init(&ca->result_payloads); 
    711711 
    712                 if (je->request && MSG_IS_INVITE(je->request) && !ca->remote_sdp) 
     712                if (je->request && MSG_IS_INVITE(je->request) && !ca->remote_sdp && !ca->state == PH_CALLER) 
    713713                { 
    714714                        char *sdp = ph_req_get_body(je->request); 
     
    759759        for(i = 0; (i < PH_STREAM_MAX_ATTRS) && sp->attrs[i]; i++) 
    760760                free((void *) sp->attrs[i]); 
     761        free(sp); 
    761762} 
    762763 
     
    834835ph_find_stream(struct ph_stream_params  **streams, const char *strtype, int maxstrs); 
    835836 
    836 static void ph_mfree(void *data) 
    837 { 
    838         osip_free(data); 
    839 } 
    840  
    841  
    842837void ph_release_call(phcall_t *ca) 
    843838{ 
     
    859854                sdp_context_free(ca->sdpctx); 
    860855 
    861         osip_list_special_free(&ca->audio_payloads, ph_mfree); 
    862         osip_list_special_free(&ca->result_payloads, ph_mfree); 
    863  
    864         osip_list_special_free(&ca->video_payloads, ph_mfree); 
     856        osip_list_special_free(&ca->audio_payloads, sdp_payload_free); 
     857        osip_list_special_free(&ca->result_payloads, sdp_payload_free); 
     858 
     859        osip_list_special_free(&ca->video_payloads, sdp_payload_free); 
    865860 
    866861        memset(ca, 0, sizeof(phcall_t)); 
     
    35743569        if (ph_media_supported_payload(&rtppt, ptstring)) 
    35753570        { 
    3576                 //if (g722hack) 
    3577                 // pt.rate = 8000; 
    35783571                sdp_payload_list_add(&ph_audio_payloads, rtp_profile_get_payload_number_from_rtpmap(&av_profile, ptstring), payload_type_get_rtpmap(rtppt), 0); 
    3579                 return; 
    3580         } 
    3581         printf("...setup refused %s- not found in ortp profile or not supported by mediastreamer\n", ptstring); 
     3572        } else 
     3573                DBG_CODEC_LOOKUP("...setup refused %s- not found in ortp profile or not supported by mediastreamer\n", ptstring); 
    35823574} 
    35833575 
     
    42154207} 
    42164208 
    4217  
     4209static void ph_payload_cleanup() 
     4210{ 
     4211        if (osip_list_size(&ph_audio_payloads) > 0) 
     4212                osip_list_special_free(&ph_audio_payloads, sdp_payload_free); 
     4213        if (osip_list_size(&ph_video_payloads) > 0) 
     4214                osip_list_special_free(&ph_video_payloads, sdp_payload_free); 
     4215} 
    42184216 
    42194217/** 
     
    42764274 
    42774275        ph_media_cleanup(); 
     4276        ph_payload_cleanup(); 
    42784277 
    42794278        osip_mutex_destroy(ph_media_start_mutex); 
     
    63436342} 
    63446343 
    6345 static void *custom_hdr_free(void *obj) 
     6344static void custom_hdr_free(void *obj) 
    63466345{ 
    63476346    struct ph_custom_hdr *hdr = (struct ph_custom_hdr *) obj; 
     
    63516350    osip_free(hdr->hdrvalue); 
    63526351    osip_free(hdr); 
    6353     return 0; 
    63546352} 
    63556353 
  • phapi/phms.c

    r131 r150  
    9090int ph_media_cleanup() 
    9191{ 
     92        ms_exit(); 
    9293        return 0; 
    9394} 
     
    578579                rtp_profile_destroy(audio1->profile); 
    579580                audio1->flags = 0; 
     581                osip_free(audio1->streamerData); 
    580582                s->activestreams &= ~(1 << PH_MSTREAM_AUDIO1); 
    581583        } 
  • phapi/sdphandler.c

    r131 r150  
    6161 
    6262int 
    63 sdp_payload_list_add(struct osip_list* list, int pt, const char *rtpmap, int line) 
     63sdp_payload_list_add(struct osip_list* list, int pt, char *rtpmap, int line) 
    6464{ 
    6565        sdp_payload_t *payload = osip_malloc(sizeof(*payload)); 
     
    6868        payload->pt = pt; 
    6969        payload->line = line; 
    70         payload->a_rtpmap = osip_strdup(rtpmap); 
     70        //allocated by payload_type_get_rtpmap()  
     71        payload->a_rtpmap = rtpmap; 
     72         
    7173        return osip_list_add(list, payload, -1); 
    7274} 
     
    8587        (*dst)->a_rtpmap = osip_strdup(src->a_rtpmap); 
    8688        return 0; 
     89} 
     90 
     91void sdp_payload_free(void *data) 
     92{ 
     93        sdp_payload_t * payload = data; 
     94        osip_free(payload->a_rtpmap); 
     95        osip_free(payload); 
    8796} 
    8897 
  • phapi/sdphandler.h

    r131 r150  
    100100 
    101101int sdp_payload_init (sdp_payload_t * payload); 
     102void sdp_payload_free(void *data); 
    102103int sdp_payload_clone(void *src, void **dst); 
    103104int sdp_equal_payload(const sdp_payload_t *cur_payload, const sdp_payload_t *payload); 
    104 int sdp_payload_list_add(struct osip_list* list, int pt, const char *rtpmap, int line); 
     105int sdp_payload_list_add(struct osip_list* list, int pt, char *rtpmap, int line); 
    105106#endif 
  • phtest/phtests_core.cpp

    r131 r150  
    156156                        printf("INCALL line=%d cid=%d to=%s from=%s streams=%x callinfo=%s\n", info->vlid, cid, 
    157157                                        info->localUri, info->remoteUri, info->streams, nz(info->callinfo)); 
    158                         this->ringingCall(cid); 
     158                        //this->ringingCall(cid); 
     159                        this->acceptCall(cid, 0, PH_STREAM_AUDIO); 
    159160                        break; 
    160161 
     
    232233                delete funcTab[i]; 
    233234        delete [] funcTab; 
     235        delete [] funcNum; 
    234236        delete [] name; 
    235237} 
Note: See TracChangeset for help on using the changeset viewer.