[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[or-cvs] cell.c is now obsolete
Update of /home/or/cvsroot/src/or
In directory moria.seul.org:/home/arma/work/onion/cvs/src/or
Modified Files:
Makefile.am command.c config.c
Removed Files:
cell.c
Log Message:
cell.c is now obsolete
Index: Makefile.am
===================================================================
RCS file: /home/or/cvsroot/src/or/Makefile.am,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- Makefile.am 26 Sep 2002 12:09:09 -0000 1.8
+++ Makefile.am 3 Oct 2002 02:17:41 -0000 1.9
@@ -7,7 +7,7 @@
or_LDADD = -L../common -lor
-or_SOURCES = buffers.c cell.c circuit.c command.c connection.c \
+or_SOURCES = buffers.c circuit.c command.c connection.c \
connection_exit.c connection_ap.c connection_op.c connection_or.c config.c \
main.c onion.c routers.c directory.c
Index: command.c
===================================================================
RCS file: /home/or/cvsroot/src/or/command.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- command.c 17 Sep 2002 08:14:36 -0000 1.11
+++ command.c 3 Oct 2002 02:17:41 -0000 1.12
@@ -31,13 +31,50 @@
}
}
+/* helper function for command_process_create_cell */
+static int deliver_onion_to_conn(aci_t aci, unsigned char *onion, uint32_t onionlen, connection_t *conn) {
+ char *buf;
+ int buflen, dataleft;
+ cell_t cell;
+
+ assert(aci && onion && onionlen);
+
+ buflen = onionlen+4;
+ buf = malloc(buflen);
+ if(!buf)
+ return -1;
+
+ log(LOG_DEBUG,"deliver_onion_to_conn(): Setting onion length to %u.",onionlen);
+ *(uint32_t*)buf = htonl(onionlen);
+ memcpy((void *)(buf+4),(void *)onion,onionlen);
+
+ dataleft = buflen;
+ while(dataleft > 0) {
+ memset(&cell,0,sizeof(cell_t));
+ cell.command = CELL_CREATE;
+ cell.aci = aci;
+ if(dataleft >= CELL_PAYLOAD_SIZE)
+ cell.length = CELL_PAYLOAD_SIZE;
+ else
+ cell.length = dataleft;
+ memcpy(cell.payload, buf+buflen-dataleft, cell.length);
+ dataleft -= cell.length;
+
+ log(LOG_DEBUG,"deliver_onion_to_conn(): Delivering create cell, payload %d bytes.",cell.length);
+ if(connection_write_cell_to_buf(&cell, conn) < 0) {
+ log(LOG_DEBUG,"deliver_onion_to_conn(): Could not buffer new create cells. Closing.");
+ free(buf);
+ return -1;
+ }
+ }
+ free(buf);
+ return 0;
+}
+
void command_process_create_cell(cell_t *cell, connection_t *conn) {
circuit_t *circ;
connection_t *n_conn;
- unsigned char *cellbuf; /* array of cells */
- int cellbuflen; /* size of cellbuf in bytes */
- cell_t *tmpcell; /* pointer to an arbitrary cell */
- int retval, i;
+ int retval;
circ = circuit_get_by_aci_conn(cell->aci, conn);
@@ -122,30 +159,14 @@
pad_onion(circ->onion,circ->onionlen, sizeof(onion_layer_t));
log(LOG_DEBUG,"command_process_create_cell(): Padded the onion with random data.");
- retval = pack_create(circ->n_aci, circ->onion, circ->onionlen, &cellbuf, &cellbuflen);
+ retval = deliver_onion_to_conn(circ->n_aci, circ->onion, circ->onionlen, n_conn);
+// retval = pack_create(circ->n_aci, circ->onion, circ->onionlen, &cellbuf, &cellbuflen);
free((void *)circ->onion);
circ->onion = NULL;
- if (retval == -1) /* pack_create() error */
- {
- log(LOG_DEBUG,"command_process_create_cell(): Could not pack the onion into CREATE cells. Closing the connection.");
+ if (retval == -1) {
+ log(LOG_DEBUG,"command_process_create_cell(): Could not deliver the onion to next conn. Closing.");
circuit_close(circ);
- return;
}
- log(LOG_DEBUG,"command_process_create_cell(): Onion packed into CREATE cells. Buffering the cells.");
- /* queue the create cells for transmission to the next hop */
- tmpcell = (cell_t *)cellbuf;
- for (i=0;i<cellbuflen/sizeof(cell_t);i++)
- {
- retval = connection_write_cell_to_buf(tmpcell, n_conn);
- if (retval == -1) /* buffering failed, drop the connection */
- {
- log(LOG_DEBUG,"command_process_create_cell(): Could not buffer new create cells. Closing.");
- circuit_close(circ);
- return;
- }
- tmpcell++;
- }
- free((void *)cellbuf);
return;
} else { /* this is destined for an exit */
Index: config.c
===================================================================
RCS file: /home/or/cvsroot/src/or/config.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- config.c 1 Oct 2002 23:37:31 -0000 1.19
+++ config.c 3 Oct 2002 02:17:41 -0000 1.20
@@ -10,7 +10,10 @@
*/
#include "or.h"
-#include <string.h>
+
+#ifndef POPT_TABLEEND /* handle popt 1.6 before 1.6.2 */
+#define POPT_TABLEEND { NULL, '\0', 0, 0, 0, NULL, NULL }
+#endif
const char *
basename(const char *filename)
--- cell.c DELETED ---