/* Create MMS retrieve task */
MMSTask*
mms_task_retrieve_new(
    MMSSettings* settings,
    MMSHandler* handler,
    const char* id,
    const char* imsi,
    const MMSPdu* pdu,
    GError** error)
{
    const time_t now = time(NULL);
    MMS_ASSERT(pdu);
    MMS_ASSERT(pdu->type == MMS_MESSAGE_TYPE_NOTIFICATION_IND);
    MMS_ASSERT(pdu->transaction_id);
    if (pdu->ni.expiry > now) {
        MMSTaskRetrieve* retrieve = mms_task_http_alloc(
                                        MMS_TYPE_TASK_RETRIEVE, settings, handler, "Retrieve",
                                        id, imsi, pdu->ni.location, MMS_RETRIEVE_CONF_FILE, NULL);
        if (retrieve->http.task.deadline > pdu->ni.expiry) {
            retrieve->http.task.deadline = pdu->ni.expiry;
        }
        retrieve->transaction_id = g_strdup(pdu->transaction_id);
        return &retrieve->http.task;
    } else {
        MMS_ERROR(error, MMS_LIB_ERROR_EXPIRED, "Message already expired");
    }
    return NULL;
}
Beispiel #2
0
/**
 * Create MMS read report task
 */
MMSTask*
mms_task_read_new(
    const MMSConfig* config,
    MMSHandler* handler,
    const char* id,
    const char* imsi,
    const char* msg_id,
    const char* to,
    MMSReadStatus rs,
    GError** err)
{
    const char* file = mms_task_read_encode(config, id, msg_id, to, rs, err);
    if (file) {
        return mms_task_http_alloc(0, config, handler, "Read",
            id, imsi, NULL, NULL, file);
    }
    return NULL;
}