Example #1
0
/*
    Create a range boundary. This is required if more than one range is requested.
 */
static void createRangeBoundary(HttpStream *stream)
{
    HttpTx      *tx;
    int         when;

    tx = stream->tx;
    assert(tx->rangeBoundary == 0);
    when = (int) stream->http->now;
    tx->rangeBoundary = sfmt("%08X%08X", PTOI(tx) + PTOI(stream) * when, when);
}
Example #2
0
/*
    Trace any packet
 */
PUBLIC bool httpTracePacket(HttpConn *conn, cchar *event, cchar *type, HttpPacket *packet, cchar *values, ...)
{
    va_list     ap;
    int         level;

    assert(conn);
    assert(packet);

    if (!conn || conn->http->traceLevel == 0 || conn->rx->skipTrace) {
        return 0;
    }
    level = PTOI(mprLookupKey(conn->trace->events, type));
    if (level == 0 || level > conn->http->traceLevel) { \
        return 0;
    }
    if (packet->prefix) {
        httpTraceContent(conn, event, type, mprGetBufStart(packet->prefix), mprGetBufLength(packet->prefix), 0);
    }
    if (values) {
        va_start(ap, values);
        values = sfmtv(values, ap);
        va_end(ap);
    }
    if (packet->content) {
        if (values) {
            httpTraceContent(conn, event, type, mprGetBufStart(packet->content), httpGetPacketLength(packet), "%s", values);
        } else {
            httpTraceContent(conn, event, type, mprGetBufStart(packet->content), httpGetPacketLength(packet), 0);
        }
    }
    return 1;
}
Example #3
0
static void manageConstants(EjsConstants *cp, int flags)
{
    int     i;

    if (flags & MPR_MANAGE_MARK) {
        mprMark(cp->pool);
        mprMark(cp->table);
        mprMark(cp->index);
        /*
            Racing here, but okay. May miss a few new elements, but they will be picked up on the next sweep.
         */
        for (i = 0; i < cp->indexCount; i++) {
            if (!(PTOI(cp->index[i]) & 0x1)) {
                mprMark(cp->index[i]);
            }
        }
    }
}
Example #4
0
/*
    Trace request body content
 */
PUBLIC bool httpTraceContent(HttpConn *conn, cchar *event, cchar *type, cchar *buf, ssize len, cchar *values, ...)
{
    Http        *http;
    HttpTrace   *trace;
    va_list     ap;
    int         level;

    assert(conn);
    assert(buf);

    http = HTTP;
    if (http->traceLevel == 0) {
        return 0;
    }
    if (conn) {
        if (conn->rx->skipTrace) {
            return 0;
        }
        trace = conn->trace;
    } else {
        trace = http->trace;
    }
    level = PTOI(mprLookupKey(trace->events, type));
    if (level == 0 || level > http->traceLevel) {
        return 0;
    }
    if (conn) {
        if ((smatch(event, "rx.body.data") && (conn->rx->bytesRead >= conn->trace->maxContent)) ||
            (smatch(event, "tx.body.data") && (conn->tx->bytesWritten >= conn->trace->maxContent))) {
            if (!conn->rx->webSocket) {
                conn->rx->skipTrace = 1;
                httpTrace(conn, event, type, "msg: 'Abbreviating body trace'");
            }
            return 0;
        }
    }
    if (values) {
        va_start(ap, values);
        values = sfmtv(values, ap);
        va_end(ap);
    }
    httpFormatTrace(trace, conn, event, type, values, buf, len);
    return 1;
}
Example #5
0
EjsString *ejsCreateStringFromConst(Ejs *ejs, EjsModule *mp, int index)
{
    EjsConstants    *constants;
    EjsString       *sp;
    cchar           *str;
    int             value;

    lock(mp);
    constants = mp->constants;
    if (index < 0 || index >= constants->indexCount) {
        assert(!(index < 0 || index >= constants->indexCount));
        unlock(mp);
        return 0;
    }
    value = PTOI(constants->index[index]);
    if (value & 0x1) {
        str = &constants->pool[value >> 1];
        constants->index[index] = sp = ejsInternMulti(ejs, str, slen(str));
    }
Example #6
0
    LTFAT_NAME(maxtree_setdirty)(s->fmaxtree[w2][nidx],\
                                 m2start + k->srange[knidx].start,\
                                 m2start + kdim2.height - k->srange[knidx].end);)\
    LTFAT_NAME(maxtree_setdirty)(s->tmaxtree[w2],       n2start, n2start + kdim2.width);

int
LTFAT_NAME(dgtrealmp_execute_locomp)(
    LTFAT_NAME(dgtrealmp_state)* p,
    kpoint origpos, LTFAT_COMPLEX** cout)
{
    /* int status = LTFAT_DGTREALMP_STATUS_CANCONTINUE; */

    /* int uniquenyquest = p->M[origpos.w] % 2 == 0; */
    LTFAT_NAME(dgtrealmpiter_state)* s = p->iterstate;

    int count = s->suppind[PTOI(origpos)];
    DEBUG("\n*****************\n Count %d \n ****************", count);
    if (count > 10)
    {
        /* status = LTFAT_DGTREALMP_STATUS_LOCOMP_ORTHFAILED; break; */
    }

    // STEP 1: Find all active atoms around the current one
    ltfat_int cvalNo = 0;

    /* LTFAT_NAME(kerns)* k1 = p->gramkerns[origpos.w + s->P * origpos.w]; */
    /* int do_conjat = 0; */
    /* if (  (k1->mid.hmid + 2 * origpos.m) < k1->size.height ) */
    /*     do_conjat = 1; */

    s->cvalBuf[cvalNo] = s->c[PTOI(origpos)];