Hi All,

During testing we are experiencing some different issues with the smsbox
when
using an sms-service and a keyword to return contents of a URL.
See end of mail for trace and a stack trace, the sms box behaviour varies,
it
throws an access violation in the debugger and panics when run outside
debugger.

Scenario:
fakesmsc - bearerbox - smsbox - IIS webserver

Note: The IIS webserver has a limit of 10 connections on it.

>From debugging, it appears to be a problem in the handle_transaction
function. It occurs when the connection is broken with the WebServer.

Here are some snippets of the handle_transaction function, I have check CVS
and
it appears to be the latest source of gwlib/http.c. I left out some code
for brevity (marked with ...):

static void handle_transaction(Connection *conn, void *data)
    ...
    while (trans->state != transaction_done) {
        switch (trans->state) {
        case connecting:
            .....
          if ((rc = send_request(trans)) == 0) {
            trans->state = reading_status;
            conn_register(trans->conn, client_fdset, handle_transaction,
                          trans);
          } else {
            list_produce(trans->caller, trans);  /*** WHY DOES IT STAY IN
WHILE LOOP ***/
          }
          break;
            ....
      }
    }

If send_request fails why does the driver put the transaction onto the
caller list and stay in the while loop processing the transaction?
This appears to me to be a race condition and it explains the different
behaviours I get with the SMS box.

I would suggest that if send_request fails then "goto error;" is called
as this puts the transaction onto the caller list and exits the
handle_transaction
function. This has fixed the problem for me. What do others think?

Comments are welcome?

Kindest Regards,
Michael Mulcahy.


Debug:
2003-03-28 17:56:15 [10] DEBUG: Get info about connecting socket
2003-03-28 17:56:15 [10] DEBUG: HTTP: Sending request:
2003-03-28 17:56:15 [10] DEBUG: Octet string at 00F4DD20:
2003-03-28 17:56:15 [10] DEBUG:   len:  86
2003-03-28 17:56:15 [10] DEBUG:   size: 87
2003-03-28 17:56:15 [10] DEBUG:   immutable: 0
2003-03-28 17:56:15 [10] DEBUG:   data: 47 45 54 20 68 74 74 70   GET http
2003-03-28 17:56:15 [10] DEBUG:   data: 3a 2f 2f 6b 69 65 6c 79   ://kiely
2003-03-28 17:56:15 [10] DEBUG:   data: 2f 74 65 73 74 5f 77 77   /test_ww
2003-03-28 17:56:15 [10] DEBUG:   data: 2e 61 73 70 20 48 54 54   .asp HTT
2003-03-28 17:56:15 [10] DEBUG:   data: 50 2f 31 2e 31 0d 0a 48   P/1.1..H
2003-03-28 17:56:15 [10] DEBUG:   data: 6f 73 74 3a 20 6b 69 65   ost: kie
2003-03-28 17:56:15 [10] DEBUG:   data: 6c 79 0d 0a 55 73 65 72   ly..
2003-03-28 17:56:15 [10] DEBUG: Octet string dump ends.
2003-03-28 17:56:15 [10] ERROR: Error writing 86 octets to fd 3016:
2003-03-28 17:56:15 [10] ERROR: Error writing 86 octets to fd 3016:
2003-03-28 17:56:15 [10] ERROR: Couldn't send request to
<http://kiely/test_ww.asp>
2003-03-28 17:56:15 [5] DEBUG: message length 49, sending 1 messages
2003-03-28 17:56:15 [10] PANIC: Internal error: Invalid HTTPServer state.


Stack Trace:
conn_get_connect_result(Connection * 0x00000000) line 534 + 3 bytes
handle_transaction(Connection * 0x00fb7750, void * 0x01c7b210) line 1134 +
15 bytes
poll_callback(int 0x00003d1c, int 0x00000004, void * 0x00fb7750) line 863 +
19 bytes
poller(void * 0x01c79640) line 324 + 55 bytes


ANAM Wireless Internet Solutions
http://www.anam.com mailto:[EMAIL PROTECTED]
+353 1 284 7555
Castle Yard, Saint Patrick's Road, Dalkey, County Dublin, Ireland


Reply via email to